/* ══════════════════════════════════════════════════════════════
   Event List — Liste des événements
   ══════════════════════════════════════════════════════════════ */

.event-list {
    padding: var(--spacing-xl) 0 var(--spacing-3xl);
}

.event-list__header {
    margin-bottom: var(--spacing-lg);
}

.event-list__title {
    font-size: var(--font-size-2xl);
    font-weight: 300;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

@media (min-width: 640px) {
    .event-list__title { font-size: var(--font-size-3xl); }
}

.event-list__subtitle {
    margin-top: var(--spacing-xs);
    color: var(--color-text-light);
}

/* Onglets */
.event-list__tabs {
    display: flex;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-xl);
    border-bottom: 2px solid var(--color-border);
}

.event-list__tab {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-lg);
    margin-bottom: -2px;
    font-size: var(--font-size-sm);
    font-weight: 500;
    text-decoration: none;
    color: var(--color-text-light);
    border-bottom: 2px solid transparent;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.event-list__tab:hover {
    color: var(--color-text);
}

.event-list__tab--active {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
    font-weight: 600;
}

.event-list__tab-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 0.3rem;
    border-radius: 100px;
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1;
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.event-list__tab--active .event-list__tab-count {
    background: var(--color-primary);
    color: #fff;
}

.event-list__grid {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.event-list__empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-3xl) var(--spacing-md);
    color: var(--color-text-light);
    text-align: center;
}

.event-list__empty svg { opacity: 0.4; }

/* ══════════════════════════════════════════════════════════════
   Event Card — Card liste (reprise du style agenda homepage)
   ══════════════════════════════════════════════════════════════ */

.event-card {
    background: #fff;
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
    transition: box-shadow 0.2s ease;
}

.event-card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}

.event-card__link {
    display: flex;
    align-items: stretch;
    text-decoration: none;
    color: inherit;
}

/* Date column */
.event-card__date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.125rem;
    min-width: 5rem;
    padding: var(--spacing-md);
    background: var(--color-primary);
    color: #fff;
}

.event-card__date--partner { background: #16a34a; }

.event-card__date-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1;
}

.event-card__day {
    font-size: var(--font-size-xl);
    font-weight: 700;
}

.event-card__month {
    font-size: var(--font-size-xs);
    font-weight: 600;
    opacity: 0.85;
}

.event-card__date-arrow {
    opacity: 0.6;
}

.event-card__year {
    font-size: 0.625rem;
    opacity: 0.6;
    margin-top: 0.125rem;
}

/* Body */
.event-card__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: var(--spacing-md) var(--spacing-lg);
    min-width: 0;
}

.event-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
}

.event-card__type-badge {
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-primary);
}

.event-card__format-badge {
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.0625rem 0.375rem;
    border-radius: var(--radius-sm);
    background: var(--color-bg-light);
    color: var(--color-text-light);
}

.event-card__format-badge--online { background: #e8f5e9; color: #2e7d32; }
.event-card__format-badge--hybrid { background: #fff3e0; color: #e65100; }

.event-card__organizer {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
}

.event-card__type-badge + .event-card__organizer::before,
.event-card__format-badge + .event-card__organizer::before {
    content: '·';
    margin-right: var(--spacing-xs);
}

.event-card__title {
    font-size: var(--font-size-base);
    font-weight: 600;
    line-height: var(--line-height-tight);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

@media (min-width: 640px) {
    .event-card__title { font-size: var(--font-size-lg); }
}

.event-card__excerpt {
    margin-top: var(--spacing-xs);
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.event-card__meta {
    margin-top: auto;
    padding-top: var(--spacing-sm);
}

.event-card__location {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
}

.event-card__arrow {
    flex-shrink: 0;
    align-self: center;
    color: var(--color-border);
    margin-right: var(--spacing-md);
    transition: color 0.15s ease, transform 0.15s ease;
}

.event-card:hover .event-card__arrow {
    color: var(--color-primary);
    transform: translateX(2px);
}

/* ══════════════════════════════════════════════════════════════
   Event Show — Détail simple événement
   ══════════════════════════════════════════════════════════════ */

.event-show {
    padding: var(--spacing-xl) 0 var(--spacing-3xl);
}

.event-show__container {
    max-width: 56rem;
    margin: 0 auto;
    padding: 0 var(--spacing-md);
}

.event-show__header {
    padding-bottom: var(--spacing-xl);
    border-bottom: 1px solid var(--color-border);
    margin-bottom: var(--spacing-xl);
}

.event-show__badges {
    display: flex;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.event-show__type-badge {
    display: inline-flex;
    padding: 0.1875rem 0.625rem;
    border-radius: 100px;
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.event-show__format-badge {
    display: inline-flex;
    padding: 0.1875rem 0.625rem;
    border-radius: 100px;
    font-size: var(--font-size-xs);
    font-weight: 600;
    background: var(--color-bg-light);
    color: var(--color-text-light);
}

.event-show__title {
    font-size: var(--font-size-2xl);
    font-weight: 700;
    line-height: var(--line-height-tight);
    margin-bottom: var(--spacing-lg);
}

@media (min-width: 640px) {
    .event-show__title { font-size: var(--font-size-3xl); }
}

.event-show__key-info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.event-show__info-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.event-show__info-item svg { flex-shrink: 0; color: var(--color-primary); }

.event-show__cta {
    margin-top: var(--spacing-lg);
}

.event-show__register-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: 0.625rem 1.5rem;
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
    color: #fff;
    background: var(--color-primary);
    transition: background-color 0.15s ease;
}

.event-show__register-btn:hover { background: var(--color-primary-dark); }

.event-show__description {
    font-size: var(--font-size-lg);
    line-height: var(--line-height-base);
    color: var(--color-text-light);
    margin-bottom: var(--spacing-xl);
}

.event-show__section-title {
    font-size: var(--font-size-lg);
    font-weight: 600;
    margin-bottom: var(--spacing-md);
}

.event-show__venue {
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-xl);
    border-top: 1px solid var(--color-border);
}

.event-show__venue-card {
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.event-show__venue-name { font-weight: 600; }
.event-show__venue-address { font-size: var(--font-size-sm); color: var(--color-text-light); margin-top: var(--spacing-xs); }

.event-show__footer {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-xl);
    border-top: 1px solid var(--color-border);
}

.event-show__share-label { font-size: var(--font-size-sm); font-weight: 600; color: var(--color-text-light); }
.event-show__share-links { display: flex; gap: var(--spacing-sm); }

/* ══════════════════════════════════════════════════════════════
   Event Minisite — Layout, navigation, pages
   ══════════════════════════════════════════════════════════════ */

/* `position: fixed` (aligné newsletter) : la barre reste visible en
   permanence au scroll, indépendamment du parent `<header>` qui se
   termine quand on entre dans `<main>`. Compensation hauteur via
   padding-top sur `.minisite-header` pour éviter que le hero soit
   masqué au chargement. */
.minisite-header__bar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 10;
    background: linear-gradient(135deg, var(--color-navy) 0%, var(--color-primary-dark) 100%);
    color: #fff;
}

.minisite-header {
    padding-top: 3rem;
}

/* Aligné sur `nl-minisite-header__bar-inner` (newsletter) : ligne flex
   à 3rem de haut, retour à gauche / centre / actions à droite. */
.minisite-header__bar-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 3rem;
}

.minisite-header__back {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: var(--font-size-sm);
    color: rgba(255, 255, 255, 0.8);
    transition: color 0.15s ease;
}

.minisite-header__back:hover {
    color: #fff;
}

.minisite-header__info {
    display: none;
    align-items: center;
    gap: 0.5rem;
    padding-inline: 1rem;
    font-size: var(--font-size-xs);
    color: rgba(255, 255, 255, 0.85);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1;
    justify-content: center;
}

@media (min-width: 640px) {
    .minisite-header__info { display: flex; }
}

.minisite-header__title {
    font-weight: 600;
    color: #fff;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

/* Le détail (date · ville) est masqué tant que la largeur ne libère pas
   au moins lg (1024px) : sur tablette / petit desktop, le lien retour
   long et les 6 boutons d'actions ne laissent pas assez de place pour
   afficher titre + détail sans tronquer brutalement. */
.minisite-header__detail {
    display: none;
    opacity: 0.75;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (min-width: 1024px) {
    .minisite-header__detail { display: inline; }
}

/* Actions à droite : partage, impression, marque-page.
   Alignées sur le pattern `nl-minisite-header__actions` (newsletter). */
.minisite-header__actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

/* Boutons de partage sur fond navy : pastille carrée arrondie légère,
   texte blanc translucide qui s'éclaire au survol. Surcharge la
   couleur sombre + flat de `.list-hero__share-buttons` (content.css).
   Trois groupes séparés visuellement : partage social · impression · bookmark. */
.minisite-header__actions .list-hero__share-buttons {
    gap: 0.25rem;
}

.minisite-header__actions .list-hero__share-buttons .share-buttons__btn--print,
.minisite-header__actions .list-hero__share-buttons .share-buttons__btn--bookmark {
    margin-left: 0.5rem;
}

.minisite-header__actions .list-hero__share-buttons .share-buttons__btn {
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: rgba(255, 255, 255, 0.8);
    background: rgba(255, 255, 255, 0.08);
    border-radius: 0.4375rem;
    opacity: 1;
}

.minisite-header__actions .list-hero__share-buttons .share-buttons__btn:hover,
.minisite-header__actions .list-hero__share-buttons .share-buttons__btn:focus-visible,
.minisite-header__actions .list-hero__share-buttons .share-buttons__btn--active {
    color: #fff;
    background: rgba(255, 255, 255, 0.18);
}

/* Bookmark actif : vert ANCESU institutionnel + pastille assortie.
   Spec (0,5,0) bat l'override blanc (0,3,0) et le default content.css
   (0,2,0). */
.minisite-header__actions .list-hero__share-buttons .share-buttons__btn--bookmark.share-buttons__btn--active {
    color: var(--color-section-ancesu);
    background: rgba(174, 189, 21, 0.22);
}

.minisite-banner {
    background: linear-gradient(135deg, var(--color-navy) 0%, var(--color-primary-dark) 100%);
    color: #fff;
}

.minisite-banner--cover {
    position: relative;
    background: none;
    padding-block: var(--spacing-lg);
    overflow: hidden;
}

.minisite-banner__image {
    display: block;
    width: 100%;
    max-width: 60rem;
    height: auto;
    margin-inline: auto;
    border-radius: var(--radius-md);
}

.minisite-badge {
    display: inline-flex;
    padding: 0.1875rem 0.625rem;
    border-radius: 100px;
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: rgba(255, 255, 255, 0.15);
    color: #fff;
}

.minisite-banner__meta {
    margin-top: var(--spacing-sm);
    font-size: var(--font-size-sm);
    opacity: 0.85;
}

/* Navigation onglets */
.minisite-nav {
    background: #eef2f8;
}

.minisite-nav__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    list-style: none;
    padding: 0;
    margin: 0;
}

.minisite-nav__item { list-style: none; }

.minisite-nav__link {
    position: relative;
    display: block;
    padding: var(--spacing-md) var(--spacing-lg);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    color: var(--color-text-light);
    transition: color 0.25s ease;
}

.minisite-nav__link::after {
    content: '';
    position: absolute;
    left: var(--spacing-lg);
    right: var(--spacing-lg);
    bottom: 0.5rem;
    height: 2px;
    background: var(--color-primary);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.3s cubic-bezier(0.65, 0, 0.35, 1);
}

.minisite-nav__link:hover,
.minisite-nav__link:focus-visible {
    color: var(--color-primary);
}

.minisite-nav__link:hover::after,
.minisite-nav__link:focus-visible::after {
    transform: scaleX(1);
}

.minisite-nav__item--active .minisite-nav__link {
    color: var(--color-primary);
}

.minisite-nav__item--active .minisite-nav__link::after {
    transform: scaleX(1);
}

/* Contenu minisite */
.minisite-content__intro {
    max-width: 48rem;
}

.minisite-content__page-title {
    font-size: var(--font-size-xl);
    font-weight: 300;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: var(--spacing-xl);
}

.minisite-content__highlights {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
    margin-top: var(--spacing-xl);
}

@media (min-width: 640px) {
    .minisite-content__highlights { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
    .minisite-content__highlights { grid-template-columns: repeat(3, 1fr); }
}

.minisite-highlight {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.minisite-highlight svg { flex-shrink: 0; color: var(--color-primary); margin-top: 0.125rem; }
.minisite-highlight__label { font-size: var(--font-size-xs); color: var(--color-text-light); }
.minisite-highlight__value { font-weight: 600; }

.minisite-content__cta { margin-top: var(--spacing-xl); }

/* Cap la largeur du programme sur celle de l'image hero (60rem ≈ 960px)
   pour une cohérence visuelle entre l'en-tête et le contenu. Le
   `.container` global (max-width 68.125rem) est resserré localement. */
.programme > .container {
    max-width: 60rem;
}

/* Programme — header (titre + toolbar : vue + imprimer) */
.programme__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}

/* Le h2 hérite d'un `margin-bottom: var(--spacing-xl)` qui décale son
   centre visuel en flex `align-items: center` (la boîte flex inclut le
   margin). On l'annule dans le header — le gap horizontal et le
   margin-bottom du header gèrent l'espace. Font-weight relevé en local
   (l'override global `font-weight: 300` du minisite-content__page-title
   reste light sur les autres pages minisite). */
.programme__title-row .minisite-content__page-title {
    margin-bottom: 0;
    line-height: 1;
    font-weight: 600;
}

/* Titre + bouton télécharger PDF accolé. Le download est un CTA
   secondaire (outline primary), accolé au titre pour signaler
   visuellement que c'est la version offline du contenu rendu. */
.programme__title-row {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.programme__download-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.3125rem 0.75rem;
    border: 1px solid var(--color-primary);
    border-radius: 999px;
    background: transparent;
    color: var(--color-primary);
    font-size: 0.75rem;
    font-weight: 600;
    text-decoration: none;
    transition: background 150ms ease, color 150ms ease;
}

.programme__download-btn:hover {
    background: var(--color-primary);
    color: white;
}

.programme__download-btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.programme__toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.programme__view-toggle {
    display: inline-flex;
    background: var(--color-bg-light);
    border-radius: 999px;
    padding: 0.25rem;
}

.programme__view-toggle-btn {
    border: 0;
    background: transparent;
    color: var(--color-text-light);
    padding: 0.3125rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: 999px;
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease;
}

.programme__view-toggle-btn:hover { color: var(--color-primary); }

.programme__view-toggle-btn.is-active {
    background: white;
    color: var(--color-primary);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

.programme__print-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.3125rem 0.75rem;
    border-radius: 999px;
    border: 0;
    background: var(--color-bg-light);
    color: var(--color-primary);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 150ms ease;
}

.programme__print-btn:hover { background: var(--color-accent-light); }

.programme__print-btn.is-active {
    background: var(--color-primary);
    color: white;
}

.programme__print-btn.is-active:hover {
    background: var(--color-primary-dark);
}

.programme__filters-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1rem;
    height: 1rem;
    padding: 0 0.3125rem;
    margin-left: 0.125rem;
    border-radius: 999px;
    background: var(--color-accent);
    color: white;
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 1;
}

.programme__print-btn.is-active .programme__filters-badge {
    background: white;
    color: var(--color-primary);
}

/* Tracks (parcours) — badges header (legacy, n'est plus rendu côté
   programme depuis l'introduction des facets, conservé au cas où une
   autre surface les réutilise). */
.programme__tracks {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xl);
}

.programme__track-badge {
    padding: 0.25rem 0.75rem;
    border-radius: 100px;
    font-size: var(--font-size-xs);
    font-weight: 600;
    background: var(--track-color, var(--color-primary-light));
    color: var(--color-text);
}

/* Facets de filtrage : 3 rangées (Type, Parcours, Thématique) + bouton
   « Tout désélectionner ». Chaque chip est un bouton toggle. */
.programme__facets {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-xl);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    background: var(--color-bg-light);
}

.programme__facet {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.programme__facet-label {
    flex-shrink: 0;
    min-width: 5.5rem;
    font-size: 0.6875rem;
    font-weight: 700;
    color: var(--color-text-light);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.programme__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    flex: 1;
    min-width: 0;
}

.programme__chip {
    --chip-color: var(--color-primary);
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.625rem;
    border: 1px solid transparent;
    border-radius: 999px;
    background: white;
    color: var(--color-text);
    font-size: 0.75rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}

.programme__chip:hover {
    border-color: var(--chip-color);
    color: var(--chip-color);
}

.programme__chip.is-active {
    background: var(--chip-color);
    border-color: var(--chip-color);
    color: white;
}

.programme__chip-count {
    font-size: 0.625rem;
    font-weight: 700;
    padding: 0.0625rem 0.375rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.08);
    color: inherit;
}

.programme__chip.is-active .programme__chip-count {
    background: rgba(255, 255, 255, 0.25);
}

.programme__clear-filters {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin-left: auto;
    padding: 0.25rem 0.625rem;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--color-text-light);
    font-size: 0.75rem;
    font-weight: 500;
    cursor: pointer;
    transition: color 120ms ease;
    flex-shrink: 0;
}

