/* ==========================================
   CESU Archive — Annuaire clean & minimal
   ========================================== */

/* Header */
.cesu-archive__header {
    padding-top: var(--spacing-md);
}

.cesu-archive__title {
    font-size: 2rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 var(--spacing-xs);
    line-height: var(--line-height-tight);
}

.text-highlight--cesu {
    background: linear-gradient(transparent 60%, rgba(0, 150, 212, .18) 60%);
}

.cesu-archive__subtitle {
    font-size: var(--font-size-base);
    color: var(--color-text-light);
    margin: 0;
}

/* ==========================================
   Filter bar
   ========================================== */
.cesu-archive__filters {
    margin-bottom: var(--spacing-lg);
}

.cesu-archive__filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    align-items: center;
    padding: var(--spacing-md) 0;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
}

.cesu-archive__filter {
    position: relative;
}

.cesu-archive__filter--location {
    flex: 0 0 14rem;
    position: relative;
}

.cesu-archive__filter--search {
    flex: 1;
    min-width: 10rem;
}

.cesu-archive__input,
.cesu-archive__select {
    width: 100%;
    padding: .5rem .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: var(--font-size-sm);
    font-family: var(--font-family);
    background: #fff;
    transition: border-color var(--transition-fast);
    height: 2.375rem;
}

.cesu-archive__input:focus,
.cesu-archive__select:focus {
    outline: none;
    border-color: var(--section-cesu);
    box-shadow: 0 0 0 3px rgba(0, 150, 212, .12);
}

.cesu-archive__select:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Location input with icon */
.cesu-archive__location-wrapper {
    position: relative;
}

.cesu-archive__location-icon {
    position: absolute;
    left: .625rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--color-text-light);
    pointer-events: none;
    z-index: 1;
}

.cesu-archive__filter--location .cesu-archive__input {
    padding-left: 2rem;
    padding-right: 2rem;
}

.cesu-archive__location-spinner {
    position: absolute;
    right: .625rem;
    top: 50%;
    transform: translateY(-50%);
    width: 1rem;
    height: 1rem;
    border: 2px solid var(--color-border);
    border-top-color: var(--section-cesu);
    border-radius: 50%;
    animation: cesu-spin 0.6s linear infinite;
}

@keyframes cesu-spin {
    to { transform: translateY(-50%) rotate(360deg); }
}

/* Autocomplete */
.cesu-archive__autocomplete {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 20rem;
    background: #fff;
    border: 1px solid var(--color-border);
    border-top: none;
    border-radius: 0 0 var(--radius-md) var(--radius-md);
    box-shadow: var(--shadow-md);
    max-height: 12rem;
    overflow-y: auto;
    z-index: 200;
    list-style: none;
    margin: 0;
    padding: 0;
}

.cesu-archive__autocomplete-item {
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    font-size: var(--font-size-sm);
    display: flex;
    flex-direction: column;
    gap: 1px;
    transition: background-color var(--transition-fast);
}

.cesu-archive__autocomplete-item:hover,
.cesu-archive__autocomplete-item--active {
    background: var(--section-cesu-light);
}

.cesu-archive__autocomplete-ctx {
    color: var(--color-text-light);
    font-size: var(--font-size-xs);
    white-space: nowrap;
}

/* Geolocation button */
.cesu-archive__geolocate-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.375rem;
    height: 2.375rem;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    cursor: pointer;
    color: var(--color-text-light);
    flex-shrink: 0;
    transition: all var(--transition-fast);
}

.cesu-archive__geolocate-btn:hover {
    border-color: var(--section-cesu);
    color: var(--section-cesu);
    background: var(--section-cesu-light);
}

.cesu-archive__geolocate-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.cesu-archive__spinner-sm {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    border: 2px solid var(--color-border);
    border-top-color: var(--section-cesu);
    border-radius: 50%;
    animation: cesu-spin-center 0.6s linear infinite;
}

@keyframes cesu-spin-center {
    to { transform: rotate(360deg); }
}

/* Reset */
.cesu-archive__reset-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: .5rem .75rem;
    background: transparent;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: var(--font-size-xs);
    font-family: var(--font-family);
    color: var(--color-text-light);
    white-space: nowrap;
    transition: all var(--transition-fast);
}

.cesu-archive__reset-btn:hover {
    border-color: var(--section-cesu);
    color: var(--section-cesu);
    background: var(--section-cesu-light);
}

/* Geo messages */
.cesu-archive__geo-msg {
    font-size: var(--font-size-xs);
    margin: var(--spacing-xs) 0 0;
    padding-left: var(--spacing-md);
}

.cesu-archive__geo-msg--error { color: var(--color-danger); }
.cesu-archive__geo-msg--success { color: var(--color-success); }

/* ==========================================
   Layout 2 colonnes (carte + résultats)
   ========================================== */
