/** Pages publiques : annuaire, accueil, cartes et mises en page éditoriales. */
.listing-page {
    padding-top: clamp(38px, 6vw, 72px);
}
.listing-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: var(--s6);
    margin-bottom: clamp(22px, 3vw, 34px);
}
.listing-hero h1 {
    margin: 0;
    font-size: clamp(2.45rem, 5vw, 4.1rem);
    line-height: .96;
}
.listing-hero .page-lead {
    margin-bottom: 0;
}
.listing-search {
    margin-top: 0;
    margin-bottom: clamp(20px, 3vw, 34px);
}
.listing-results .results-toolbar {
    margin-top: 0;
}
.structures-list-page .structure-list,
.parcours-list-page .parcours-grid,
.home-latest-section .card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: clamp(18px, 2vw, 24px);
}
.structures-list-page .structure-card,
.parcours-list-page .card,
.home-latest-section .card {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
    grid-template-areas:
        "media"
        "body";
    gap: 0;
    min-height: 100%;
    height: auto;
    padding: 12px;
    overflow: hidden;
    border-radius: 24px;
    color: var(--text);
    text-decoration: none;
    background:
        linear-gradient(145deg, rgba(255,255,255,.94), rgba(245,251,250,.82)),
        rgba(255,255,255,.82);
    border: 1px solid rgba(255,255,255,.72);
    box-shadow:
        0 18px 42px rgba(8,42,48,.075),
        0 0 0 1px rgba(49,114,122,.055),
        inset 0 1px 0 rgba(255,255,255,.94);
    transition: transform var(--tb) var(--ease), box-shadow var(--tb) var(--ease), border-color var(--tb) var(--ease);
}
.structures-list-page .structure-card:hover,
.parcours-list-page .card:hover,
.home-latest-section .card:hover {
    transform: translateY(-3px);
    border-color: rgba(255,255,255,.86);
    box-shadow:
        0 22px 48px rgba(8,42,48,.105),
        0 0 0 1px rgba(49,114,122,.09),
        inset 0 1px 0 rgba(255,255,255,.96);
}
.structures-list-page .structure-card::before,
.structures-list-page .structure-card::after {
    display: none;
}
.structures-list-page .structure-card-banner,
.parcours-list-page .card-image-wrap,
.home-latest-section .card-image-wrap {
    grid-area: media;
    position: relative;
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: 500 / 240;
    overflow: hidden;
    border-radius: 19px;
    background: linear-gradient(135deg, rgba(76,170,182,.22), rgba(49,114,122,.16));
    box-shadow:
        0 13px 26px rgba(8,42,48,.085),
        inset 0 1px 0 rgba(255,255,255,.5);
}
.structures-list-page .structure-card-banner::after,
.parcours-list-page .card-image-wrap::after,
.home-latest-section .card-image-wrap::after {
    content: '';
    position: absolute;
    inset: auto 0 0;
    height: 44%;
    background: linear-gradient(180deg, transparent, rgba(9,38,44,.18));
    pointer-events: none;
}
.structures-list-page .structure-card-banner .structure-logo,
.structures-list-page .structure-card-banner .structure-logo-placeholder,
.parcours-list-page .card-image,
.parcours-list-page .card-image-placeholder,
.home-latest-section .card-image,
.home-latest-section .card-image-placeholder {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 0;
    box-shadow: none;
}
.structures-list-page .structure-card-banner .structure-logo,
.parcours-list-page .card-image,
.home-latest-section .card-image {
    transition: transform .38s var(--ease), filter .38s var(--ease);
}
.structures-list-page .structure-card:hover .structure-logo,
.parcours-list-page .card:hover .card-image,
.home-latest-section .card:hover .card-image {
    transform: scale(1.035);
    filter: saturate(1.04) contrast(1.02);
}
.structures-list-page .structure-card-banner .structure-logo-placeholder,
.parcours-list-page .card-image-placeholder,
.home-latest-section .card-image-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: clamp(3.3rem, 7vw, 5rem);
    font-weight: 800;
    letter-spacing: 0;
    text-shadow: 0 8px 22px rgba(8,42,48,.18);
}
.structures-list-page .structure-card-banner .badge,
.parcours-list-page .card-image-wrap .badge,
.home-latest-section .card-image-wrap .badge {
    position: absolute;
    z-index: 3;
    top: 12px;
    right: 12px;
    min-height: 26px;
    padding: 5px 10px;
    border: 0;
    border-radius: 999px;
    background: rgba(18,52,58,.72);
    color: #fff;
    box-shadow:
        0 8px 18px rgba(8,42,48,.14),
        inset 0 1px 0 rgba(255,255,255,.24);
    -webkit-backdrop-filter: blur(12px) saturate(1.12);
    backdrop-filter: blur(12px) saturate(1.12);
}
.structures-list-page .structure-card-body,
.parcours-list-page .card-body,
.home-latest-section .card-body {
    grid-area: body;
    position: relative;
    z-index: 2;
    align-self: start;
    display: grid;
    gap: 9px;
    min-width: 0;
    margin: -12px 12px 0;
    padding: 12px;
    border-radius: 18px;
    background:
        linear-gradient(145deg, rgba(255,255,255,.93), rgba(246,252,251,.76)),
        rgba(255,255,255,.82);
    box-shadow:
        0 12px 28px rgba(8,42,48,.075),
        inset 0 1px 0 rgba(255,255,255,.92);
    text-align: left;
}
.structures-list-page .structure-card-body h2,
.parcours-list-page .card-body h2,
.home-latest-section .card-body h3 {
    margin: 0;
    color: var(--primary-deep);
    font-size: clamp(1.14rem, 1.42vw, 1.42rem);
    line-height: 1.12;
    letter-spacing: 0;
}
.structures-list-page .structure-card-desc,
.parcours-list-page .card-body p,
.home-latest-section .card-body p {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    margin: 0;
    color: rgba(16,42,48,.70);
    font-size: .9rem;
    line-height: 1.46;
}
.structures-list-page .structure-card-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
    margin: -1px 0 0;
    padding: 0;
    border: 0;
}
.structures-list-page .structure-card-meta .tag {
    padding: 4px 9px;
    border: 0;
    border-radius: 999px;
    background: rgba(232,246,248,.64);
    color: var(--primary-dark);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.72);
    font-size: .76rem;
}
.structures-list-page .structure-card-meta .structure-city {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    max-width: 100%;
    color: rgba(16,42,48,.66);
    font-size: .82rem;
    font-weight: 600;
}
@media (max-width: 900px) {
    .structures-list-page .structure-list,
    .parcours-list-page .parcours-grid,
    .home-latest-section .card-grid {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 768px) {
    .listing-page {
        padding-top: 34px;
    }
    .listing-hero {
        display: block;
        margin-bottom: 20px;
    }
    .listing-hero h1 {
        font-size: clamp(2.15rem, 11vw, 3rem);
    }
}
@media (max-width: 560px) {
    .structures-list-page .structure-card,
    .parcours-list-page .card,
    .home-latest-section .card {
        grid-template-columns: 108px minmax(0, 1fr);
        grid-template-rows: 1fr auto;
        grid-template-areas:
            "media body"
            "cta cta";
        column-gap: 12px;
        row-gap: 10px;
        min-height: 0;
        padding: 12px;
        border-radius: 20px;
    }
    .structures-list-page .structure-card-banner,
    .parcours-list-page .card-image-wrap,
    .home-latest-section .card-image-wrap {
        width: 108px;
        aspect-ratio: 1 / 1.05;
        border-radius: 15px;
    }
    .structures-list-page .structure-card-body,
    .parcours-list-page .card-body,
    .home-latest-section .card-body {
        gap: 7px;
        margin: 0;
        padding: 2px 0 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }
    .structures-list-page .structure-card-body h2,
    .parcours-list-page .card-body h2,
    .home-latest-section .card-body h3 {
        font-size: 1.02rem;
        line-height: 1.17;
    }
    .structures-list-page .structure-card-desc,
    .parcours-list-page .card-body p,
    .home-latest-section .card-body p {
        font-size: .84rem;
        -webkit-line-clamp: 2;
    }
    .structures-list-page .structure-card-meta .tag,
    .structures-list-page .structure-card-meta .structure-city {
        font-size: .76rem;
    }
    .structures-list-page .structure-card-banner .badge,
    .parcours-list-page .card-image-wrap .badge,
    .home-latest-section .card-image-wrap .badge {
        top: 8px;
        right: 8px;
        min-height: 22px;
        padding: 4px 7px;
        font-size: .58rem;
    }
}
.hero {
    padding-top: clamp(34px, 4.5vw, 56px);
    padding-bottom: clamp(20px, 3vw, 34px);
}
.home-section {
    padding-top: clamp(12px, 1.8vw, 22px);
    padding-bottom: clamp(12px, 1.8vw, 22px);
}
.home-feature-section {
    padding-top: clamp(10px, 1.4vw, 18px);
    padding-bottom: clamp(10px, 1.4vw, 18px);
}
.home-feature-section .feature-grid {
    gap: clamp(14px, 2vw, 22px);
}
.home-feature-section .feature-card {
    min-height: 188px;
    padding: 12px;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr auto;
    grid-template-areas:
        "head"
        "text"
        "link";
    align-items: start;
    row-gap: var(--s3);
}
.home-feature-section .feature-card::after {
    display: none;
}
.feature-card-head {
    grid-area: head;
    display: flex;
    align-items: center;
    gap: var(--s3);
    min-width: 0;
}
.home-feature-section .feature-icon {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
}
.home-feature-section .feature-card h2 {
    margin: 0;
    font-size: clamp(1.05rem, 1.4vw, 1.24rem);
    line-height: 1.12;
}
.home-feature-section .feature-card p {
    grid-area: text;
    max-width: 58ch;
    margin: 0;
    font-size: .92rem;
    line-height: 1.52;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.home-feature-section .feature-link {
    grid-area: link;
    align-self: end;
    justify-self: start;
    margin-top: var(--s1);
    padding: 8px 13px;
    border-radius: 999px;
    background: rgba(223,244,246,.62);
    border: 1px solid rgba(49,114,122,.13);
    white-space: nowrap;
}
.home-latest-section,
.home-cta-section {
    padding-top: 34px;
}
.home-cta-section {
    padding-bottom: 44px;
}
.home-section .section-heading {
    margin-bottom: var(--s3);
}
.hero-photo {
    aspect-ratio: 1.48 / 1;
}
.hero h1 {
    font-size: clamp(2.65rem, 5vw, 4.55rem);
    margin-bottom: var(--s4);
}
.hero-lead {
    margin-bottom: var(--s5);
}
@media (min-width: 1025px) {
    .hero {
        min-height: calc(78svh - 86px);
        display: flex;
        align-items: center;
        padding: clamp(20px, 2.5vw, 36px) 0;
    }
    .hero .container {
        display: grid;
        grid-template-columns: minmax(0, 3fr) minmax(280px, 2fr);
        column-gap: clamp(34px, 5vw, 72px);
        row-gap: clamp(24px, 3.5vw, 40px);
        align-items: center;
    }
    .hero-copy {
        max-width: none;
        margin: 0;
        text-align: left;
    }
    .hero h1 {
        max-width: 680px;
        margin-bottom: var(--s5);
        font-size: clamp(3rem, 6vw, 5.45rem);
        line-height: .94;
    }
    .hero-lead {
        max-width: 610px;
        margin-left: 0;
        margin-right: 0;
        font-size: clamp(1.05rem, 1.45vw, 1.22rem);
    }
    .hero-search.search-toolbar {
        margin-left: 0;
        margin-right: 0;
        max-width: none;
    }
    .hero-photo-wrap {
        max-width: none;
        margin: 0;
        padding: 12px;
        border-radius: 30px;
        background:
            linear-gradient(135deg, rgba(255,255,255,.88), rgba(255,255,255,.34)),
            radial-gradient(360px 180px at 24% 0%, rgba(255,255,255,.66), transparent 68%),
            linear-gradient(145deg, rgba(49,114,122,.20), rgba(76,170,182,.07));
        -webkit-backdrop-filter: blur(22px) saturate(1.35);
        backdrop-filter: blur(22px) saturate(1.35);
        border: 1px solid rgba(255,255,255,.86);
        box-shadow: var(--sh-lg);
    }
    .hero-photo {
        aspect-ratio: 1.22 / 1;
        border-radius: 22px;
        box-shadow: none;
    }
    .float-card-1 {
        left: -26px;
        bottom: 10%;
    }
    .float-card-2 {
        right: -18px;
        top: 12%;
        bottom: auto;
    }
}
@media (max-width: 1024px) {
    .hero .container {
        display: block;
    }
    .hero-copy {
        text-align: center;
        max-width: 820px;
        margin: 0 auto;
    }
    .hero h1,
    .hero-lead,
    .hero-search.search-toolbar {
        margin-left: auto;
        margin-right: auto;
    }
    .hero-photo-wrap {
        max-width: 760px;
        margin: var(--s8) auto 0;
    }
}
@media (max-width: 900px) {
    .home-feature-section .feature-grid {
        grid-template-columns: 1fr;
    }
    .home-feature-section .feature-card {
        min-height: 0;
        grid-template-columns: 1fr;
        grid-template-areas:
            "head"
            "text"
            "link";
        align-items: start;
    }
}
@media (max-width: 768px) {
    .hero {
        padding-top: 30px;
        padding-bottom: 18px;
    }
    .home-feature-section .feature-card p {
        -webkit-line-clamp: unset;
        overflow: visible;
        display: block;
    }
    .home-feature-section .feature-link {
        justify-self: start;
    }
    .home-section {
        padding-top: 20px;
        padding-bottom: 20px;
    }
    .float-card-1 { bottom: 30%; }
    .float-card-2 { bottom: 10%; }
    .parcours-image {
        width: calc(100% + (var(--parcours-header-pad) * 2) - 24px);
        height: auto;
        max-height: 250px;
        margin:
            calc((var(--parcours-header-pad) - 12px) * -1)
            calc((var(--parcours-header-pad) - 12px) * -1)
            var(--s4);
    }
    .home-cta-section {
        padding-top: 18px;
        padding-bottom: 44px;
    }
}
.step-action-buttons { display: flex; flex-wrap: wrap; gap: var(--s2); margin: var(--s5) 0 var(--s3); padding-top: var(--s4); border-top: 1px solid rgba(49,114,122,.16); }
.timeline-content .step-external-links-title { margin: var(--s5) 0 var(--s2); font-size: .88rem; font-weight: 600; color: var(--primary); }
.step-external-links { display: block; }
.step-external-links > li { display: inline-block; max-width: 100%; margin: 0 var(--s2) var(--s2) 0; vertical-align: top; }
.step-external-links > li > a { display: inline-block; max-width: 100%; box-sizing: border-box; min-height: 44px; overflow-wrap: anywhere; }
.step-external-links > li > a .icon { vertical-align: middle; }
.structures-list-page .structure-card { overflow: visible; }
.similar-structures-section .related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.similar-structures-section .related-grid > li { min-width: 0; }
.similar-structures-section .related-card { height: 100%; box-sizing: border-box; padding: 18px; gap: 14px; }
.similar-structures-section .related-card-name { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; line-height: 1.45; }
.similar-structures-section .related-card-meta { margin-top: 6px; overflow-wrap: anywhere; }
.similar-structures-section .structure-logo, .similar-structures-section .structure-logo-placeholder { width: 60px; height: 60px; flex-shrink: 0; object-fit: cover; }
@media (max-width: 640px) { .similar-structures-section .related-grid { grid-template-columns: minmax(0, 1fr); } }
.structures-list-page .structure-card:has(.specialty-more[open]) { z-index: 3; }
.structures-list-page .specialty-pills {
    gap: 6px;
    margin: -3px 0 0;
    padding-bottom: 13px;
    border-bottom: 1px solid rgba(49,114,122,.14);
    align-items: center;
    min-width: 0;
    width: 100%;
    max-width: 100%;
}
.structures-list-page .structure-card-meta { gap: 8px 10px; }
.structures-list-page .specialty-pills .specialty-pill {
    min-height: 28px;
    padding: 4px 10px;
    font-size: .76rem;
    line-height: 1.35;
    box-shadow: 0 0 0 1px rgba(105,153,80,.18), inset 0 1px 0 rgba(255,255,255,.65);
}
.structures-list-page .specialty-pills .specialty-pill:hover { box-shadow: 0 0 0 1px rgba(105,153,80,.28); transform: none; }
.structure-detail-identity { display: grid; gap: 10px; align-content: center; }
.structure-detail-identity h1 { margin: 0; overflow-wrap: anywhere; }
.structure-detail-identity .structure-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; }
.structure-detail-identity .structure-meta .tag-type {
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    color: var(--text-secondary);
    font-size: .8rem;
    font-weight: 500;
    line-height: 1.45;
}
.structure-detail-identity .specialty-pills { margin: 8px 0 0; gap: 6px; align-items: center; padding: 0; border: 0; }
.structure-detail-identity .specialty-pills .specialty-pill { min-height: 30px; padding: 5px 12px; font-size: .8rem; line-height: 1.35; box-shadow: 0 0 0 1px rgba(105,153,80,.18), inset 0 1px 0 rgba(255,255,255,.65); }
.structure-detail-identity .specialty-pills .specialty-pill:hover { box-shadow: 0 0 0 1px rgba(105,153,80,.28); transform: none; }
@media (min-width: 561px) {
    .structures-list-page .structure-list.view-grid .structure-card-body h2 { text-align: center; }
    .structures-list-page .structure-list.view-grid .structure-card-meta { justify-content: center; text-align: center; }
    .structures-list-page .structure-list.view-grid .specialty-pills { justify-content: center; }
    .structures-list-page .structure-list.view-grid .structure-card-desc { text-align: left; }
}
.search-parcours-results { margin-bottom: 28px; }
.search-parcours-results > h2 { font-size: 1.15rem; color: var(--primary); margin-bottom: 16px; }
.search-parcours-results .related-card-body { display: grid; gap: 8px; min-width: 0; }
.search-parcours-results .related-card-body > span { font-size: .85rem; color: var(--text-secondary); }

/* Recherche unifiée : types explicites, provenance et résultats approchés séparés. */
.search-result-group + .search-result-group { margin-top: 2rem; }
.search-group-heading { font-size: 1.25rem; margin: 0 0 .5rem; }
.search-group-help { margin: 0 0 1.25rem; color: var(--text-muted, #475569); }

.search-result-card .structure-card-banner { gap: .75rem; }
.search-match-reason { color: var(--primary, #31727a); font-size: .85rem; font-weight: 600; margin: .75rem 0 0; overflow-wrap: anywhere; }
.search-result-card h2, .search-result-card .structure-card-desc { overflow-wrap: anywhere; }
.search-retry-links { display: flex; justify-content: center; flex-wrap: wrap; gap: .75rem; list-style: none; padding: 0; }
.search-retry-links a { display: inline-flex; align-items: center; min-height: 44px; padding: .5rem 1rem; border: 1px solid currentColor; border-radius: 2rem; }
.autocomplete-item { min-height: 44px; }
.autocomplete-detail { white-space: normal; overflow-wrap: anywhere; }
@media (max-width: 600px) {
    .autocomplete-item { flex-wrap: wrap; }
    .autocomplete-label { min-width: 0; overflow-wrap: anywhere; }
    .autocomplete-detail { flex-basis: 100%; margin-left: 2rem; text-align: left; }
}
.hero-search .autocomplete .autocomplete-item { min-height: 44px; }
.hero-search .autocomplete .autocomplete-detail { white-space: normal; max-width: 48%; }
@media (max-width: 600px) {
    .hero-search .autocomplete .autocomplete-detail { max-width: none; margin-left: 30px; }
}

/* Même groupement des actions sur les fiches structures et parcours. */
.structure-action-buttons.parcours-header-group {
    display: block;
    margin-top: var(--s5);
    padding-top: 0;
    border-top: 0;
}

/* Les informations suivent leur contenu, sans réserver de lignes vides. */
.structures-list-page .search-result-card .structure-card-body {
    align-self: stretch;
    grid-template-rows: auto auto 1fr;
    align-content: start;
    gap: 12px;
}
.search-card-identity {
    display: grid;
    align-content: start;
    gap: 9px;
    padding-bottom: 13px;
    border-bottom: 1px solid rgba(49,114,122,.14);
    min-width: 0;
}
.structures-list-page .search-card-identity .specialty-pills {
    border-bottom: 0;
    padding-bottom: 0;
}
.structures-list-page .search-result-card .search-match-reason { margin: 0; }
.structures-list-page .search-result-card .structure-card-desc { margin: 0; align-self: start; }
.structures-list-page .search-result-card .search-parcours-desc {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}