.programme__clear-filters:hover { color: var(--color-primary); }

/* Filtre actif : masquer les éléments qui ne matchent pas. `!important`
   pour overrider l'`x-show` Alpine sur le jour (qui pose un style inline
   `display: none|block` selon la vue). */
.programme__session.is-filter-hidden,
.programme__group.is-filter-hidden,
.programme__slot.is-filter-hidden,
.programme__day.is-filter-hidden {
    display: none !important;
}

/* Tabs jour */
.programme__days {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: var(--spacing-lg);
    border-bottom: 1px solid var(--color-border);
}

.programme__day-tab {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.125rem;
    padding: 0.75rem 1.25rem;
    border: 0;
    background: transparent;
    border-bottom: 2px solid transparent;
    color: var(--color-text-light);
    cursor: pointer;
    transition: color 150ms ease, border-color 150ms ease;
    margin-bottom: -1px;
}

.programme__day-tab:hover { color: var(--color-primary); }

.programme__day-tab.is-active {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}

.programme__day-tab-label { font-size: var(--font-size-sm); font-weight: 700; }
.programme__day-tab-date { font-size: var(--font-size-xs); font-weight: 500; opacity: 0.8; }

/* Conteneur jour */
.programme__day { padding-top: var(--spacing-sm); }
.programme__day + .programme__day { margin-top: var(--spacing-2xl); }

/* Titre du jour : bande verte ANCESU sticky sous la topbar (3rem) pour
   garder le contexte du jour visible pendant le scroll en vue « Tout
   le programme ». z-index 5 < topbar (10) > contenu (auto). */
.programme__day-title {
    position: sticky;
    top: 3rem;
    z-index: 5;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.75rem;
    margin: 0 0 var(--spacing-lg);
    padding: 0.625rem 1rem;
    border-radius: var(--radius-md);
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    font-size: var(--font-size-lg);
    font-weight: 700;
}

.programme__day-title-num {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: var(--font-size-sm);
    font-weight: 800;
    padding: 0.125rem 0.5rem;
    border-radius: var(--radius-sm);
    background: var(--color-section-ancesu);
    color: white;
}

.programme__day-title-date {
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--color-section-ancesu);
    text-transform: capitalize;
}

/* Liste de créneaux — retrait latéral symétrique pour centrer le bloc
   sous le bandeau vert ANCESU du jour (qui prend toute la largeur du
   container). */
.programme__slots {
    list-style: none;
    margin: 0;
    padding: 0 1.5rem;
}

.programme__slot {
    display: grid;
    grid-template-columns: 6.5rem 1fr;
    gap: var(--spacing-md);
    align-items: baseline;
    padding: var(--spacing-lg) 0;
}

/* Divider net entre tranches horaires. */
.programme__slot + .programme__slot {
    border-top: 1px solid var(--color-border);
}

.programme__slot:first-child { padding-top: var(--spacing-md); }

@media (max-width: 640px) {
    .programme__slots { padding: 0 0.75rem; }
}

.programme__slot-time {
    color: var(--color-primary);
    font-weight: 600;
}

.programme__slot-time-start {
    font-size: var(--font-size-base);
    font-weight: 700;
}

/* Contenu d'un créneau : un ou plusieurs groupes par type empilés (ET implicite) */
.programme__slot-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

/* Groupe de sessions partageant le même type dans un même créneau */
.programme__group { --session-color: var(--color-primary); }
.programme__group--cat-program   { --session-color: var(--color-primary); }
.programme__group--cat-social    { --session-color: var(--color-accent); }
.programme__group--cat-logistics { --session-color: var(--color-text-light); }

/* Sessions logistiques et conviviales (pauses, repas, accueil, networking,
   dîner débat…) : ton désaturé pour les distinguer du programme. Eyebrow
   masqué côté template, titre italique gris uniforme entre les deux. */
.programme__group--cat-logistics .programme__session-title,
.programme__group--cat-social .programme__session-title {
    font-style: italic;
    font-weight: 600;
    color: var(--color-text-light);
}

.programme__group-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.375rem;
}

/* Salle poussée à droite de l'eyebrow du groupe — utilisée uniquement
   dans le cas single session (pour les alternatives, chaque card a sa
   propre salle dans son meta). */
.programme__group-room {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: auto;
    font-size: 0.75rem;
    color: var(--color-text-light);
}

.programme__group-type {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.125rem 0.5rem;
    border-radius: var(--radius-sm);
    background: var(--session-color);
    color: white;
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.programme__group-choose {
    font-size: 0.75rem;
    font-style: italic;
    color: var(--color-text-light);
}

/* Sessions du groupe — 1 seule (pleine largeur) ou alternatives en grille avec séparateurs « OU » intercalés */
.programme__sessions { display: block; }

.programme__sessions--alternatives {
    display: grid;
    align-items: stretch;
    gap: 0;
}

.programme__sessions--cols-2 { grid-template-columns: 1fr auto 1fr; }
.programme__sessions--cols-3 { grid-template-columns: 1fr auto 1fr auto 1fr; }
.programme__sessions--cols-4 { grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; }

/* Stack vertical au-delà de 4 sessions OU sur petit écran : OU horizontal */
.programme__sessions--stack { grid-template-columns: 1fr !important; }

@media (max-width: 768px) {
    .programme__sessions--alternatives {
        grid-template-columns: 1fr !important;
    }
}

/* Séparateur « OU » entre alternatives de même type */
.programme__or {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 var(--spacing-md);
    position: relative;
}

.programme__or > span {
    display: inline-block;
    background: var(--color-bg-light);
    color: var(--color-text-light);
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    z-index: 1;
}

.programme__or::before {
    content: "";
    position: absolute;
    inset: 0;
    left: 50%;
    width: 1px;
    background: var(--color-border);
    transform: translateX(-50%);
}

/* Séparateur OU en mode horizontal : stack vertical (mobile OU > 4 sessions) */
.programme__sessions--stack .programme__or { padding: var(--spacing-sm) 0; }
.programme__sessions--stack .programme__or::before {
    left: 0;
    right: 0;
    top: 50%;
    bottom: auto;
    width: auto;
    height: 1px;
    transform: none;
}

@media (max-width: 768px) {
    .programme__or { padding: var(--spacing-sm) 0; }
    .programme__or::before {
        left: 0;
        right: 0;
        top: 50%;
        bottom: auto;
        width: auto;
        height: 1px;
        transform: none;
    }
}

/* Carte session — pas de bordure, typo + espacement.
   Single session (sans fond) : padding nul, le titre s'enchaîne
   directement sous l'eyebrow du groupe (qui sert d'attache visuelle).
   Alternative (avec fond) : padding intérieur md pour aérer la card. */
.programme__session {
    padding: 0;
    border-radius: var(--radius-md);
    background: transparent;
    border: 0;
}

.programme__session--alternative {
    padding: var(--spacing-md);
    background: var(--color-bg-light);
}

/* Title-row : code + titre de session. Les actions (« Voir le résumé »,
   « Voir le replay ») descendent dans .programme__session-actions. */
.programme__session-title-row {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
}

.programme__session-title {
    font-size: var(--font-size-base);
    font-weight: 700;
    margin: 0;
    color: var(--color-text);
    line-height: 1.3;
}

/* Code de session (ex : « A3 » pour un atelier) — pastille discrète
   devant le titre. Aide les participants a reperer un atelier sur le
   plan / la signaletique. */
.programme__session-code {
    flex-shrink: 0;
    align-self: center;
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.4rem;
    border-radius: 0.3rem;
    background: var(--color-primary-soft, var(--color-surface-muted));
    color: var(--color-primary);
    font-size: var(--font-size-xs);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.programme__session-code--sub {
    font-size: calc(var(--font-size-xs) * 0.95);
    padding: 0.05rem 0.35rem;
}

.programme__session-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: var(--spacing-sm);
}

.programme__session-room,
.programme__session-track {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    font-weight: 500;
}

.programme__session-room { color: var(--color-text-light); }
.programme__session-track {
    padding: 0.125rem 0.5rem;
    border-radius: var(--radius-sm);
    background: var(--track-color, var(--color-primary-light));
    color: var(--color-text);
}

.programme__session-tag {
    display: inline-flex;
    align-items: center;
    padding: 0.125rem 0.5rem;
    border-radius: var(--radius-sm);
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    font-size: 0.75rem;
    font-weight: 500;
}

/* Intervenants de la session : « Avec Nom1, Nom2 » sous la description.
   Affiché seulement si event.features.speakers est activé. */
.programme__session-speakers {
    margin-top: var(--spacing-sm);
    font-size: 0.8125rem;
    color: var(--color-text);
}

.programme__session-speakers-label {
    font-weight: 600;
    color: var(--color-text-light);
    margin-right: 0.25rem;
}

.programme__session-speaker {
    color: var(--color-primary);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
    transition: color 120ms ease;
}

.programme__session-speaker:hover { color: var(--color-primary-dark); }

/* Intervenant sans biographie publique : nom affiché en texte simple,
   sans lien (pas d'underline ni de couleur de lien trompeuse). */
.programme__session-speaker--static {
    color: var(--color-text);
    text-decoration: none;
}

.programme__session-speaker-sep {
    margin-right: 0.25rem;
    color: var(--color-text-light);
}

/* Ligne d'actions d'une session : « Voir le résumé » + « Voir le replay »,
   pilules homogènes alignées sur une même ligne (programme → résumés / replays). */
.programme__session-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-top: var(--spacing-sm);
}