.cesu-archive__layout {
    display: block;
}

.cesu-archive__layout--with-map {
    display: grid;
    grid-template-columns: 3fr 2fr;
    gap: var(--spacing-lg);
    align-items: start;
}

/* Map column — sticky on scroll, divider right */
.cesu-archive__map-col {
    position: sticky;
    top: var(--spacing-md);
    border-right: 1px solid var(--color-border);
    padding-right: var(--spacing-lg);
}

/* ==========================================
   Map (SVG inline + DOM-TOM insets)
   ========================================== */
.cesu-archive__map {
    background: #fff;
    border: none;
    border-radius: 0;
    overflow: visible;
    position: relative;
    box-shadow: none;
}

/* SVG map container */
.cesu-archive__svg-map {
    position: relative;
    width: 100%;
    background: #fff;
}

.cesu-archive__svg-map svg {
    display: block;
    width: 100%;
    height: auto;
}

/* Department paths — default fill #bfe5f4 */
.cesu-archive__svg-map .st0,
.cesu-archive__domtom-svg .st0,
.cesu-archive__idf-svg .st0 {
    fill: #bfe5f4 !important;
    cursor: pointer;
    transition: fill 0.15s ease;
}

/* Department labels — navy by default, white on hover/selected */
.cesu-archive__svg-map .st1,
.cesu-archive__domtom-svg .st1,
.cesu-archive__idf-svg .st1 {
    fill: #344b8d !important;
    transition: fill 0.15s ease;
}

.cesu-archive__svg-map g[data-code]:hover .st1,
.cesu-archive__domtom-svg g[data-code]:hover .st1,
.cesu-archive__idf-svg g[data-code]:hover .st1,
.cesu-archive__svg-map .cesu-map-path--selected .st1,
.cesu-archive__svg-map .cesu-map-path--hover .st1,
.cesu-archive__domtom-svg .cesu-map-path--selected .st1,
.cesu-archive__domtom-svg .cesu-map-path--hover .st1,
.cesu-archive__idf-svg .cesu-map-path--selected .st1,
.cesu-archive__idf-svg .cesu-map-path--hover .st1 {
    fill: #fff !important;
}

/* Hover on <g> — department turns navy blue */
.cesu-archive__svg-map g[data-code]:hover .st0,
.cesu-archive__domtom-svg g[data-code]:hover .st0,
.cesu-archive__idf-svg g[data-code]:hover .st0 {
    fill: #344b8d !important;
}

/* Region highlight (RESU) — bleu soutenu entre #bfe5f4 et navy */
.cesu-map-path--region .st0 {
    fill: #4a8fbf !important;
}

/* Region siblings hover — bleu intermédiaire */
.cesu-map-path--region-hover .st0 {
    fill: #6aabcf !important;
}

/* Region text labels — keep navy for readability on region blue */
.cesu-map-path--region .st1,
.cesu-map-path--region-hover .st1 {
    fill: #344b8d !important;
}

/* Selected department — bleu navy */
.cesu-map-path--selected .st0 {
    fill: #344b8d !important;
}

/* Hover on <g> via JS class */
.cesu-map-path--hover .st0 {
    fill: #344b8d !important;
}

/* Formation filter highlight — vert pour distinction */
.cesu-map-path--formation .st0 {
    fill: #2d9a5c !important;
}

.cesu-map-path--formation .st1 {
    fill: #fff !important;
}

/* SVG tooltip — fixed top-left block */
.cesu-map-tooltip {
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: 100;
    background: transparent;
    border-radius: var(--radius-sm, 4px);
    overflow: hidden;
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1;
    box-shadow: none;
    white-space: nowrap;
    max-width: 16rem;
    display: flex;
    flex-direction: column;
}

.cesu-map-tooltip__dept {
    display: block;
    background: #344b8d;
    color: #fff;
    padding: 5px 10px;
}

.cesu-map-tooltip__region {
    display: block;
    background: #4a8fbf;
    color: #fff;
    padding: 4px 10px;
    font-size: 0.6875rem;
    font-weight: 400;
}

/* Ile-de-France zoom inset — top right, no card */
.cesu-archive__idf {
    position: absolute;
    top: 0;
    right: 2rem;
    padding: 0;
    width: 6rem;
}

.cesu-archive__idf-svg svg {
    display: block;
    width: 100%;
    height: auto;
}

/* Force IDF label size to match metro visual size.
   Metro: viewBox 595, font 10px. IDF: viewBox 55, container 6rem (96px).
   IDF scale = 96/55 = 1.745. Target = 10 / 1.745 ≈ 5.7px */
.cesu-archive__idf-svg .st1 {
    font-size: 6.2px !important;
}

/* DOM-TOM insets — small, department-sized */
.cesu-archive__domtom {
    display: flex;
    gap: 1rem;
    justify-content: center;
    padding-top: 0.5rem;
}

.cesu-archive__domtom-item {
    flex: 0 0 auto;
    width: 3.5rem;
    position: relative;
    text-align: center;
    cursor: pointer;
}

.cesu-archive__domtom-code {
    display: block;
    font-size: 0.75rem;
    font-weight: 700;
    color: #344b8d;
    line-height: 1;
    margin-bottom: 2px;
}

.cesu-archive__domtom-svg {
    width: 100%;
    padding: 2px;
}

/* Hide the number label inside DOM-TOM SVGs (too small to read) */
.cesu-archive__domtom-svg .st1 {
    display: none;
}

.cesu-archive__domtom-svg svg {
    display: block;
    width: 100%;
    height: auto;
    max-height: 8rem;
}

/* ==========================================
   Toolbar (within list column)
   ========================================== */
.cesu-archive__toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--spacing-md);
}

.cesu-archive__toolbar-actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
}

.cesu-archive__toolbar-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    padding: .25rem .625rem;
    background: transparent;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: var(--font-size-xs);
    font-weight: 500;
    font-family: var(--font-family);
    color: var(--color-text-light);
    transition: all var(--transition-fast);
    flex-shrink: 0;
}

.cesu-archive__toolbar-btn:hover {
    background: var(--section-cesu-light);
    border-color: var(--section-cesu);
    color: var(--section-cesu);
}

.cesu-archive__toolbar-btn--active {
    background: var(--section-cesu);
    border-color: var(--section-cesu);
    color: #fff;
}

.cesu-archive__toolbar-btn--active:hover {
    background: #0077a8;
    color: #fff;
}

.cesu-archive__toolbar-btn svg {
    width: 14px;
    height: 14px;
}

/* Region groups */
.cesu-archive__region-group {
    border-bottom: 1px solid var(--color-border);
}

.cesu-archive__region-group:last-child {
    border-bottom: none;
}

.cesu-archive__region-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    background: #f8fafc;
    transition: background var(--transition-fast);
    user-select: none;
}

.cesu-archive__region-header:hover {
    background: #f1f5f9;
}

.cesu-archive__region-name {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--section-cesu);
    margin: 0;
    flex: 1;
}

.cesu-archive__resu-link {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: var(--font-size-xs);
    font-weight: 500;
    color: var(--section-cesu);
    text-decoration: none;
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    transition: background-color var(--transition-fast);
}

.cesu-archive__resu-link:hover {
    background: var(--section-cesu-light);
}

.cesu-archive__region-count {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    font-weight: 500;
}

.cesu-archive__region-chevron {
    color: var(--color-text-light);
    transition: transform var(--transition-fast);
    flex-shrink: 0;
}

.cesu-archive__region-chevron--open {
    transform: rotate(180deg);
}

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

.cesu-archive__sort-hint {
    font-weight: 400;
    font-style: italic;
}

/* ==========================================
   Loading / Empty
   ========================================== */
.cesu-archive__loading,
.cesu-archive__empty {
    text-align: center;
    padding: var(--spacing-2xl);
    color: var(--color-text-light);
}

.cesu-archive__spinner {
    width: 2rem;
    height: 2rem;
    border: 3px solid var(--color-border);
    border-top-color: var(--section-cesu);
    border-radius: 50%;
    animation: cesu-spin-center 0.6s linear infinite;
    margin: 0 auto var(--spacing-md);
}

.cesu-archive__empty svg {
    color: var(--color-border);
    margin-bottom: var(--spacing-md);
}

/* ==========================================
   Results list — clean, minimal rows
   ========================================== */
.cesu-archive__list {
    display: flex;
    flex-direction: column;
    max-height: 42rem;
    overflow-y: auto;
}

.cesu-archive__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-sm);
    border-bottom: 1px solid var(--color-border);
    border-radius: var(--radius-sm, 4px);
    color: var(--color-text);
    cursor: pointer;
    transition: background-color var(--transition-fast);
}

.cesu-archive__item:last-child {
    border-bottom: none;
}

.cesu-archive__item:hover {
    background: var(--section-cesu-light);
}

.cesu-archive__item--highlighted {
    background: var(--section-cesu-light);
}

.cesu-archive__item:hover .cesu-archive__item-details p,
.cesu-archive__item--highlighted .cesu-archive__item-details p {
    color: var(--color-text);
}

.cesu-archive__item:hover .cesu-archive__item-details svg,
.cesu-archive__item--highlighted .cesu-archive__item-details svg {
    opacity: 1;
    color: #344b8d;
}

.cesu-archive__item:hover .cesu-archive__item-links,
.cesu-archive__item--highlighted .cesu-archive__item-links {
    color: #344b8d !important;
}