.programme__session-action {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.15rem 0.55rem;
    border: 1px solid var(--color-primary);
    border-radius: 999px;
    background: none;
    color: var(--color-primary);
    font: inherit;
    font-size: 0.8125rem;
    line-height: 1.3;
    text-decoration: none;
    cursor: pointer;
    transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}

.programme__session-action:hover { background: var(--color-primary); color: #fff; }
.programme__session-action-icon { flex: 0 0 auto; }

/* Variante résumé : même pilule, teinte neutre pour distinguer la lecture
   du résumé (texte) de celle du replay (vidéo). */
.programme__session-action--abstract {
    border-color: var(--color-border);
    color: var(--color-text-light);
}

.programme__session-action--abstract:hover {
    background: var(--color-bg-light);
    border-color: var(--color-text-light);
    color: var(--color-text);
}

/* Abstract révélé sous la description par le toggle title-row. */
.programme__session-abstract {
    margin-top: var(--spacing-sm);
    padding: var(--spacing-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    color: var(--color-text);
    line-height: 1.6;
}

.programme__session-abstract > :first-child { margin-top: 0; }
.programme__session-abstract > :last-child { margin-bottom: 0; }

/* Bloc parcours + thématique sous la description : signale la
   classification (à qui s'adresse / sur quoi porte la session) une
   fois le contenu lu, plutôt que de polluer l'attaque visuelle. */
.programme__session-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-top: var(--spacing-sm);
}

.programme__session-chips .programme__session-track,
.programme__session-chips .programme__session-tag {
    font-size: 0.75rem;
    font-weight: 500;
}

.programme__session-desc {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin-top: var(--spacing-sm);
    line-height: 1.5;
}

/* Sous-sessions */
.programme__subsessions {
    list-style: none;
    margin: var(--spacing-md) 0 0;
    padding: var(--spacing-sm) 0 0;
    border-top: 1px dashed var(--color-border);
}

.programme__subsession {
    padding: 0.5rem 0;
}

.programme__subsession-title-row {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
}

.programme__subsession-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    margin: 0;
}

.programme__subsession-desc {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    margin-top: 0.125rem;
}

/* ══════════════════════════════════════════════════════════════
   Impression — programme événement

   Stratégie : un programme dense de 2-3 jours doit tenir sur 2 pages
   max — pas 6. Objectifs :
     - masquer header minisite, navigation, toolbar, filtres, footer ;
     - dégrader l'abstract (déjà cachable par toggle) en bruit muet ;
     - réduire fortement padding/gap/font-size sans casser la lecture ;
     - jours enchaînés sans page-break-before systématique : on laisse
       le contenu couler, seul le titre du jour reste solidaire de son
       premier slot ;
     - sessions et slots `page-break-inside: avoid` pour éviter les
       coupes au milieu d'un groupe.

   Le cartouche (`.print-page`) et l'en-tête courant (`@page @top-right`)
   sont gérés par `components/print.css` — on n'y touche pas ici, on se
   contente d'ajouter les hides spécifiques au programme.
   ══════════════════════════════════════════════════════════════ */
@media print {
    /* ── Hides interface mini-site + outils interactifs ── */
    body > header,
    .minisite-header,
    .minisite-topbar,
    .minisite-nav,
    .minisite-banner,
    .minisite-hero__bookmark,
    .programme__toolbar,
    .programme__days,
    .programme__facets,
    .programme__download-btn,
    .programme__session-actions,
    .programme__session-abstract,
    .floating-actions,
    footer,
    .footer,
    .site-footer { display: none !important; }

    /* ── Container plein papier ── */
    .container { max-width: none; padding: 0; margin: 0; }
    .minisite-content { padding: 0; }
    .programme { padding: 0; }

    /* ── Header de la page ── */
    .programme__header { margin: 0 0 0.2cm; }
    .minisite-content__page-title {
        font-size: 12pt;
        margin: 0;
    }

    /* ── Wrapper : pas de bordure tab ── */
    .programme__wrapper { border: 0; padding: 0; }

    /* ── Reset des marges p/ul héritées de print.css (0.3em sinon)
         qui s'accumulent sur des dizaines de sessions. On gère
         localement avec margin-top par bloc à la place. ── */
    .programme p,
    .programme ul,
    .programme ol,
    .programme h2,
    .programme h3,
    .programme h4,
    .programme h5 {
        margin-top: 0;
        margin-bottom: 0;
    }

    /* ── Jour : enchaîné, le bandeau vert devient un simple titre noir
         pour éviter de gaspiller des aplats colorés à l'impression. ── */
    .programme__day {
        display: block !important;
        page-break-before: auto;
        padding-top: 0;
    }
    .programme__day + .programme__day {
        margin-top: 0.2cm;
        page-break-before: auto;
    }

    .programme__day-title {
        position: static !important;
        display: block;
        margin: 0 0 0.12cm;
        padding: 0.05cm 0 0.08cm;
        border-radius: 0;
        border-bottom: 1.2pt solid #000;
        background: transparent !important;
        color: #000 !important;
        font-size: 10pt;
        page-break-after: avoid;
        page-break-inside: avoid;
        line-height: 1.2;
    }

    .programme__day-title-num {
        display: inline-block;
        padding: 0 0.18cm;
        margin-right: 0.15cm;
        background: #000 !important;
        color: #fff !important;
        font-size: 7.5pt;
    }

    .programme__day-title-date {
        font-size: 9.5pt;
        color: #000 !important;
        font-weight: 600;
    }

    /* ── Slots : grille compacte, pas de padding latéral, divider fin ── */
    .programme__slots { padding: 0 !important; margin: 0; }

    .programme__slot {
        grid-template-columns: 1.4cm 1fr;
        gap: 0.18cm;
        padding: 0.08cm 0;
        /* Pas de `page-break-inside: avoid` ici : un slot qui contient
           plusieurs groupes peut faire 10+ cm et provoquerait un gros
           blanc en bas de page. On laisse couler ; seules les sessions
           individuelles restent solidaires (cf. ci-dessous). */
    }

    .programme__slot:first-child { padding-top: 0; }

    .programme__slot + .programme__slot {
        border-top: 0.4pt solid #ddd;
    }

    .programme__slot-time { color: #000; }
    .programme__slot-time-start { font-size: 8pt; font-weight: 700; }

    /* ── Contenu du slot : gap minimal entre groupes ── */
    .programme__slot-content { gap: 0.12cm; }

    /* ── Groupe : pas de fond, eyebrow noir compact. Pas d'avoid ici
         non plus : sur des plénières avec sous-sessions, le groupe fait
         plusieurs cm et casse la pagination s'il refuse de se couper. ── */
    .programme__group { }
    .programme__group-header {
        gap: 0.15cm;
        margin-bottom: 0.04cm;
    }
    .programme__group-type {
        background: transparent !important;
        color: #000 !important;
        border: 0.5pt solid #000;
        padding: 0 0.12cm;
        font-size: 6.5pt;
        line-height: 1.4;
    }
    .programme__group-room {
        font-size: 7pt;
        color: #000 !important;
    }
    .programme__group-choose {
        font-size: 7pt;
        color: #444 !important;
    }

    /* ── Sessions : suppression aplats, padding réduit ── */
    .programme__session {
        background: transparent !important;
        border: 0 !important;
        padding: 0 !important;
        page-break-inside: avoid;
    }
    .programme__session--alternative {
        background: transparent !important;
        border: 0.4pt solid #ccc !important;
        padding: 0.08cm 0.15cm !important;
    }

    .programme__session-title-row { gap: 0.1cm 0.4cm; }
    .programme__session-title { font-size: 8.5pt; line-height: 1.2; }
    .programme__session-desc {
        font-size: 7.5pt;
        color: #333 !important;
        margin-top: 0.04cm;
        line-height: 1.25;
    }
    .programme__session-meta { margin-top: 0.02cm; gap: 0.2cm; }
    .programme__session-room { color: #000 !important; font-size: 7pt; }

    /* ── Intervenants compacts : pas d'underline, pas de couleur ── */
    .programme__session-speakers {
        margin-top: 0.04cm;
        font-size: 7.5pt;
        color: #000 !important;
        line-height: 1.25;
    }
    .programme__session-speakers-label { color: #444 !important; font-weight: 600; }
    .programme__session-speaker {
        color: #000 !important;
        text-decoration: none !important;
    }
    .programme__session-speaker-sep { color: #444 !important; }

    /* ── Chips parcours + thématique : texte simple, pas de fond ── */
    .programme__session-chips {
        gap: 0.1cm;
        margin-top: 0.04cm;
    }
    .programme__session-chips .programme__session-track,
    .programme__session-chips .programme__session-tag {
        background: transparent !important;
        color: #444 !important;
        border: 0.4pt solid #ccc;
        padding: 0 0.12cm;
        font-size: 6.5pt;
        line-height: 1.4;
    }

    /* ── Sous-sessions : retrait modéré, divider plus discret ── */
    .programme__subsessions {
        margin: 0.05cm 0 0;
        padding: 0.05cm 0 0;
    }
    .programme__subsession {
        padding: 0.02cm 0;
        page-break-inside: avoid;
    }
    .programme__subsession-title { font-size: 8pt; line-height: 1.2; }
    .programme__subsession-desc { font-size: 7pt; color: #333 !important; line-height: 1.25; margin-top: 0.02cm; }

    /* ── Alternatives en colonnes : garder le grid, retirer le bruit
         visuel du séparateur OU. ── */
    .programme__sessions--alternatives { display: grid !important; gap: 0.08cm; }
    .programme__or { padding: 0 0.15cm; }
    .programme__or > span {
        background: transparent !important;
        border: 0.4pt solid #999 !important;
        padding: 0 0.12cm;
        font-size: 6pt;
    }
    .programme__or::before { background: #ccc !important; }

    /* ── Liens : noir, pas d'underline parasite (déjà géré par le
         reset global de print.css, on insiste sur les surfaces qui
         survivent). ── */
    .programme__session a { color: #000 !important; }
}

/* Intervenants */
.speakers__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
}

@media (min-width: 640px) {
    .speakers__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
    .speakers__grid { grid-template-columns: repeat(3, 1fr); }
}

.speakers__card {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.speakers__avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    flex-shrink: 0;
    border-radius: 100px;
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.speakers__name { font-weight: 600; }
.speakers__name-link {
    color: var(--color-primary);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
    transition: color 120ms ease;
}
.speakers__name-link:hover { color: var(--color-primary-dark); }
.speakers__role { font-size: var(--font-size-xs); color: var(--color-primary); text-transform: capitalize; }
.speakers__bio { font-size: var(--font-size-sm); color: var(--color-text-light); margin-top: var(--spacing-xs); }
.speakers__session { font-size: var(--font-size-xs); color: var(--color-text-light); margin-top: var(--spacing-xs); font-style: italic; }

/* Infos pratiques */
/* ══════════════════════════════════════════════════════════════
   Pratique (infos) — minisite event

   Layout : container 60rem, TOC sticky sur lg+ (10rem à gauche),
   main content (50rem). Stack mobile (TOC masquée — pour gagner
   de la verticalité). Sections en bandeau vert ANCESU (vocabulaire
   inscription/programme).
   ══════════════════════════════════════════════════════════════ */

.infos { background: white; }

.infos .container {
    max-width: 60rem;
}

.infos__header {
    margin-bottom: var(--spacing-xl);
}

.infos__header .minisite-content__page-title {
    margin-bottom: 0;
    line-height: 1;
    font-weight: 600;
}

/* ── Layout : TOC + main sur lg+, stack sinon ── */
.infos__layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--spacing-xl);
}

@media (min-width: 64rem) {
    .infos__layout {
        grid-template-columns: 11rem 1fr;
        gap: var(--spacing-2xl);
    }
}

/* ── TOC sticky : invisible mobile, sticky lg+ ── */
.infos__toc {
    display: none;
}

@media (min-width: 64rem) {
    .infos__toc {
        display: block;
        position: sticky;
        top: var(--spacing-xl);
        align-self: start;
    }
}

.infos__toc-title {
    margin: 0 0 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border, #e5e7eb);
    font-size: 0.6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
}

.infos__toc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.infos__toc-link {
    display: block;
    padding: 0.375rem 0.625rem;
    border-left: 2px solid transparent;
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    text-decoration: none;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

.infos__toc-link:hover {
    background: var(--color-bg-light);
    color: var(--color-text);
}

.infos__toc-link.is-active {
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    border-left-color: var(--color-section-ancesu);
    font-weight: 600;
}

/* ── Main content ── */
.infos__main {
    min-width: 0;
}

.infos__section {
    margin: 0 0 var(--spacing-2xl);
    scroll-margin-top: var(--spacing-xl);
}

.infos__section:last-child {
    margin-bottom: 0;
}

.infos__section-title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 var(--spacing-md);
    padding: 0.5rem 1rem;
    border-radius: var(--radius-md);
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    font-size: var(--font-size-base);
    font-weight: 700;
}

.infos__section-title svg {
    flex-shrink: 0;
}

/* ── Lieu : adresse formatée ── */
.infos__venue-name {
    margin: 0;
    font-size: var(--font-size-md);
    font-weight: 700;
    color: var(--color-text);
}

.infos__venue-address {
    margin: 0.25rem 0 0;
    font-style: normal;
    color: var(--color-text-light);
    line-height: 1.5;
}

.infos__access-text {
    margin: 0;
    line-height: 1.6;
}

/* ── Lieu : bouton OSM en outline primary ── */
.infos__map-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin-top: var(--spacing-md);
    padding: 0.4375rem 0.875rem;
    border: 1px solid var(--color-primary);
    border-radius: 999px;
    background: transparent;
    color: var(--color-primary);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
    transition: background 150ms ease, color 150ms ease;
}

.infos__map-cta:hover {
    background: var(--color-primary);
    color: white;
}

.infos__map-cta:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ── Accès en ligne ── */
.infos__online {
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    line-height: 1.6;
}

.infos__online p {
    margin: 0 0 0.5rem;
}

.infos__online p:last-child {
    margin-bottom: 0;
}

.infos__online-label {
    font-weight: 700;
    color: var(--color-text-light);
}

.infos__online-value {
    font-weight: 600;
    color: var(--color-text);
}

.infos__online-hint {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

/* ── Contacts : channels en chips ── */
.infos__contact-channels {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: var(--spacing-md);
}

.infos__contact-channel {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.5rem 0.875rem;
    border-radius: 999px;
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
    transition: background 150ms ease;
}

.infos__contact-channel:hover {
    background: var(--color-accent-light, var(--color-bg-light));
}

.infos__contact-channel svg {
    flex-shrink: 0;
}

/* ── Print : pas de TOC ni de carte interactive, sections continues ── */
@media print {
    .infos__toc { display: none; }
    .infos__layout {
        display: block;
        gap: 0;
    }
    .infos__section {
        margin-bottom: 0.5cm;
        page-break-inside: avoid;
    }
    .infos__section-title {
        background: transparent;
        color: var(--color-section-ancesu);
        border-bottom: 1px solid var(--color-section-ancesu-light);
        padding: 0.1cm 0;
        margin-bottom: 0.2cm;
        border-radius: 0;
    }
    .infos__map-cta { display: none; }
    .infos__contact-channels {
        gap: 0.25rem;
    }
    .infos__contact-channel {
        background: transparent;
        color: var(--color-text);
        padding: 0;
        font-weight: 500;
    }
}

/* ══════════════════════════════════════════════════════════════
   Inscription — minisite event

   Reprise du vocabulaire visuel du programme : container 60rem,
   bandeaux de section verts ANCESU, cards sans bordure.

   Structure :
     - header : titre + badge statut (ouvert / early bird / fermé / à venir)
     - cta-zone : grand bouton primary si URL et état ouvert
     - section timeline : étapes ouverture / early / clôture
     - section tarifs : grid cards par PricingTier
     - section moyens de paiement : chips horizontaux
     - section conditions : TipTap render
   ══════════════════════════════════════════════════════════════ */

.inscription { background: white; }

.inscription .container {
    max-width: 60rem;
}

/* ── Header : titre + badge statut accolés ── */
.inscription__header {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: var(--spacing-xl);
}

.inscription__header .minisite-content__page-title {
    margin-bottom: 0;
    line-height: 1;
    font-weight: 600;
}

.inscription__status {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.75rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.inscription__status--open {
    background: rgba(34, 197, 94, 0.12);
    color: #166534;
}

.inscription__status--upcoming {
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
}

.inscription__status--closed {
    background: var(--color-bg-light);
    color: var(--color-text-light);
}

/* ── CTA principal : grande zone surlignée ── */
.inscription__cta-zone {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    margin: 0 0 var(--spacing-2xl);
    padding: var(--spacing-xl);
    border-radius: var(--radius-md);
    background: var(--color-section-ancesu-light);
}

.inscription__cta-zone--muted {
    background: var(--color-bg-light);
}

.inscription__cta-text {
    flex: 1;
    min-width: 0;
}

.inscription__cta-title {
    margin: 0;
    font-size: var(--font-size-lg);
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.3;
}

.inscription__cta-hint {
    margin: 0.25rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.inscription__cta-zone--muted .inscription__cta-title {
    color: var(--color-text-light);
}

.inscription__cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1.5rem;
    background: var(--color-primary);
    color: white;
    border-radius: 999px;
    font-weight: 700;
    text-decoration: none;
    font-size: var(--font-size-sm);
    transition: background 150ms ease, transform 150ms ease;
}

.inscription__cta-btn:hover {
    background: var(--color-primary-dark, var(--color-primary));
    transform: translateY(-1px);
}

.inscription__cta-btn:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* ── Sections : bandeau de titre vert ANCESU style programme__day-title ── */
.inscription__section {
    margin: 0 0 var(--spacing-2xl);
}

.inscription__section-title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 var(--spacing-md);
    padding: 0.5rem 1rem;
    border-radius: var(--radius-md);
    background: var(--color-section-ancesu-light);
    color: var(--color-section-ancesu);
    font-size: var(--font-size-base);
    font-weight: 700;
}

.inscription__section-title svg {
    flex-shrink: 0;
}

/* ── Timeline : étapes avec marker + ligne reliante.
   Layout vertical par défaut (mobile-first) ; bascule horizontal en
   stepper à partir de lg (1024px) où la largeur du container 60rem
   suffit à présenter 3 étapes côte à côte. ── */
.inscription__timeline {
    list-style: none;
    margin: 0;
    padding: 0 0 0 0.5rem;
    position: relative;
}

.inscription__timeline-step {
    display: grid;
    grid-template-columns: 1.5rem 1fr;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) 0;
    position: relative;
}

/* Ligne verticale qui relie les markers — calée sur le centre du marker
   (0.75rem from left of 1.5rem column + padding-left 0.5rem). */
.inscription__timeline::before {
    content: '';
    position: absolute;
    left: calc(0.5rem + 0.75rem - 1px);
    top: var(--spacing-md);
    bottom: var(--spacing-md);
    width: 2px;
    background: var(--color-border);
    z-index: 0;
}

/* ── Horizontal stepper sur lg+ ──
   Markers en haut, label en dessous, ligne horizontale entre eux.
   Justifie chaque étape sur sa propre colonne flex pour une distribution
   régulière, et redresse le ::before en ligne horizontale alignée sur le
   centre vertical des markers. */
@media (min-width: 64rem) {
    .inscription__timeline {
        display: flex;
        align-items: flex-start;
        gap: var(--spacing-md);
        padding: 0;
    }

    .inscription__timeline-step {
        flex: 1;
        display: flex;
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 0.5rem;
        padding: 0;
        min-width: 0;
    }

    /* Ligne horizontale entre les markers extrêmes. On utilise des
       pseudo-positions sur les steps eux-mêmes (::after sur chaque step
       sauf le dernier) pour éviter de dépasser au-delà des markers
       extrêmes — l'approche `::before` global de OL ne sait pas où se
       trouvent les markers du premier/dernier step. */
    .inscription__timeline::before {
        display: none;
    }

    .inscription__timeline-step:not(:last-child)::after {
        content: '';
        position: absolute;
        top: 0.75rem;
        left: 50%;
        right: calc(-50% - var(--spacing-md));
        height: 2px;
        background: var(--color-border);
        z-index: 0;
    }
}

.inscription__timeline-marker {
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 100px;
    background: white;
    border: 2px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-light);
    z-index: 1;
    flex-shrink: 0;
}

.inscription__timeline-step--done .inscription__timeline-marker {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: white;
}

.inscription__timeline-step--current .inscription__timeline-marker {
    background: var(--color-accent, #f59e0b);
    border-color: var(--color-accent, #f59e0b);
    color: white;
    box-shadow: 0 0 0 4px var(--color-accent-light, #fef3c7);
}

.inscription__timeline-body { min-width: 0; }

.inscription__timeline-date {
    margin: 0;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--color-text);
}

.inscription__timeline-label {
    margin: 0.125rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.inscription__timeline-step--current .inscription__timeline-date {
    color: var(--color-accent, #b45309);
}

.inscription__timeline-step--pending .inscription__timeline-date,
.inscription__timeline-step--pending .inscription__timeline-label {
    color: var(--color-text-light);
}

/* ── Tarifs : grid cards sans bordure ── */
.inscription__tiers {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: var(--spacing-md);
}

.inscription__tier {
    padding: var(--spacing-lg);
    border-radius: var(--radius-md);
    background: var(--color-bg-light);
}

.inscription__tier-category {
    margin: 0 0 var(--spacing-sm);
    font-size: 0.6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-light);
}

.inscription__tier-price {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1.1;
}

/* Mention temporelle sous le prix : « Jusqu'au DATE » avant la deadline,
   « Depuis le DATE » après. Discrète, en italique pour signaler que
   c'est une note de contexte, pas une donnée principale. */
.inscription__tier-mention {
    margin: 0.375rem 0 0;
    font-size: 0.75rem;
    font-style: italic;
    color: var(--color-text-light);
}

/* Prix de bascule visible pendant la période early bird : permet à
   l'utilisateur d'anticiper combien il paiera s'il s'inscrit après la
   deadline. Présenté comme une ligne secondaire — séparée par un
   filet, montant moins prominent que le prix courant mais lisible. */
.inscription__tier-next {
    display: flex;
    align-items: baseline;
    gap: 0.375rem;
    margin: 0.625rem 0 0;
    padding-top: 0.5rem;
    border-top: 1px solid var(--color-border);
}

.inscription__tier-next-amount {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--color-text);
}

.inscription__tier-next-label {
    font-size: 0.75rem;
    font-style: italic;
    color: var(--color-text-light);
}

/* ── Moyens de paiement : chips horizontaux ── */
.inscription__methods {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.inscription__method {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.375rem 0.75rem;
    background: var(--color-bg-light);
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--color-text);
}

.inscription__method svg {
    color: var(--color-text-light);
    flex-shrink: 0;
}

/* ── Note capacité ── */
.inscription__capacity-note {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin: 0 0 var(--spacing-xl);
    padding: 0.5rem 0.875rem;
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    font-size: 0.75rem;
    color: var(--color-text-light);
}

.inscription__capacity-note svg {
    flex-shrink: 0;
    color: var(--color-text-light);
}

/* ── Conditions + Contacts : bloc TipTap dans bg-light ── */
.inscription__conditions,
.inscription__contacts {
    padding: var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    line-height: 1.6;
}

.inscription__conditions > :first-child,
.inscription__contacts > :first-child { margin-top: 0; }
.inscription__conditions > :last-child,
.inscription__contacts > :last-child { margin-bottom: 0; }

.inscription__excerpt {
    color: var(--color-text-light);
    font-size: var(--font-size-base);
}

@media (max-width: 640px) {
    .inscription__cta-zone { flex-direction: column; align-items: stretch; }
    .inscription__cta-btn { justify-content: center; }
}

/* Partenaires */
.partners__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: var(--spacing-lg);
}

.partners__card {
    text-align: center;
    padding: var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.partners__logo {
    max-width: 8rem;
    max-height: 4rem;
    object-fit: contain;
    margin: 0 auto var(--spacing-md);
}

.partners__logo-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 4rem;
    height: 4rem;
    margin: 0 auto var(--spacing-md);
    border-radius: var(--radius-md);
    background: var(--color-bg-white);
    color: var(--color-text-light);
}

.partners__name { font-weight: 600; margin-bottom: var(--spacing-xs); }
.partners__desc { font-size: var(--font-size-sm); color: var(--color-text-light); }
.partners__link { display: inline-block; margin-top: var(--spacing-sm); font-size: var(--font-size-sm); color: var(--color-primary); }

.partners__card--link {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}
.partners__card--link:hover,
.partners__card--link:focus-visible {
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08);
    background: var(--color-bg-white);
}

.partners { background: white; }

.partners .container {
    max-width: 60rem;
}

/* Présentation éditoriale + dossier partenariat */
.partners__intro {
    margin-bottom: var(--spacing-xl);
}

.partners__dossier {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    align-items: flex-start;
    padding: var(--spacing-lg) var(--spacing-xl);
    margin-bottom: var(--spacing-2xl);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

@media (min-width: 640px) {
    .partners__dossier {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}

.partners__dossier-text { flex: 1; }
.partners__dossier-eyebrow {
    font-size: var(--font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-primary);
    font-weight: 600;
    margin-bottom: var(--spacing-2xs);
}
.partners__dossier-title {
    font-size: var(--font-size-lg);
    font-weight: 600;
    margin-bottom: var(--spacing-2xs);
}
.partners__dossier-hint {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}
.partners__dossier-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--color-primary);
    color: #ffffff;
    border-radius: var(--radius-md);
    text-decoration: none;
    font-weight: 500;
    transition: background 0.18s ease;
    white-space: nowrap;
}
.partners__dossier-btn:hover,
.partners__dossier-btn:focus-visible {
    background: var(--color-primary-dark);
    color: #ffffff;
}

/* Sections par niveau */
.partners__sections {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-2xl);
}

.partners__section-title {
    font-size: var(--font-size-md);
    font-weight: 600;
    margin-bottom: var(--spacing-lg);
    color: var(--color-text);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--color-border-muted, var(--color-bg-light));
}

/* Contributions */
.contributions__list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    max-width: 48rem;
}