.cesu-archive__item:hover .cesu-archive__item-email,
.cesu-archive__item--highlighted .cesu-archive__item-email {
    color: var(--color-text);
}

.cesu-archive__item--sibling {
    border-left: 3px solid var(--section-cesu);
    opacity: 0.85;
}

.cesu-archive__item--sibling:hover {
    opacity: 1;
}

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

.cesu-archive__item-title-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    margin-bottom: 1px;
}

.cesu-archive__item-title {
    font-size: var(--font-size-sm);
    font-weight: 500;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cesu-archive__item-title a {
    color: inherit;
    text-decoration: none;
}

.cesu-archive__item-title a:hover {
    text-decoration: underline;
}

.cesu-archive__item-details {
    margin-top: 2px;
}

.cesu-archive__item-details p {
    margin: 0;
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-xs);
    color: var(--color-text-secondary, #4b5563);
    line-height: 1.6;
}

.cesu-archive__item-details svg {
    flex-shrink: 0;
    color: #344b8d;
    opacity: 0.7;
}

.cesu-archive__item-contact {
    gap: var(--spacing-sm) !important;
}

.cesu-archive__item-email {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    color: var(--color-text-secondary, #4b5563);
    text-decoration: none;
}

.cesu-archive__item-email:hover {
    color: var(--section-cesu);
}

.cesu-archive__item-contact > span,
.cesu-archive__item-links > span {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}

.cesu-archive__item-links {
    gap: var(--spacing-sm) !important;
    font-weight: 500;
    color: var(--section-cesu) !important;
}

.cesu-archive__item-links a {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    color: inherit;
    text-decoration: none;
}

.cesu-archive__item-links a:hover {
    color: #344b8d;
}

.cesu-archive__item-badge {
    display: inline-block;
    padding: 1px 6px;
    background: var(--section-cesu-light);
    color: var(--section-cesu);
    font-size: 0.6875rem;
    font-weight: 600;
    border-radius: var(--radius-sm);
    white-space: nowrap;
    flex-shrink: 0;
}

.cesu-archive__item-location {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin: 2px 0 0;
}

.cesu-archive__item-location svg {
    flex-shrink: 0;
    color: var(--section-cesu);
    width: 12px;
    height: 12px;
}

.cesu-archive__item-region {
    color: var(--color-text-light);
    opacity: 0.7;
}

.cesu-archive__item-resu {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    margin: 2px 0 0;
}

.cesu-archive__item-resu svg {
    flex-shrink: 0;
    color: var(--section-cesu);
    width: 12px;
    height: 12px;
}

.cesu-archive__item-resu-label {
    font-weight: 600;
    color: var(--color-text);
}

.cesu-archive__item-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    flex-shrink: 0;
}

.cesu-archive__item-code {
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--color-text-light);
    font-variant-numeric: tabular-nums;
}

.cesu-archive__item-distance {
    font-size: var(--font-size-xs);
    font-weight: 600;
    color: var(--section-cesu);
}

/* ==========================================
   CESU Fiche — Clean editorial design
   ========================================== */

/* Header: title + subtitle */
.cesu-fiche__header {
    text-align: center;
    padding: var(--spacing-xl) 0 var(--spacing-2xl);
}

.cesu-fiche__subtitle {
    margin: var(--spacing-xs) 0 0;
    font-size: var(--font-size-lg);
    color: var(--color-text-light);
    font-weight: 400;
    line-height: var(--line-height-base);
}

.cesu-fiche__subtitle strong {
    font-weight: 600;
    color: var(--color-text);
}

/* Page grid: 3 columns */
.cesu-fiche__grid {
    display: grid;
    grid-template-columns: 13rem 1fr 10rem;
    gap: 0;
}

/* Left column: carte + coordonnées + horaires */
.cesu-fiche__left {
    position: sticky;
    top: calc(var(--header-height, 4rem) + var(--spacing-md));
    align-self: start;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-xl) var(--spacing-md) 0;
}

.cesu-fiche__locator {
    width: 100%;
}

.cesu-fiche__locator svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Center column: content */
.cesu-fiche__center {
    min-width: 0;
    padding: 0 var(--spacing-2xl);
}

/* Right column: navigation */
.cesu-fiche__right {
    position: sticky;
    top: calc(var(--header-height, 4rem) + var(--spacing-md));
    align-self: start;
    padding: var(--spacing-md) 0 var(--spacing-md) var(--spacing-lg);
}

/* Left column: contact card under map */
.cesu-fiche__left-contact {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    text-align: center;
    line-height: var(--line-height-base);
    width: 100%;
    min-width: 0;
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.cesu-fiche__left-estab {
    margin: 0;
    font-weight: 600;
    color: var(--color-text);
    font-size: var(--font-size-xs);
    line-height: var(--line-height-tight);
}

.cesu-fiche__left-addr {
    margin: 0;
}

.cesu-fiche__left-coord {
    margin: 0;
}

.cesu-fiche__left-coord a {
    color: var(--section-cesu);
    text-decoration: none;
    word-break: break-all;
}

.cesu-fiche__left-coord a:hover {
    text-decoration: underline;
}

.cesu-fiche__left-links {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--spacing-xs);
    margin-top: var(--spacing-xs);
    padding-top: var(--spacing-xs);
    border-top: 1px solid var(--color-border);
    width: 100%;
    min-width: 0;
}

.cesu-fiche__left-website {
    color: var(--section-cesu);
    text-decoration: none;
    font-size: var(--font-size-xs);
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: block;
    text-align: center;
}

.cesu-fiche__left-website:hover {
    text-decoration: underline;
    white-space: normal;
    word-break: break-all;
}

.cesu-fiche__left-social {
    display: flex;
    gap: var(--spacing-sm);
}

.cesu-fiche__left-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-light);
    transition: color var(--transition-fast);
}

.cesu-fiche__left-social a:hover {
    color: var(--section-cesu);
}

/* Horaires in left column — card style */
.cesu-fiche__left-hours {
    text-align: center;
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
}

.cesu-fiche__left-hours-title {
    margin: 0 0 var(--spacing-xs);
    font-size: var(--font-size-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--color-text-light);
}

.cesu-fiche__left-hours-text {
    margin: 0;
    font-size: var(--font-size-xs);
    line-height: var(--line-height-base);
    color: var(--color-text-light);
}

/* Tags */
.cesu-fiche__tags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.cesu-fiche__tag {
    display: inline-block;
    padding: 4px 12px;
    font-size: var(--font-size-xs);
    font-weight: 600;
    border-radius: var(--radius-full);
    background: var(--color-bg-light);
    color: var(--color-text-light);
}

.cesu-fiche__tag--esr {
    background: rgba(22, 163, 74, 0.08);
    color: #15803d;
    border: 1px solid rgba(22, 163, 74, 0.2);
}

/* Title */
.cesu-fiche__title {
    font-size: 2rem;
    font-weight: 700;
    color: var(--color-text);
    margin: 0;
    line-height: var(--line-height-tight);
}

.cesu-fiche__title-code {
    display: inline;
    background: linear-gradient(transparent 55%, rgba(0, 150, 212, .2) 55%);
    padding: 0 2px;
    margin-right: .25em;
}


/* Vertical navigation — card style */
.cesu-fiche__nav {
    display: flex;
    flex-direction: column;
    gap: 2px;
    background: var(--color-bg-light);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
}

.cesu-fiche__nav-link {
    display: block;
    padding: .4rem .75rem;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--color-text-light);
    text-decoration: none;
    border-radius: var(--radius-sm);
    transition: color var(--transition-fast), background var(--transition-fast);
}

.cesu-fiche__nav-link:hover {
    color: var(--section-cesu);
    background: var(--section-cesu-light);
}

.cesu-fiche__nav-link--active {
    color: #fff;
    font-weight: 600;
    background: var(--section-cesu);
}

/* See-more link at end of preview sections */
.cesu-fiche__see-more {
    margin-top: var(--spacing-sm);
    font-size: var(--font-size-sm);
}

.cesu-fiche__see-more a {
    color: var(--color-primary);
    text-decoration: none;
    font-weight: 500;
}

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

/* Empty state */
.cesu-fiche__empty {
    color: var(--color-text-light);
    font-style: italic;
    padding: var(--spacing-md) 0;
}

/* Contact tab grid */
.cesu-fiche__contact-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-xl);
}

.cesu-fiche__contact-block {
    margin-bottom: var(--spacing-md);
}

.cesu-fiche__contact-block h3 {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-text-light);
    text-transform: uppercase;
    letter-spacing: .03em;
    margin: 0 0 .25rem;
}

.cesu-fiche__contact-block p {
    margin: 0;
}

.cesu-fiche__contact-block a {
    color: var(--color-primary);
    text-decoration: none;
}

.cesu-fiche__contact-block a:hover {
    text-decoration: underline;
}

.cesu-fiche__contact-form h3 {
    font-size: var(--font-size-base);
    font-weight: 600;
    margin: 0 0 var(--spacing-md);
}

/* News full variant (actualités tab) */
.cesu-fiche__news--full .cesu-fiche__news-item {
    padding: var(--spacing-md) 0;
}

.cesu-fiche__news--full .cesu-fiche__news-body p {
    margin: .5rem 0 0;
    color: var(--color-text-light);
    font-size: var(--font-size-sm);
    line-height: var(--line-height-base);
}