.contributions__item {
    padding: var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.contributions__title { font-weight: 600; margin-bottom: var(--spacing-xs); }
.contributions__authors { font-size: var(--font-size-sm); color: var(--color-primary); font-weight: 500; }
.contributions__abstract { font-size: var(--font-size-sm); color: var(--color-text-light); margin-top: var(--spacing-xs); }

.contributions__download {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-sm);
    font-size: var(--font-size-sm);
    color: var(--color-primary);
    font-weight: 500;
}

/* Galerie */
.gallery__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr));
    gap: var(--spacing-sm);
}

.gallery__item {
    aspect-ratio: 4 / 3;
    border-radius: var(--radius-md);
    overflow: hidden;
    cursor: pointer;
    border: 0;
    padding: 0;
    background: var(--color-bg-light);
}

.gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition-base);
}

.gallery__item:hover img { transform: scale(1.05); }

/* Lightbox */
.gallery__lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gallery__lightbox-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.9);
}

.gallery__lightbox-content {
    position: relative;
    max-width: 90vw;
    max-height: 80vh;
}

.gallery__lightbox-img {
    max-width: 90vw;
    max-height: 80vh;
    object-fit: contain;
    border-radius: var(--radius-md);
}

.gallery__lightbox-close {
    position: absolute;
    top: -2.5rem;
    right: 0;
    background: none;
    border: none;
    color: #fff;
    cursor: pointer;
    padding: 0.5rem;
}

.gallery__lightbox-prev,
.gallery__lightbox-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255, 255, 255, 0.15);
    border: none;
    color: #fff;
    cursor: pointer;
    padding: 0.75rem;
    border-radius: 50%;
    transition: background var(--transition-fast);
}

.gallery__lightbox-prev:hover,
.gallery__lightbox-next:hover { background: rgba(255, 255, 255, 0.3); }

.gallery__lightbox-prev { left: -3.75rem; }
.gallery__lightbox-next { right: -3.75rem; }

.gallery__lightbox-caption {
    text-align: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: var(--font-size-sm);
    margin-top: var(--spacing-sm);
}

/* Replays */
.replays__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
    gap: var(--spacing-lg);
}

.replays__card {
    display: flex;
    flex-direction: column;
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: box-shadow var(--transition-base), transform var(--transition-base);
}

.replays__card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.replays__thumb {
    position: relative;
    aspect-ratio: 16 / 9;
    background: var(--color-navy);
    overflow: hidden;
}

.replays__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--transition-base);
}

.replays__card:hover .replays__thumb img { transform: scale(1.05); }

.replays__play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 3rem;
    height: 3rem;
    background: rgba(194, 29, 43, 0.9);
    border-radius: 50%;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform var(--transition-fast), background var(--transition-fast);
}

.replays__card:hover .replays__play {
    transform: translate(-50%, -50%) scale(1.1);
    background: rgba(194, 29, 43, 1);
}

.replays__duration {
    position: absolute;
    bottom: var(--spacing-sm);
    right: var(--spacing-sm);
    padding: 0.125rem 0.5rem;
    border-radius: var(--radius-sm);
    font-size: var(--font-size-xs);
    font-weight: 600;
    background: rgba(0, 0, 0, 0.7);
    color: #fff;
}

.replays__body { padding: var(--spacing-md); }
.replays__title { font-weight: 600; margin-bottom: var(--spacing-xs); }
.replays__speaker { font-size: var(--font-size-sm); color: var(--color-primary); font-weight: 500; }

.replays__desc {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin-top: var(--spacing-xs);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* ── Replays — bloc « replays de l'événement » en tête du programme ── */
.programme__replays {
    margin: 0 0 var(--spacing-lg);
    padding: var(--spacing-md) var(--spacing-lg);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.programme__replays-title {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-primary);
    margin: 0 0 var(--spacing-sm);
}

.programme__replays-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
}

.programme__replay-card {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.9rem;
    border: 1px solid var(--color-border, #e5e7eb);
    border-radius: var(--radius-sm);
    background: #fff;
    color: var(--color-text);
    font: inherit;
    font-size: var(--font-size-sm);
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}

.programme__replay-card:hover {
    border-color: var(--color-primary);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.programme__replay-card-icon { flex: 0 0 auto; color: var(--color-primary); }
.programme__replay-card-title { font-weight: 600; }
.programme__replay-card-duration { color: var(--color-text-light); font-size: var(--font-size-xs); }

/* ── Replays sur la fiche simple — rendus en colonne centrale, façon mini-programme ── */
.event-replays {
    margin: var(--spacing-xl) 0 0;
}

.event-replays__title {
    font-size: var(--font-size-lg);
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 var(--spacing-md);
}

.event-replays__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.event-replays__card {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    width: 100%;
    padding: var(--spacing-md) var(--spacing-lg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: #fff;
    color: var(--color-text);
    font: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 120ms ease, box-shadow 120ms ease;
}

.event-replays__card:hover {
    border-color: var(--color-primary);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.event-replays__play {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--color-primary-light);
    color: var(--color-primary);
}

.event-replays__main {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.event-replays__heading {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.event-replays__time {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    color: var(--color-primary);
    font-size: var(--font-size-sm);
}

.event-replays__name {
    font-weight: 600;
}

.event-replays__speakers {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.event-replays__speakers-label {
    font-weight: 600;
}

.event-replays__duration {
    flex: 0 0 auto;
    align-self: center;
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    white-space: nowrap;
}

/* ── Modale de lecture des replays vidéo (déclenchée depuis le programme) ── */
.replay-modal {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-lg);
}

.replay-modal[hidden] { display: none; }

.replay-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.78);
    backdrop-filter: blur(2px);
}

.replay-modal__dialog {
    position: relative;
    width: min(960px, 100%);
    background: #000;
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
}

.replay-modal__dialog:focus { outline: none; }

.replay-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: #111;
}

.replay-modal__title {
    font-size: 1rem;
    font-weight: 600;
    margin: 0;
    color: #fff;
}

.replay-modal__close {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: none;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    cursor: pointer;
    transition: background 120ms ease;
}

.replay-modal__close:hover { background: rgba(255, 255, 255, 0.25); }

.replay-modal__player {
    position: relative;
    aspect-ratio: 16 / 9;
    width: 100%;
    background: #000;
}

.replay-modal__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.replay-modal__iframe[hidden] { display: none; }

.replay-modal__fallback {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: var(--spacing-lg);
    text-align: center;
    color: #fff;
}

.replay-modal__fallback[hidden] { display: none; }
.replay-modal__fallback a { color: #fff; text-decoration: underline; }

/* Minisite — état vide commun */
.minisite-empty {
    text-align: center;
    padding: var(--spacing-2xl) var(--spacing-lg);
    color: var(--color-text-light);
}

.minisite-empty svg { margin: 0 auto var(--spacing-md); }

@media (max-width: 47.9375em) {
    .inscription__card { flex-direction: column; }
    .gallery__lightbox-prev { left: 0.5rem; }
    .gallery__lightbox-next { right: 0.5rem; }
}

/* ══════════════════════════════════════════════════════════════
   Événements ANCESU — layout sidebar + featured + passés par année
   Classes WordPress (event-layout, event-sidebar, event-featured,
   event-main, event-grid, event-card) — adaptées aux variables locales
   ══════════════════════════════════════════════════════════════ */

/* Page header */
.event-page__header {
    margin-bottom: var(--spacing-xl);
}

.event-page__title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 var(--spacing-xs);
}

.event-page__subtitle {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin: 0;
}

@media (min-width: 48em) {
    .event-page__title { font-size: 2rem; }
}

/* Layout 2 colonnes : sidebar + main */
.event-layout {
    display: flex;
    gap: var(--spacing-2xl);
}

/* Bouton filtres mobile (masqué en desktop) */
.event-filters-toggle {
    display: none;
}

/* Mobile : sidebar masquée, bouton filtres visible */
.event-sidebar {
    display: none;
}

@media (max-width: 63.9375em) {
    .event-filters-toggle {
        display: inline-flex;
        align-items: center;
        gap: var(--spacing-sm);
        padding: 0.625rem var(--spacing-md);
        background: var(--color-bg-light);
        border: 1px solid var(--color-border);
        border-radius: var(--radius-lg);
        font-size: var(--font-size-sm);
        font-weight: 600;
        color: var(--color-text);
        cursor: pointer;
        margin-bottom: var(--spacing-md);
        width: 100%;
        justify-content: center;
        -webkit-tap-highlight-color: transparent;
        transition: background-color var(--transition-fast);
    }

    .event-filters-toggle:active { background: var(--color-border); }

    .event-filters-toggle__badge {
        font-size: var(--font-size-xs);
        font-weight: 700;
        color: var(--color-primary);
        background: var(--color-primary-light);
        padding: 0.125rem 0.5rem;
        border-radius: 100px;
    }

    /* Sidebar mobile : affichée quand filtersOpen via Alpine toggle class */
    .event-sidebar--open {
        display: block;
        width: 100%;
        position: static;
        margin-bottom: var(--spacing-md);
        background: var(--color-bg-light);
        border-radius: var(--radius-lg);
        padding: var(--spacing-md);
        border: 1px solid var(--color-border);
    }

    .event-layout {
        flex-direction: column;
        gap: 0;
    }
}

/* Desktop : sidebar sticky normale */
@media (min-width: 64em) {
    .event-sidebar {
        display: block;
        flex-shrink: 0;
        width: 15rem;
        position: sticky;
        top: 5rem;
        align-self: flex-start;
        max-height: calc(100vh - 6rem);
        overflow-y: auto;
    }
}

.event-sidebar__inner {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
}

.event-main {
    flex: 1;
    min-width: 0;
}

/* Recherche sidebar */
.event-sidebar__search { margin: 0; }
.event-sidebar__search-field { position: relative; }

.event-sidebar__search-icon {
    position: absolute;
    left: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--color-text-light);
    pointer-events: none;
}

.event-sidebar__search-input {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-sm) var(--spacing-sm) 2.375rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: inherit;
    font-size: var(--font-size-sm);
    color: var(--color-text);
    background: #fff;
    transition: border-color 0.15s ease;
}

.event-sidebar__search-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(52, 75, 141, 0.12);
}

.event-sidebar__search-input::placeholder { color: var(--color-text-light); }

/* Sections sidebar */
.event-sidebar__section {
    border-top: 1px solid var(--color-border);
    padding-top: var(--spacing-md);
}

.event-sidebar__title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-text-light);
    margin: 0 0 var(--spacing-sm);
}

.event-sidebar__title svg { flex-shrink: 0; opacity: 0.6; }