/* Session full variant (formations tab) */
.cesu-fiche__session--full .cesu-fiche__session-desc {
    margin-top: .5rem;
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    line-height: var(--line-height-base);
}

/* Sections */
.cesu-fiche__section {
    margin-bottom: var(--spacing-2xl);
    padding-bottom: var(--spacing-2xl);
    border-bottom: 1px solid var(--color-border);
}

.cesu-fiche__section:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.cesu-fiche__heading {
    font-size: var(--font-size-xl);
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 var(--spacing-lg);
}

.cesu-fiche__prose {
    line-height: var(--line-height-base);
    color: var(--color-text);
    font-size: var(--font-size-base);
}

/* Region map */
/* Sessions / Formations */
.cesu-fiche__sessions {
    display: flex;
    flex-direction: column;
}

.cesu-fiche__session {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm) 0;
    border-bottom: 1px solid var(--color-border);
}

.cesu-fiche__session:last-child {
    border-bottom: none;
}

.cesu-fiche__session-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 3.25rem;
    background: var(--color-bg-light);
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    text-align: center;
}

.cesu-fiche__session-day {
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1;
    color: var(--color-text);
}

.cesu-fiche__session-month {
    font-size: 0.6875rem;
    color: var(--color-text-light);
    text-transform: uppercase;
}

.cesu-fiche__session-body {
    flex: 1;
    min-width: 0;
}

.cesu-fiche__session-title {
    font-size: var(--font-size-sm);
    font-weight: 500;
    margin: 0 0 2px;
}

.cesu-fiche__session-title a {
    color: var(--color-text);
    text-decoration: none;
}

.cesu-fiche__session-title a:hover {
    color: var(--section-cesu);
}

.cesu-fiche__session-meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    margin: 0;
}

.cesu-fiche__session-meta > span:not(:last-child)::after {
    content: '\00b7';
    margin-left: var(--spacing-xs);
    color: var(--color-border);
}

.cesu-fiche__session-actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-xs);
    flex-shrink: 0;
}

/* Documents */
.cesu-fiche__docs {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);
}

.cesu-fiche__doc {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    color: var(--color-text);
    text-decoration: none;
    font-size: var(--font-size-sm);
    transition: border-color var(--transition-fast), color var(--transition-fast);
}

.cesu-fiche__doc:hover {
    border-color: var(--section-cesu);
    color: var(--section-cesu);
}

.cesu-fiche__doc svg:first-child {
    flex-shrink: 0;
    color: var(--section-cesu);
}

.cesu-fiche__doc span {
    flex: 1;
}

.cesu-fiche__doc-dl {
    flex-shrink: 0;
    color: var(--color-text-light);
}

.cesu-fiche__doc:hover .cesu-fiche__doc-dl {
    color: var(--section-cesu);
}

/* OSM map */
.cesu-fiche__map-osm iframe {
    border: none;
    border-radius: var(--radius-lg);
    width: 100%;
    display: block;
}

.cesu-fiche__osm-link {
    margin-top: var(--spacing-xs);
    font-size: var(--font-size-xs);
    text-align: right;
}

.cesu-fiche__osm-link a {
    color: var(--color-text-light);
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.cesu-fiche__osm-link a:hover {
    color: var(--section-cesu);
}

/* News */
.cesu-fiche__news {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-md);
}

.cesu-fiche__news-item {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
    transition: box-shadow var(--transition-fast);
}

.cesu-fiche__news-item:hover {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.cesu-fiche__news-thumb img {
    width: 100%;
    height: 8rem;
    object-fit: cover;
    display: block;
}

.cesu-fiche__news-body {
    padding: var(--spacing-sm) var(--spacing-md);
}

.cesu-fiche__news-body time {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    display: block;
    margin-bottom: 2px;
}

.cesu-fiche__news-body h3 {
    font-size: var(--font-size-sm);
    font-weight: 500;
    margin: 0;
    line-height: var(--line-height-tight);
}

.cesu-fiche__news-body h3 a {
    color: var(--color-text);
    text-decoration: none;
}

.cesu-fiche__news-body h3 a:hover {
    color: var(--section-cesu);
}

/* Contacts */
.cesu-fiche__notice {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    font-style: italic;
    margin: 0 0 var(--spacing-sm);
}

.cesu-fiche__person {
    margin-bottom: var(--spacing-sm);
}

.cesu-fiche__person:last-child {
    margin-bottom: 0;
}

.cesu-fiche__person--private {
    opacity: 0.6;
}

.cesu-fiche__person-role {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--section-cesu);
    margin: 0 0 1px;
}

.cesu-fiche__person-name {
    font-weight: 500;
    margin: 0;
}

.cesu-fiche__person-fn {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    margin: 0;
}

/* Team grid */
.cesu-fiche__team {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: var(--spacing-md);
}