.event-sidebar__list { list-style: none; margin: 0; padding: 0; }
.event-sidebar__list li + li { margin-top: 1px; }

.event-sidebar__list-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: 0.375rem var(--spacing-sm);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-sm);
    color: var(--color-text);
    text-decoration: none;
    transition: all 0.15s ease;
}

.event-sidebar__list-link:hover {
    background: var(--color-bg-light);
    color: var(--color-primary);
}

.event-sidebar__list-link--active {
    background: var(--color-primary-light);
    color: var(--color-primary);
    font-weight: 600;
}

.event-sidebar__count {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    background: var(--color-bg-light);
    padding: 1px 0.375rem;
    border-radius: 0.625rem;
    min-width: 1.375rem;
    text-align: center;
}

.event-sidebar__list-link--active .event-sidebar__count {
    background: var(--color-primary);
    color: #fff;
}

.event-sidebar__reset {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--font-size-sm);
    color: var(--color-primary);
    text-decoration: none;
    padding: var(--spacing-xs) 0;
}

.event-sidebar__reset:hover { text-decoration: underline; }

/* Main header */
.event-main__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--color-border);
}

.event-main__count {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin: 0;
}

/* Section titles */
.event-main__section { margin-bottom: var(--spacing-2xl); }
.event-main__section:last-child { margin-bottom: 0; }

.event-main__section-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    font-size: var(--font-size-base);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-text-light);
    margin: 0 0 var(--spacing-lg);
}

.event-main__section-title svg { flex-shrink: 0; color: var(--color-primary); }

.event-main__section-count {
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-text-light);
    background: var(--color-bg-light);
    padding: 1px 0.375rem;
    border-radius: 0.625rem;
    min-width: 1.375rem;
    text-align: center;
}

/* Featured event — grille image + body */
.event-featured {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
    padding-bottom: var(--spacing-xl);
    border-bottom: 1px solid var(--color-border);
}

.event-featured__image {
    display: block;
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.event-featured__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.2s ease;
}

.event-featured__image:hover img { transform: scale(1.03); }

.event-featured__body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--spacing-sm);
}

.event-featured__meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    align-items: center;
}

.event-featured__type {
    display: inline-block;
    padding: 2px var(--spacing-sm);
    background: var(--color-primary-light);
    color: var(--color-primary);
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-radius: var(--radius-sm);
}

.event-featured__title {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: var(--line-height-tight);
    margin: 0;
}

.event-featured__title a { color: var(--color-text); text-decoration: none; }
.event-featured__title a:hover { color: var(--color-primary); }

.event-featured__excerpt {
    color: var(--color-text-light);
    line-height: var(--line-height-base);
    margin: 0;
    font-size: var(--font-size-sm);
}

.event-featured__details {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-md);
}

.event-featured__detail {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.event-featured__detail svg { flex-shrink: 0; opacity: 0.6; }

.event-featured__actions {
    display: flex;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-xs);
}

/* Grid upcoming cards */
.event-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-lg);
}

/* Card upcoming */
.event-card--upcoming { border-top: 3px solid var(--color-primary); }

/* Date badge overlay sur image */
.event-card__date-badge {
    position: absolute;
    top: var(--spacing-sm);
    left: var(--spacing-sm);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 3rem;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: rgba(255, 255, 255, 0.95);
    border-radius: var(--radius-md);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
    z-index: 1;
}

.event-card__date-day {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-primary);
}

.event-card__date-month {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    color: var(--color-primary);
    letter-spacing: 0.5px;
}

.event-card__image-link {
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    position: relative;
}

.event-card__image--placeholder {
    background: var(--color-bg-light);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

/* Empty */
.event-empty {
    text-align: center;
    padding: var(--spacing-3xl) var(--spacing-md);
    color: var(--color-text-light);
}

.event-empty svg { margin-bottom: var(--spacing-md); }
.event-empty p { font-size: var(--font-size-lg); margin-bottom: var(--spacing-xl); }

/* ── Timeline — alternance flex gauche/droite ── */
.event-timeline {
    position: relative;
    padding: var(--spacing-md) 0;
}

@media (min-width: 48em) {
    .event-timeline::before {
        content: '';
        position: absolute;
        left: 50%;
        top: 0;
        bottom: 0;
        width: 2px;
        background: var(--color-border);
        transform: translateX(-1px);
    }
}

/* Marqueur d'année */
.event-timeline__year-marker {
    position: relative;
    z-index: 2;
    text-align: center;
    margin: var(--spacing-lg) 0 var(--spacing-sm);
    clear: both;
}

.event-timeline__year-marker:first-child { margin-top: 0; }

.event-timeline__year-label {
    display: inline-block;
    padding: var(--spacing-xs) var(--spacing-lg);
    background: var(--color-primary);
    color: #fff;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border-radius: 100px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.event-timeline__year-label--upcoming {
    background: var(--color-accent, #f6a724);
}

/* Item */
.event-timeline__item {
    position: relative;
    margin-bottom: var(--spacing-sm);
}

@media (min-width: 48em) {
    .event-timeline__item--left {
        padding-right: calc(50% + var(--spacing-lg));
    }

    .event-timeline__item--right {
        padding-left: calc(50% + var(--spacing-lg));
    }
}

/* Dot */
.event-timeline__dot {
    display: none;
}

@media (min-width: 48em) {
    .event-timeline__dot {
        display: block;
        position: absolute;
        left: 50%;
        top: 1.25rem;
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: var(--color-primary);
        border: 2px solid #fff;
        box-shadow: 0 0 0 2px var(--color-primary);
        transform: translateX(-50%);
        z-index: 1;
    }
}

.event-timeline__dot--upcoming {
    background: var(--color-accent, #f6a724);
    box-shadow: 0 0 0 2px var(--color-accent, #f6a724);
}

.event-timeline__card--upcoming {
    border-top: 3px solid var(--color-accent, #f6a724);
}

/* ── Timeline card — contenu ── */
.event-tl-card__header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    flex-wrap: wrap;
}

.event-tl-card__date-badge {
    display: inline-flex;
    align-items: baseline;
    gap: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--color-primary);
    font-weight: 600;
}

.event-tl-card__day {
    font-size: var(--font-size-lg);
    font-weight: 700;
    line-height: 1;
}

.event-tl-card__month {
    font-size: var(--font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.event-tl-card__type {
    display: inline-block;
    padding: 0.0625rem var(--spacing-sm);
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-text-light);
    background: var(--color-bg-light);
    border-radius: 100px;
}

.event-tl-card__title {
    font-size: var(--font-size-base);
    font-weight: 600;
    line-height: var(--line-height-tight);
    margin: var(--spacing-xs) 0 0;
}

.event-tl-card__title { color: var(--color-text); }
.event-timeline__card:hover .event-tl-card__title { color: var(--color-primary); }

.event-tl-card__location {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    margin-top: 0.125rem;
}

.event-tl-card__location svg { opacity: 0.5; flex-shrink: 0; }

/* ── Agenda card (liste avec bloc date bleu) ── */
.event-agenda__card {
    display: flex;
    align-items: stretch;
    text-decoration: none;
    color: inherit;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    margin-bottom: var(--spacing-md);
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.event-agenda__card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    transform: translateY(-1px);
}

.event-agenda__card:hover .event-tl-card__title { color: var(--color-primary); }

.event-agenda__body {
    flex: 1;
    min-width: 0;
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* ── Vue liste (toggle) ── */
.event-timeline--list .event-timeline__item {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.event-timeline--list .event-timeline__dot { display: none; }
.event-timeline--list::before { display: none; }

.event-timeline--list .event-timeline__card {
    display: flex;
    flex-direction: row;
    border-radius: 0;
    border: none;
    border-bottom: 1px solid var(--color-border);
    box-shadow: none;
}

.event-timeline--list .event-timeline__card:hover {
    box-shadow: none;
    transform: none;
    background: var(--color-bg-light);
}

.event-timeline--list .event-timeline__image-link {
    flex: 0 0 8rem;
    aspect-ratio: 4 / 3;
}

.event-timeline--list .event-timeline__body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Toggle boutons */
.event-view-toggle {
    display: inline-flex;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.event-view-toggle__btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    background: #fff;
    border: none;
    color: var(--color-text-light);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.event-view-toggle__btn:not(:last-child) {
    border-right: 1px solid var(--color-border);
}

.event-view-toggle__btn:hover { background: var(--color-bg-light); }

.event-view-toggle__btn--active {
    background: var(--color-primary);
    color: #fff;
}

.event-view-toggle__btn--active:hover {
    background: var(--color-primary);
    color: #fff;
}

/* Card */
.event-timeline__card {
    display: block;
    text-decoration: none;
    color: inherit;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.event-timeline__card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    transform: translateY(-2px);
}

/* Image link */
.event-timeline__image-link {
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    position: relative;
}

.event-timeline__image {
    width: 100%;
    height: 100%;
}

.event-timeline__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.2s ease;
}

.event-timeline__card:hover .event-timeline__image img {
    transform: scale(1.05);
}

.event-timeline__image--placeholder {
    background: var(--color-bg-light);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

/* Body */
.event-timeline__body {
    padding: var(--spacing-md);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

/* Mobile : timeline linéaire à gauche */
@media (max-width: 47.9375em) {
    .event-timeline {
        padding-left: var(--spacing-lg);
        border-left: 2px solid var(--color-border);
        margin-left: var(--spacing-xs);
    }

    .event-timeline__year-marker {
        text-align: left;
        margin-left: calc(-1 * var(--spacing-lg) - 1px);
        padding-left: var(--spacing-lg);
        position: relative;
    }

    .event-timeline__year-marker::before {
        content: '';
        position: absolute;
        left: -0.4375rem;
        top: 50%;
        transform: translateY(-50%);
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: var(--color-primary);
        border: 2px solid #fff;
        box-shadow: 0 0 0 2px var(--color-primary);
    }

    .event-timeline__item::before {
        content: '';
        position: absolute;
        left: calc(-1 * var(--spacing-lg) - 0.1875rem);
        top: 1.25rem;
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: var(--color-border);
    }
}

/* Legacy — garder pour compatibilité */
.event-past__year {
    font-size: var(--font-size-lg);
    font-weight: 700;
    color: var(--color-text);
    margin: var(--spacing-xl) 0 var(--spacing-sm);
    padding-bottom: var(--spacing-xs);
    border-bottom: 2px solid var(--color-border);
}

.event-past__year:first-child { margin-top: 0; }

.event-past__item { border-bottom: 1px solid var(--color-border); }
.event-past__item:last-of-type { border-bottom: none; }

.event-past__link {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-sm);
    text-decoration: none;
    color: inherit;
    border-radius: var(--radius-sm);
    transition: background 0.15s ease;
}

.event-past__link:hover { background: var(--color-bg-light); }

.event-past__date {
    flex-shrink: 0;
    min-width: 10rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    padding-top: 0.125rem;
    line-height: var(--line-height-base);
}

.event-past__body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.event-past__title {
    display: block;
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--color-text);
    line-height: var(--line-height-tight);
}

.event-past__link:hover .event-past__title { color: var(--color-primary); }

.event-past__location {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
}

.event-past__arrow {
    flex-shrink: 0;
    color: var(--color-text-light);
    margin-top: 0.375rem;
    transition: color 0.15s ease, transform 0.15s ease;
}

.event-past__link:hover .event-past__arrow {
    color: var(--color-primary);
    transform: translateX(2px);
}

/* ── Responsive ── */
@media (max-width: 63.9375em) {
    .event-featured { grid-template-columns: 1fr; }
    .event-featured__image { max-height: 17.5rem; }
}

@media (max-width: 47.9375em) {
    .event-grid { grid-template-columns: 1fr; }
    .event-featured__title { font-size: 1.375rem; }
    .event-featured__details { flex-direction: column; gap: var(--spacing-xs); }

    .event-past__link { flex-direction: column; gap: var(--spacing-xs); }
    .event-past__date { min-width: auto; }
}

@media (max-width: 35.9375em) {
    .event-sidebar__inner { flex-direction: column; }
    .event-sidebar__section { min-width: 0; }
}

@media print {
    .event-sidebar, .event-main__header { display: none; }
    .event-layout { display: block; }
}

/* ══════════════════════════════════════════════════════════════
   /evenements — additions au refresh 2026-05-21
   ══════════════════════════════════════════════════════════════
   Le layout de la page (hero + sidebar + toolbar) vient désormais de
   `content.css` (pattern partagé avec /agenda /actualites /ressources).
   Les classes ci-dessous étendent uniquement la timeline ANCESU :

     - toggle vue (timeline ↔ grille)
     - badge "À venir" inline sur les cards timeline
     - chips thématiques sur les cards timeline
     - eyebrow textuel au-dessus des marqueurs d'année (« Type », « Mois »)
     - variante --upcoming sur l'item entier (bordure + ombrage discrets)
   ══════════════════════════════════════════════════════════════ */

/* Toggle vue (timeline / grille) — pill group discret injecté dans le
   slot `extras` du toolbar partagé, à droite du tri. Reprend le motif
   des chips de filtres pour rester homogène avec le reste de la barre. */
.evenements-view-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.1875rem;
    background: var(--color-bg-light, #f3f4f6);
    border: 1px solid var(--color-border);
    border-radius: 999px;
}

.evenements-view-toggle__btn {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.375rem 0.75rem;
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-text-light);
    background: transparent;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.evenements-view-toggle__btn:hover {
    color: var(--color-text);
}

.evenements-view-toggle__btn--active {
    background: #fff;
    color: var(--color-primary);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
}

.evenements-view-toggle__btn svg {
    flex-shrink: 0;
}

/* Badge "À venir" inline dans le header — petite pill orange pour
   renforcer l'identification visuelle quand on lit la card. Pas de
   bordure colorée sur la card elle-même : signal porté par le dot
   timeline et ce badge inline, suffisamment lisibles. */
.event-tl-card__badge {
    display: inline-block;
    padding: 0.0625rem 0.5rem;
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: 100px;
    line-height: 1.4;
}

.event-tl-card__badge--upcoming {
    background: var(--color-accent, #f6a724);
    color: #fff;
}

/* Chips thématiques sur les cards timeline — pills outline discrètes
   pour ne pas concurrencer le titre. Max 3 affichés côté Twig. */
.event-tl-card__tags {
    list-style: none;
    margin: 0.25rem 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}

.event-tl-card__tag {
    display: inline-flex;
    padding: 0.0625rem 0.5rem;
    border-radius: 100px;
    font-size: 0.625rem;
    font-weight: 600;
    background: var(--color-bg-light, #f3f4f6);
    color: var(--color-text-light);
    border: 1px solid var(--color-border);
}

/* ── Impression /evenements : dégradation vers texte simple ──
   Toggle vue, badges et chips deviennent du texte inline noir/blanc. */
@media print {
    .evenements-view-toggle {
        display: none;
    }

    .event-tl-card__badge {
        padding: 0;
        background: transparent;
        color: #000;
        font-size: 8.5pt;
        font-weight: 700;
        text-transform: none;
        letter-spacing: normal;
    }

    .event-tl-card__badge::before {
        content: '· ';
        font-weight: 400;
    }

    .event-tl-card__tags {
        gap: 0;
        font-size: 8.5pt;
        color: #000;
    }

    .event-tl-card__tag {
        padding: 0;
        background: transparent;
        border: 0;
        color: #000;
        font-size: 8.5pt;
        font-weight: 600;
    }

    .event-tl-card__tag::before {
        content: '· ';
        font-weight: 400;
    }

    .event-tl-card__tag:first-child::before {
        content: 'Thématiques : ';
        font-weight: 400;
    }
}

/* ══════════════════════════════════════════════════════════════
   Fiche événement « simple » (sans minisite) — sidebar blocs
   ══════════════════════════════════════════════════════════════
   Le layout `.article-single` (zones/article.css) porte la grille
   contenu + sidebar. Cette section ajoute uniquement les blocs
   propres à la fiche événement : nom + adresse du lieu, et bouton
   CTA d'inscription pleine largeur en sidebar.
   ══════════════════════════════════════════════════════════════ */

.event-single__panel {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.event-single__venue-name {
    margin: 0;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-text);
}

.event-single__venue-address {
    margin: 0;
    font-size: var(--font-size-xs);
    line-height: var(--line-height-base);
    color: var(--color-text-light);
}

/* CTA inscription : version pleine largeur dans la sidebar pour
   appeler à l'action sans noyer le visuel. */
.event-single__register-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    width: 100%;
}

/* ── Hero `_list_hero` variante `event` ─────────────────────────
   La fiche événement utilise une image de fond sur la card et
   n'a pas besoin du dégradé navy par défaut autour du breadcrumb.
   On annule donc le fond du hero parent et on accentue le radius
   de la card editoriale pour un visuel un peu plus marqué. */
.list-hero--event {
    background: var(--color-bg);
}

.list-hero--event .list-hero__container {
    border-radius: 1.5rem;
}

/* ── Section « À l'agenda également » en pied de fiche ──
   Reprend `.article-single__related` (article.css) pour la coquille
   externe ; ce bloc ne fait qu'ajouter le CTA aligné à droite vers
   /agenda. La grille interne réutilise `.content-list__grid--agenda`
   (agenda.css) pour conserver le rythme image-background. */
.event-single__related-cta {
    display: flex;
    justify-content: flex-end;
    margin: var(--spacing-lg) 0 0;
}

.event-single__related-link {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-primary);
    text-decoration: none;
    transition: gap 0.15s ease, color 0.15s ease;
}

.event-single__related-link:hover {
    color: var(--color-primary-dark, var(--color-primary));
    gap: 0.625rem;
}

/* ══════════════════════════════════════════════════════════════
   Accueil minisite (show) — landing page de l'événement

   Style landing percutant : grosses citations, gros nombres, cards
   avec shadow et hover lift, CTA gradient. Couleur de section prise
   sur `var(--section-color)` qui adapte automatiquement la palette
   selon le `body.section--*` (colloques rouge pour event minisite,
   etc.). Hero rendu par le layout `event-minisite.html.twig`.

   Sections :
     - status-bar : badge temporel + CTA pill rapide
     - excerpt : citation éditoriale grande typo + accent latéral
     - body : TipTap rendu via `|body|raw`
     - stats : très gros nombres (3xl), nu, séparateurs verticaux
     - section : eyebrow + titre éditorial + contenu
     - programme-preview : cards avec time chunk en section-color
     - speakers : cards avec avatar large + hover lift + shadow
     - cta-final : bandeau gradient avec gros bouton primary
   ══════════════════════════════════════════════════════════════ */

.show { background: white; }

.show .container {
    max-width: 56rem;
}

/* ── Status bar : badge + CTA rapide accolés ── */
.show__status-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-xl);
}

.show__status {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.3125rem 0.875rem;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.show__status--upcoming {
    background: var(--section-color);
    color: white;
}

.show__status--ongoing {
    background: #166534;
    color: white;
}

.show__status--past {
    background: var(--color-bg-light);
    color: var(--color-text-light);
}

.show__quick-cta {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.4375rem 1rem;
    border: 2px solid var(--section-color);
    border-radius: 999px;
    background: transparent;
    color: var(--section-color);
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-decoration: none;
    transition: background 150ms ease, color 150ms ease;
}

.show__quick-cta:hover {
    background: var(--section-color);
    color: white;
}

.show__quick-cta:focus-visible {
    outline: 2px solid var(--section-color);
    outline-offset: 2px;
}

/* ── Excerpt : grande citation éditoriale avec accent latéral ── */
.show__excerpt {
    position: relative;
    margin: 0 0 var(--spacing-2xl);
    padding: 0.5rem 0 0.5rem 1.5rem;
    border-left: 4px solid var(--section-color);
}

.show__excerpt p {
    margin: 0;
    font-size: clamp(1.125rem, 2vw, 1.375rem);
    line-height: 1.45;
    color: var(--color-text);
    font-weight: 500;
}

/* ── Body éditorial : prose, espacement supérieur sobre ── */
.show__body {
    margin-bottom: var(--spacing-2xl);
    font-size: var(--font-size-md);
    line-height: 1.65;
}

/* ── CTA inscription final : bandeau gradient section-color + gros bouton ── */
.show__cta-final {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--spacing-lg);
    margin: var(--spacing-2xl) 0 0;
    padding: var(--spacing-xl) var(--spacing-2xl);
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, var(--section-color) 0%, var(--color-primary) 100%);
    color: white;
    box-shadow: var(--shadow-lg);
}

.show__cta-text {
    flex: 1;
    min-width: 0;
}

.show__cta-eyebrow {
    margin: 0 0 0.25rem;
    font-size: 0.6875rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    opacity: 0.8;
}

.show__cta-title {
    margin: 0;
    font-size: clamp(1.25rem, 2.5vw, 1.625rem);
    font-weight: 700;
    color: white;
    line-height: 1.2;
}

.show__cta-hint {
    margin: 0.375rem 0 0;
    font-size: var(--font-size-sm);
    color: rgba(255, 255, 255, 0.85);
}

.show__cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.875rem 1.75rem;
    background: white;
    color: var(--section-color);
    border-radius: 999px;
    font-weight: 800;
    text-decoration: none;
    font-size: var(--font-size-base);
    transition: transform 150ms ease, box-shadow 150ms ease;
}

.show__cta-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
}

.show__cta-btn:focus-visible {
    outline: 3px solid white;
    outline-offset: 3px;
}

/* ── Print : status bar et CTA masqués, chapô en blockquote sobre ── */
@media print {
    .show__status-bar,
    .show__quick-cta,
    .show__cta-final { display: none; }
    .show__excerpt {
        border-left: 2px solid var(--color-text);
        padding: 0 0 0 0.4cm;
    }
}

/* ═════════════════════════════════════════════════════════════════════
   Appel à communications — liste d'appels + formulaire de soumission
   ═════════════════════════════════════════════════════════════════════ */

.contributions {
    padding: clamp(2rem, 4vw, 3rem) 0;
}

.contributions__container {
    max-width: 56rem;
}

.contributions__header {
    text-align: center;
    margin-bottom: 2rem;
}

.contributions__heading {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 0.5rem;
}

.contributions__lead {
    font-size: 1rem;
    line-height: 1.6;
    color: var(--color-text-light);
    margin: 0 auto;
    max-width: 36rem;
}

.contributions__empty {
    text-align: center;
    padding: 3rem 1rem;
    background: var(--color-surface-muted, #f8f8f8);
    border-radius: 0.75rem;
    color: var(--color-text-light);
}

.contributions__empty p {
    margin: 0.75rem 0 0;
    font-size: 0.95rem;
}

.contributions__breadcrumb {
    font-size: 0.875rem;
    color: var(--color-text-light);
    margin: 0 0 1.5rem;
}

.contributions__breadcrumb a {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dotted currentColor;
}

.contributions__breadcrumb a:hover {
    color: var(--section-color, var(--color-primary));
}

/* Grid d'index des appels */
.contributions__grid {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
}

.contributions-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.5rem;
    background: var(--color-surface, #fff);
    border: 1px solid var(--color-border);
    border-top: 3px solid var(--section-color, var(--color-primary));
    border-radius: 0.75rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    transition: box-shadow 0.15s, transform 0.15s;
}

.contributions-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    transform: translateY(-2px);
}

.contributions-card--closed {
    opacity: 0.7;
    border-top-color: var(--color-border);
}

.contributions-card--closed:hover {
    transform: none;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.contributions-card__header {
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 0.75rem;
}

.contributions-card__type {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--section-color, var(--color-primary));
    margin-bottom: 0.5rem;
}

.contributions-card__title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0;
    line-height: 1.3;
}

.contributions-card__description {
    font-size: 0.95rem;
    line-height: 1.55;
    color: var(--color-text);
    margin: 0;
}

.contributions-card__meta {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.375rem 0.875rem;
    margin: 0;
    font-size: 0.875rem;
}

.contributions-card__meta dt {
    font-weight: 600;
    color: var(--color-text-subtle);
}