/* Chiffres clés */
.cesu-fiche__kpi {
    display: flex;
    gap: var(--spacing-xl);
}

.cesu-fiche__kpi-item {
    display: flex;
    flex-direction: column;
}

.cesu-fiche__kpi-value {
    font-size: var(--font-size-2xl);
    font-weight: 700;
    color: var(--section-cesu);
    line-height: 1.2;
}

.cesu-fiche__kpi-label {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
}

/* Contact form */
.cesu-fiche__form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
}

.cesu-fiche__form-required-notice {
    font-size: var(--font-size-xs);
    color: var(--color-text-light);
    font-style: italic;
    margin-bottom: var(--spacing-md);
}

.cesu-fiche__field-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-md);
}

.cesu-fiche__field-row--identity {
    grid-template-columns: 5.5rem 1fr 1fr;
}

.cesu-fiche__field-row .cesu-fiche__field {
    margin-bottom: var(--spacing-md);
}

.cesu-fiche__field select {
    width: 100%;
    padding: var(--spacing-xs) var(--spacing-sm);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    background: var(--color-bg-white);
    transition: border-color var(--transition-fast);
    appearance: auto;
}

.cesu-fiche__field select:focus {
    outline: none;
    border-color: var(--section-cesu);
    box-shadow: 0 0 0 2px rgba(0, 150, 212, 0.1);
}

.cesu-fiche__field-optional {
    font-weight: 400;
    font-style: italic;
    color: var(--color-text-light);
}

.cesu-fiche__contact-notice {
    font-size: var(--font-size-sm);
    color: var(--color-text-light);
    margin-bottom: var(--spacing-lg);
    line-height: var(--line-height-base);
}

.cesu-fiche__field {
    margin-bottom: var(--spacing-md);
}

.cesu-fiche__field label {
    display: block;
    font-size: var(--font-size-xs);
    font-weight: 500;
    color: var(--color-text-light);
    margin-bottom: 4px;
}

.cesu-fiche__field input,
.cesu-fiche__field textarea {
    width: 100%;
    padding: var(--spacing-xs) var(--spacing-sm);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    background: var(--color-bg-white);
    transition: border-color var(--transition-fast);
}

.cesu-fiche__field input:focus,
.cesu-fiche__field textarea:focus {
    outline: none;
    border-color: var(--section-cesu);
    box-shadow: 0 0 0 2px rgba(0, 150, 212, 0.1);
}

.cesu-fiche__field--checkbox label {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-sm);
    font-size: var(--font-size-xs);
    line-height: var(--line-height-base);
    color: var(--color-text-light);
    cursor: pointer;
}

.cesu-fiche__field--checkbox input[type="checkbox"] {
    width: auto;
    margin-top: 3px;
    flex-shrink: 0;
}

.cesu-fiche__field--checkbox a {
    color: var(--section-cesu);
    text-decoration: underline;
}

.cesu-fiche__contact-form button[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

.cesu-fiche__form-success {
    font-size: var(--font-size-sm);
    color: #15803d;
    margin: 0;
}

.cesu-fiche__form-error {
    font-size: var(--font-size-sm);
    color: #dc2626;
    margin: 0;
}

/* Badge variant for CESU (reuse) */
.badge--cesu {
    background-color: var(--section-cesu-light);
    color: #006a96;
}

/* ==========================================
   Custom dropdowns — base styles
   ========================================== */
.sort-dropdown {
    position: relative;
}

.sort-dropdown__trigger {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    padding: .35rem .75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-white);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--color-text);
    cursor: pointer;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    white-space: nowrap;
}

.sort-dropdown__trigger:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.sort-dropdown__trigger svg:first-child {
    flex-shrink: 0;
    color: var(--color-text-light);
}

.sort-dropdown__chevron {
    flex-shrink: 0;
    color: var(--color-text-light);
    transition: transform .2s ease;
}

.sort-dropdown__chevron.is-open {
    transform: rotate(180deg);
}

.sort-dropdown__menu {
    position: absolute;
    left: 0;
    top: calc(100% + .25rem);
    min-width: 10rem;
    padding: .25rem 0;
    margin: 0;
    list-style: none;
    background: var(--color-bg-white);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: 0 4px 12px rgba(0, 0, 0, .1);
    z-index: 50;
}