.contributions-card__meta dd {
    margin: 0;
    color: var(--color-text);
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

.contributions-card__footer {
    margin-top: auto;
    padding-top: 0.5rem;
    border-top: 1px solid var(--color-border);
}

.contributions-card__status {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.875rem;
    background: var(--color-surface-muted, #f8f8f8);
    color: var(--color-text-light);
    border-radius: 0.5rem;
    font-size: 0.875rem;
}

/* Dropdown nav minisite (onglet Contributions avec sous-menu) */
.minisite-nav__item--has-dropdown {
    position: relative;
}

.minisite-nav__caret {
    margin-left: 0.25rem;
    transition: transform 0.15s;
}

.minisite-nav__item--has-dropdown:hover .minisite-nav__caret,
.minisite-nav__item--has-dropdown:focus-within .minisite-nav__caret {
    transform: rotate(180deg);
}

.minisite-nav__dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 50;
    min-width: 18rem;
    margin: 0;
    padding: 0.5rem;
    list-style: none;
    background: var(--color-surface, #fff);
    border: 1px solid var(--color-border);
    border-top: 3px solid var(--section-color, var(--color-primary));
    border-radius: 0.5rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity 0.15s, transform 0.15s, visibility 0.15s;
}

.minisite-nav__item--has-dropdown:hover > .minisite-nav__dropdown,
.minisite-nav__item--has-dropdown:focus-within > .minisite-nav__dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.minisite-nav__dropdown-link {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    padding: 0.625rem 0.875rem;
    border-radius: 0.375rem;
    text-decoration: none;
    color: var(--color-text);
    transition: background 0.1s;
}

.minisite-nav__dropdown-link:hover,
.minisite-nav__dropdown-link:focus-visible {
    background: var(--color-surface-muted, #f8f8f8);
}

.minisite-nav__dropdown-title {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--color-text);
}

.minisite-nav__dropdown-meta {
    font-size: 0.75rem;
    color: var(--color-text-subtle);
}

/* Carte d'appel */
.call-card {
    background: var(--color-surface, #fff);
    border: 1px solid var(--color-border);
    border-radius: 0.75rem;
    padding: clamp(1rem, 3vw, 2rem);
    margin-bottom: 2rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.call-card__header {
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 1rem;
    margin-bottom: 1.5rem;
}

.call-card__title-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.call-card__title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--section-color, var(--color-text));
    margin: 0;
}

.call-card__type {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--section-color, var(--color-primary));
    background: var(--section-color-light, var(--color-surface-muted));
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
}

.call-card__dates {
    margin: 0.25rem 0 0;
    font-size: 0.875rem;
    color: var(--color-text-light);
}

.call-card__status {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin: 0.5rem 0 0;
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
    font-weight: 600;
    border-radius: 0.5rem;
}

.call-card__status--closed {
    background: var(--color-surface-muted, #f8f8f8);
    color: var(--color-text-light);
}

.call-card__description {
    font-size: 1rem;
    line-height: 1.6;
    color: var(--color-text);
    margin: 0 0 1rem;
}

.call-card__body {
    font-size: 0.95rem;
    line-height: 1.6;
    margin-bottom: 1.5rem;
}

.call-card__pdf {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 1.5rem;
    font-size: 0.9rem;
}

.call-card__pdf a {
    color: var(--section-color, var(--color-primary));
    text-decoration: underline;
}

/* Formulaire de soumission */
.call-card__form {
    margin-top: 1.5rem;
}

.call-card__fieldset {
    border: 1px solid var(--color-border);
    border-radius: 0.5rem;
    padding: 1.25rem;
    margin: 0 0 1.5rem;
}

.call-card__fieldset legend {
    padding: 0 0.5rem;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--section-color, var(--color-text));
}

.call-card__field {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin-bottom: 1rem;
}

.call-card__field:last-child {
    margin-bottom: 0;
}

.call-card__label {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--color-text);
}

.call-card__label em {
    color: var(--color-danger, #c62828);
    font-style: normal;
    margin-left: 0.25rem;
}

.call-card__hint {
    font-size: 0.8rem;
    color: var(--color-text-light);
    margin: 0.25rem 0 0;
}

.call-card__field input[type="text"],
.call-card__field input[type="email"],
.call-card__field input[type="number"],
.call-card__field input[type="date"],
.call-card__field input[type="url"],
.call-card__field textarea,
.call-card__field select {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    font-size: 0.95rem;
    font-family: inherit;
    background: var(--color-surface, #fff);
    color: var(--color-text);
    transition: border-color 0.15s, box-shadow 0.15s;
}

.call-card__field input[type="file"] {
    padding: 0.5rem 0;
    font-size: 0.875rem;
}

.call-card__field input:focus,
.call-card__field textarea:focus,
.call-card__field select:focus {
    outline: none;
    border-color: var(--section-color, var(--color-primary));
    box-shadow: 0 0 0 3px var(--section-color-light, rgba(0, 0, 0, 0.05));
}

.call-card__honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.call-card__regulation {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
    padding: 1rem 1.25rem;
    margin: 1.5rem 0 0;
    background: var(--section-color-light, var(--color-surface-muted));
    border-left: 3px solid var(--section-color, var(--color-primary));
    border-radius: 0.5rem;
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--color-text);
    cursor: pointer;
}

.call-card__regulation input[type="checkbox"] {
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    margin-top: 0.15rem;
    accent-color: var(--section-color, var(--color-primary));
}

.call-card__regulation em {
    color: var(--color-danger, #c62828);
    font-style: normal;
    margin-left: 0.15rem;
}

/* Styles ALTCHA partagés dans components/altcha-widget.css */

.call-card__actions {
    display: flex;
    justify-content: flex-end;
    margin: 1.5rem 0;
}

.call-card__legal {
    font-size: 0.8rem;
    color: var(--color-text-light);
    line-height: 1.5;
    margin: 0;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
}

/* ═════════════════════════════════════════════════════════════════════
   Page de consultation auteur d'une soumission
   ═════════════════════════════════════════════════════════════════════ */

.submission {
    padding: clamp(2rem, 4vw, 3rem) 0;
}

.submission__container {
    max-width: 48rem;
}

.submission__breadcrumb {
    font-size: 0.875rem;
    color: var(--color-text-light);
    margin: 0 0 1rem;
}

.submission__breadcrumb a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dotted currentColor;
}

.submission__breadcrumb a:hover {
    color: var(--section-color, var(--color-primary));
}

.submission__breadcrumb span {
    margin: 0 0.5rem;
    color: var(--color-text-subtle);
}

.submission__header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.submission__title {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 700;
    color: var(--color-text);
    margin: 0;
    flex: 1;
    min-width: 60%;
}

.submission__status {
    display: inline-flex;
    align-items: center;
    padding: 0.375rem 0.875rem;
    font-size: 0.875rem;
    font-weight: 600;
    border-radius: 999px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.submission__status--submitted { background: #e3f2fd; color: #1565c0; }
.submission__status--under_review { background: #fff3e0; color: #e65100; }
.submission__status--accepted { background: #e8f5e9; color: #2e7d32; }
.submission__status--rejected { background: #ffebee; color: #c62828; }
.submission__status--withdrawn { background: #f5f5f5; color: #757575; }

.submission__meta {
    font-size: 0.875rem;
    color: var(--color-text-light);
    margin: 0 0 2rem;
}

.submission__section {
    margin: 0 0 2rem;
    padding: 1.25rem;
    background: var(--color-surface, #fff);
    border: 1px solid var(--color-border);
    border-radius: 0.5rem;
}

.submission__section--review {
    background: var(--section-color-light, #fff3e0);
    border-color: var(--section-color, #e65100);
}

.submission__section-title {
    font-size: 0.875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--section-color, var(--color-text));
    margin: 0 0 1rem;
}

.submission__details {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 0.5rem 1rem;
    margin: 0;
}

.submission__details dt {
    font-weight: 600;
    color: var(--color-text-light);
    font-size: 0.875rem;
}

.submission__details dd {
    margin: 0;
    color: var(--color-text);
}

.submission__coauthors {
    list-style: none;
    padding: 0;
    margin: 0;
}

.submission__coauthors li {
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--color-border);
}

.submission__coauthors li:last-child {
    border-bottom: none;
}

.submission__attachments {
    list-style: none;
    padding: 0;
    margin: 0;
}

.submission__attachments li {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 0;
    border-bottom: 1px solid var(--color-border);
}

.submission__attachments li:last-child {
    border-bottom: none;
}

.submission__attachment-meta {
    margin-left: auto;
    font-size: 0.8rem;
    color: var(--color-text-light);
}

.submission__actions {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 2rem;
}

.submission__locked {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem;
    background: var(--color-surface-muted, #f8f8f8);
    border-radius: 0.5rem;
    font-size: 0.9rem;
    color: var(--color-text-light);
    margin-top: 2rem;
}

.submission__edit summary {
    cursor: pointer;
    user-select: none;
}

.submission__edit-form {
    margin-top: 1rem;
    padding: 1.25rem;
    background: var(--color-surface-muted, #f8f8f8);
    border-radius: 0.5rem;
}

.submission__field {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    margin-bottom: 1rem;
}

.submission__field input {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: 0.375rem;
    font-size: 0.95rem;
}

.submission__hint {
    font-size: 0.85rem;
    color: var(--color-text-light);
    margin: 0.5rem 0;
}

.submission__form-actions,
.submission__withdraw {
    display: flex;
    justify-content: flex-end;
    margin: 0;
}

@media (max-width: 600px) {
    .submission__details {
        grid-template-columns: 1fr;
    }
}

/* ══════════════════════════════════════════════════════════════
   Résumé d'une communication — minisite event

   Page focale /evenements/{slug}/resumes/{sessionSlug} : titre +
   métadonnées (jour, horaire, parcours, salle), accroche, corps
   TipTap, puis liste des intervenants (lien vers /biographies/{slug}
   si biographie publique consentie). Layout resserré sur 48rem pour
   le confort de lecture.
   ══════════════════════════════════════════════════════════════ */

.minisite-content__breadcrumb {
    /* Aligné sur la colonne `.resume` (48rem centrée) : le « Retour au
       programme » suit le bord gauche du contenu, pas le bord du conteneur. */
    max-width: 48rem;
    margin: 0 auto var(--spacing-lg);
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.minisite-content__breadcrumb a {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dotted currentColor;
}

.minisite-content__breadcrumb a:hover {
    color: var(--color-primary);
}

.resume {
    max-width: 48rem;
    margin-inline: auto;
}

.resume__header {
    margin-bottom: var(--spacing-xl);
}

/* Contexte de la session mère (communication = sous-session). */
.resume__parent {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin: 0 0 var(--spacing-sm);
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-text-light);
}

.resume__parent svg {
    flex-shrink: 0;
    color: var(--color-primary);
}

/* Badge de format de la session mère (plénière, atelier, table ronde…). */
.resume__parent-type {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    background: var(--color-primary-light, #e8eef5);
    color: var(--color-primary);
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.resume__header .minisite-content__page-title {
    margin-bottom: var(--spacing-md);
    line-height: 1.15;
    font-weight: 600;
}

.resume__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm) var(--spacing-md);
    margin: 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

.resume__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

.resume__meta-item svg {
    flex-shrink: 0;
    color: var(--color-primary);
}

.resume__intro {
    margin-top: var(--spacing-lg);
    padding-left: var(--spacing-md);
    border-left: 3px solid var(--color-primary-light);
}

.resume__intro p {
    margin: 0;
}

.resume__body {
    margin-top: var(--spacing-lg);
}

/* Titre de section (Replay, etc.) aligné sur le titre Intervenants. */
.resume__section-title {
    margin: 0 0 var(--spacing-md);
    font-size: var(--font-size-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
}

/* ── Replay intégré ── */
.resume__replay-player {
    margin: 0;
}

.resume__replay-fallback {
    margin: 0;
}

.resume__replay-link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.9rem;
    border: 1px solid var(--color-primary);
    border-radius: 999px;
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 600;
    font-size: var(--font-size-sm);
    transition: background 120ms ease, color 120ms ease;
}

.resume__replay-link:hover {
    background: var(--color-primary);
    color: #fff;
}

.resume__replay-link svg {
    flex-shrink: 0;
}

/* ── Intervenants ── */
.resume__speakers {
    margin-top: var(--spacing-2xl);
    padding-top: var(--spacing-xl);
    border-top: 1px solid var(--color-border);
}

.resume__speakers-title {
    margin: 0 0 var(--spacing-md);
    font-size: var(--font-size-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
}

.resume__speakers-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
}

.resume__speaker {
    display: flex;
    gap: var(--spacing-md);
    padding: var(--spacing-md);
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
}

.resume__speaker-avatar {
    flex: 0 0 auto;
    width: 4.5rem;
    height: 4.5rem;
    border-radius: 50%;
    object-fit: cover;
    background: var(--color-border);
}

.resume__speaker-body {
    flex: 1 1 auto;
    min-width: 0;
}

.resume__speaker-name {
    margin: 0;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem;
    font-weight: 600;
}

.resume__speaker-name a {
    color: var(--color-primary);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
    transition: color 120ms ease;
}

.resume__speaker-name a:hover {
    color: var(--color-primary-dark);
}

.resume__speaker-role {
    font-size: var(--font-size-xs);
    font-weight: 400;
    color: var(--color-text-light);
    text-transform: capitalize;
}

.resume__speaker-presentation {
    margin: var(--spacing-2xs) 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text);
}

.resume__speaker-bio {
    margin: var(--spacing-xs) 0 0;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    line-height: 1.5;
}

.resume__speaker-bio.prose-content {
    color: var(--color-text);
}

.resume__speaker-bio.prose-content > :first-child {
    margin-top: 0;
}

.resume__speaker-bio.prose-content > :last-child {
    margin-bottom: 0;
}

.resume__speaker-more {
    margin: var(--spacing-sm) 0 0;
    font-size: var(--font-size-sm);
}

.resume__speaker-more a {
    color: var(--color-primary);
    font-weight: 600;
    text-decoration: none;
}

.resume__speaker-more a:hover {
    text-decoration: underline;
}