.sort-dropdown__option {
    display: block;
    width: 100%;
    padding: .4rem .75rem;
    border: none;
    background: transparent;
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    color: var(--color-text);
    text-align: left;
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

/* ==========================================
   Custom dropdowns — CESU overrides
   ========================================== */
.sort-dropdown--cesu .sort-dropdown__trigger:hover {
    border-color: var(--section-cesu);
}

.sort-dropdown--cesu .sort-dropdown__trigger:focus-visible {
    border-color: var(--section-cesu);
    box-shadow: 0 0 0 3px rgba(0, 150, 212, .12);
}

.sort-dropdown--cesu .sort-dropdown__value {
    color: var(--section-cesu);
}

.sort-dropdown--cesu .sort-dropdown__option:hover {
    background: var(--section-cesu-light);
    color: var(--section-cesu);
}

.sort-dropdown--cesu .sort-dropdown__option.is-active {
    color: var(--section-cesu);
}

.sort-dropdown__menu--search {
    min-width: 14rem;
}

.sort-dropdown__search {
    padding: .375rem .5rem;
    border-bottom: 1px solid var(--color-border);
}

.sort-dropdown__search-input {
    width: 100%;
    padding: .3rem .5rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: var(--font-family);
    font-size: var(--font-size-sm);
    background: var(--color-bg-white);
    outline: none;
}

.sort-dropdown__search-input:focus {
    border-color: var(--section-cesu);
    box-shadow: 0 0 0 2px rgba(0, 150, 212, .1);
}

.sort-dropdown__options {
    list-style: none;
    margin: 0;
    padding: .25rem 0;
    max-height: 14rem;
    overflow-y: auto;
}

/* ==========================================
   Responsive
   ========================================== */

@media (max-width: 63.9375em) {
    .cesu-archive__title {
        font-size: 1.5rem;
    }

    /* Stack to single column on tablet */
    .cesu-archive__layout--with-map {
        grid-template-columns: 1fr;
    }

    .cesu-archive__map-col {
        position: static;
    }

    .cesu-archive__svg-map svg {
        max-height: 22rem;
    }

    .cesu-archive__list {
        max-height: none;
    }

    .cesu-archive__item {
        padding: var(--spacing-md) var(--spacing-lg);
    }

    .cesu-archive__item-title {
        font-size: var(--font-size-base);
    }

    .cesu-archive__filter-bar {
        padding: var(--spacing-sm);
    }

    .cesu-archive__filter--location {
        flex: 1 1 100%;
    }

    .cesu-archive__filter--search {
        flex: 1 1 100%;
    }

    .cesu-fiche__contact-grid {
        grid-template-columns: 1fr;
    }

}

@media (max-width: 47.9375em) {
    .cesu-archive__title {
        font-size: 1.375rem;
    }

    .cesu-archive__svg-map svg {
        max-height: 16rem;
    }

    .cesu-archive__domtom {
        flex-wrap: wrap;
        justify-content: center;
    }

    .cesu-archive__domtom-item {
        flex: 0 0 auto;
        width: 3rem;
    }

    .cesu-archive__domtom-map {
        height: 7rem;
    }

    .cesu-archive__item {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--spacing-xs);
        padding: var(--spacing-sm) var(--spacing-md);
    }

    .cesu-archive__item-meta {
        flex-direction: row;
        gap: var(--spacing-sm);
    }

    .cesu-archive__item-title {
        white-space: normal;
    }

    .cesu-fiche__title {
        font-size: 1.375rem;
    }

    .cesu-fiche__grid {
        grid-template-columns: 1fr;
    }

    .cesu-fiche__left {
        position: static;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        border-right: none;
        border-bottom: 1px solid var(--color-border);
        padding: var(--spacing-md) 0;
    }

    .cesu-fiche__locator { width: 6rem; }

    .cesu-fiche__left-contact,
    .cesu-fiche__left-hours { text-align: left; }

    .cesu-fiche__center {
        padding: var(--spacing-md) 0;
    }

    .cesu-fiche__right {
        position: static;
        border-left: none;
        border-top: 1px solid var(--color-border);
        padding: var(--spacing-md) 0;
    }

    .cesu-fiche__nav {
        flex-direction: row;
        flex-wrap: wrap;
        border-top: none;
        padding-top: 0;
    }

    .cesu-fiche__team {
        grid-template-columns: 1fr;
    }

    .cesu-fiche__kpi {
        flex-direction: column;
        gap: var(--spacing-md);
    }

    .cesu-fiche__news {
        grid-template-columns: 1fr;
    }

    .cesu-fiche__session {
        flex-wrap: wrap;
        gap: var(--spacing-sm);
    }

    .cesu-fiche__session-actions {
        width: 100%;
        justify-content: flex-end;
    }
}

@media (max-width: 35.9375em) {
    .cesu-archive__filter-bar {
        flex-direction: column;
    }

    .cesu-archive__filter,
    .cesu-archive__filter--location,
    .cesu-archive__filter--search {
        flex: 1 1 100%;
        width: 100%;
    }

    .cesu-archive__geolocate-btn {
        width: 100%;
    }

    .cesu-fiche__session-meta {
        flex-direction: column;
        gap: 2px;
    }

    .cesu-fiche__session-meta > span:not(:last-child)::after {
        display: none;
    }
}
