:root{
    --violet:#A42D88;
    --violet-dark:#8A2473;
    --violet-light:#B03A93;

    --rose:#E2007A;
    --turquoise:#13B7DE;
    --bleu:#13B7DE;
    --bleu-fonce:#002060;
    --vert:#58A88D;

    --fond:#f7f3f8;
    --texte:#1f2937;
    --gris:#6b7280;
    --blanc:#ffffff;
}

*{
    box-sizing:border-box;
}
    
body{
    margin:0;
    font-family:Arial, Helvetica, sans-serif;
    background:var(--fond);
}

header{
    background: linear-gradient(
        135deg,
        #7A1F67 0%,
        #A42D88 50%,
        #C247A1 100%
    );
    color:white;
    padding:12px 24px;
}


.header-inner{
    max-width:1180px;
    margin:auto;
    display:flex;
    justify-content:flex-start;
    align-items:center;
    gap:16px;
}


.header-left{
    display:flex;
    align-items:center;
    gap:16px;
}

.btn-college{
    background:rgba(255,255,255,0.18);
    color:white;
    border:1px solid rgba(255,255,255,0.35);
    padding:10px 16px;
    border-radius:999px;
    cursor:pointer;
    font-weight:800;
    font-size:14px;
    transition:.2s ease;
}

.btn-college:hover{
    background:rgba(255,255,255,0.28);
}

.btn-college-mobile{
    display:none;
}
    

.logo{
    width:62px;
    height:62px;
    object-fit:cover;
    background:white;
    border-radius:14px;
    padding:0;
    box-shadow:0 4px 12px rgba(0,0,0,0.18);
}
    
header h1{
    margin:0;
    font-size:30px;
    line-height:1.1;
}

header p{
    margin:4px 0 0;
    font-size:15px;
}

    
.container{
    max-width:1180px;
    margin:auto;
    padding:20px 24px;
}
    
.retour{
    display:inline-block;

    background:var(--vert);
    color:white;

    padding:12px 22px;

    border-radius:16px;

    border:1px solid rgba(63,143,118,0.35);

    text-decoration:none;
    font-weight:700;

    box-shadow:0 8px 18px rgba(88,168,141,0.38);

    transition:all .2s ease;

    margin-bottom:18px;
}

.retour:hover{
    background:#4E9A80;
    transform:translateY(-1px);
}

.accompagnement-card{
    background:white;
    border-left:5px solid var(--vert);
    border-radius:18px;
    padding:16px 20px;
    margin:0 0 22px;
    box-shadow:0 5px 15px rgba(31,41,55,0.08);
}

.accompagnement-card h2{
    margin:0 0 10px;
    color:var(--violet);
    font-size:21px;
}

.accompagnement-card p{
    margin:0 0 10px;
    color:var(--texte);
    font-size:15px;
    line-height:1.45;
}

.accompagnement-content{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:30px;
}

.accompagnement-texte{
    flex:1;
}

.accompagnement-action{
    flex-shrink:0;
}

.accompagnement-card .desktop-only{
    display:block;
}

.accompagnement-card .mobile-only{
    display:none;
}

.btn-adhesion{
    display:inline-block;
    margin-top:6px;
    background:var(--vert);
    color:white;
    text-decoration:none;
    font-weight:700;
    padding:11px 18px;
    border-radius:14px;
    border:1px solid rgba(63,143,118,0.35);
    box-shadow:0 6px 16px rgba(88,168,141,0.30);
}

.btn-adhesion:hover{
    background:#4E9A80;
}

.retour,
.btn-adhesion{
    transition:
        transform .18s ease,
        box-shadow .18s ease,
        background .18s ease;
}

.retour:hover,
.btn-adhesion:hover{
    transform:translateY(-3px);
    box-shadow:0 8px 22px rgba(31,41,55,0.16);
}

.retour:active,
.btn-adhesion:active{
    transform:scale(0.985);
}

@media(max-width:700px){
    .accompagnement-card{
        padding:12px 14px;
        margin:0 0 16px;
    }

    .accompagnement-card h2{
        font-size:17px;
        margin-bottom:8px;
        white-space:nowrap;
    }

    .accompagnement-card p{
        font-size:14px;
        line-height:1.35;
    }

    .accompagnement-card .desktop-only{
        display:none;
    }

    .accompagnement-card .mobile-only{
        display:block;
    }

    .btn-adhesion{
        width:100%;
        text-align:center;
        padding:11px 14px;
        margin-top:4px;
    }
}

.filtres{
    display:grid;
    grid-template-columns:repeat(5, minmax(180px, 1fr)) 46px;
    gap:14px;
    margin-bottom:18px;
    align-items:center;
}

.filtres select{
    padding:12px;
    border-radius:10px;
    border:1px solid #ddd;
    font-size:15px;
}

.reset-filtres{
    width:46px;
    height:46px;
    justify-self:center;

    border:none;
    border-radius:50%;

    background:white;
    color:var(--violet);

    font-size:22px;
    font-weight:bold;

    cursor:pointer;

    box-shadow:0 2px 8px rgba(0,0,0,0.15);

    transition:all .2s ease;
}

.reset-filtres:hover{
    transform:rotate(180deg);
    background:white;
    color:var(--violet);
}

.legend{
    display:flex;
    justify-content:center;
    gap:10px;
    flex-wrap:wrap;
    margin-bottom:24px;
}

.compteur-postes-haut{
    text-align:center;
    color:var(--violet);
    font-size:18px;
    font-weight:500;
    margin:-8px 0 18px;
}

.legend-line{
    display:flex;
    justify-content:center;
    gap:10px;
    flex-wrap:wrap;
}

.legend-line-bottom{
    justify-content:center;
}

.chip-gf{
    background:white;
    border:none;
    border-radius:999px;
    padding:8px 14px;
    font-weight:600;
    cursor:pointer;
    font-size:14px;
    box-shadow:0 2px 8px rgba(0,0,0,0.08);
}

.chip-gf.active{
    transform:translateY(-2px);
    box-shadow:0 8px 20px rgba(0,0,0,0.18);
    border:2px solid currentColor;
    background:#fff;
}

    .reset-gf{
    background:white;
    border:none;
    border-radius:999px;
    padding:8px 14px;
    cursor:pointer;

    color:var(--violet);

    font-size:14px;
    font-weight:600;

    box-shadow:0 2px 8px rgba(0,0,0,0.08);
}

    

.gf-mobile{
    display:none;
}

.gf-desktop{
    display:inline;
}
.legend button:hover{
    transform:translateY(-1px);
    box-shadow:0 4px 10px rgba(0,0,0,0.12);
}

.i{color:#1e4fa3;}
.h{color:var(--turquoise);}
.g{color:var(--violet);}
.f{color:var(--rose);}
.e{color:var(--vert);}

.d{color:var(--turquoise);}
.c{color:var(--violet);}
.b{color:var(--rose);}
.a{color:var(--vert);}

#map{
    height:390px;
    border-radius:20px;
    box-shadow:0 5px 15px rgba(0,0,0,0.08);
    margin-bottom:25px;
    overflow:hidden;
}

.dot-marker{
    width:11px;
    height:11px;
    border-radius:50%;
    border:2px solid white;
    box-shadow:0 1px 4px rgba(0,0,0,0.30);
}

.dot-i{background:#1e4fa3;}
.dot-h{background:var(--turquoise);}
.dot-g{background:var(--violet);}
.dot-f{background:var(--rose);}
.dot-e{background:var(--vert);}

.dot-d{background:var(--turquoise);}
.dot-c{background:var(--violet);}
.dot-b{background:var(--rose);}
.dot-a{background:var(--vert);}

.dot-new{
    box-shadow:0 0 0 3px rgba(229,0,126,0.18);
}

.dot-repub{
    box-shadow:0 0 0 3px rgba(107,43,138,0.18);
}

.popup-title{
    font-weight:bold;
    color:var(--violet);
    font-size:17px;
    margin-bottom:6px;
}

.popup-ville{
    font-size:13px;
    color:#555;
    margin-bottom:8px;
}

.popup-org{
    font-size:9px;
    line-height:1.15;
    letter-spacing:0.2px;
    color:#707070;
    margin:7px 0 8px;
}

.popup-gf{
    font-size:10px;
    color:#666;
    font-weight:600;
    margin-top:6px;
}

.popup-meta{
    display:inline-block;
    background:#f5eff8;
    padding:4px 8px;
    border-radius:8px;
    font-size:11px;
    color:#666;
    margin-top:6px;
}

.popup-link{
    display:inline-block;
    margin-top:10px;
    background:var(--violet);
    color:white !important;
    padding:7px 10px;
    border-radius:8px;
    text-decoration:none;
    font-weight:bold;
    font-size:12px;
}

.section-title{
    font-size:26px;
    color:var(--violet);
    margin-bottom:12px;
}

.tableau{
    background:white;
    border-radius:20px;
    overflow:hidden;
    box-shadow:0 5px 15px rgba(0,0,0,0.08);
}

table{
    width:100%;
    border-collapse:collapse;
}

th{
    background:var(--violet);
    color:white;
    padding:15px;
    text-align:left;
}

td{
    padding:15px;
    border-bottom:1px solid #eee;
}

tr.post-row{
    cursor:pointer;
}

tr.post-row:hover{
    background:#f7eef9;
}

.badge{
    padding:6px 12px;
    border-radius:999px;
    color:white;
    font-weight:bold;
}

.badge-i{background:#1e4fa3;}
.badge-h{background:var(--turquoise);}
.badge-g{background:var(--violet);}
.badge-f{background:var(--rose);}
.badge-e{background:var(--vert);}

.badge-d{background:var(--turquoise);}
.badge-c{background:var(--violet);}
.badge-b{background:var(--rose);}
.badge-a{background:var(--vert);}

.marker-cluster-small,
.marker-cluster-medium,
.marker-cluster-large{
    background-color:rgba(107,43,138,0.25);
}

.marker-cluster-small div,
.marker-cluster-medium div,
.marker-cluster-large div{
    background-color:var(--violet);
    color:white;
    font-weight:bold;
}

#map.cluster-i .marker-cluster-small,
#map.cluster-i .marker-cluster-medium,
#map.cluster-i .marker-cluster-large{
    background-color:rgba(30,79,163,0.25);
}

#map.cluster-i .marker-cluster-small div,
#map.cluster-i .marker-cluster-medium div,
#map.cluster-i .marker-cluster-large div{
    background-color:#1e4fa3;
}

#map.cluster-h .marker-cluster-small,
#map.cluster-h .marker-cluster-medium,
#map.cluster-h .marker-cluster-large,
#map.cluster-d .marker-cluster-small,
#map.cluster-d .marker-cluster-medium,
#map.cluster-d .marker-cluster-large{
    background-color:rgba(19,183,222,0.25);
}

#map.cluster-h .marker-cluster-small div,
#map.cluster-h .marker-cluster-medium div,
#map.cluster-h .marker-cluster-large div,
#map.cluster-d .marker-cluster-small div,
#map.cluster-d .marker-cluster-medium div,
#map.cluster-d .marker-cluster-large div{
    background-color:#13B7DE;
}

#map.cluster-g .marker-cluster-small,
#map.cluster-g .marker-cluster-medium,
#map.cluster-g .marker-cluster-large,
#map.cluster-c .marker-cluster-small,
#map.cluster-c .marker-cluster-medium,
#map.cluster-c .marker-cluster-large{
    background-color:rgba(164,45,136,0.25);
}

#map.cluster-g .marker-cluster-small div,
#map.cluster-g .marker-cluster-medium div,
#map.cluster-g .marker-cluster-large div,
#map.cluster-c .marker-cluster-small div,
#map.cluster-c .marker-cluster-medium div,
#map.cluster-c .marker-cluster-large div{
    background-color:#A42D88;
}

#map.cluster-f .marker-cluster-small,
#map.cluster-f .marker-cluster-medium,
#map.cluster-f .marker-cluster-large,
#map.cluster-b .marker-cluster-small,
#map.cluster-b .marker-cluster-medium,
#map.cluster-b .marker-cluster-large{
    background-color:rgba(226,0,122,0.25);
}

#map.cluster-f .marker-cluster-small div,
#map.cluster-f .marker-cluster-medium div,
#map.cluster-f .marker-cluster-large div,
#map.cluster-b .marker-cluster-small div,
#map.cluster-b .marker-cluster-medium div,
#map.cluster-b .marker-cluster-large div{
    background-color:#E2007A;
}

#map.cluster-e .marker-cluster-small,
#map.cluster-e .marker-cluster-medium,
#map.cluster-e .marker-cluster-large,
#map.cluster-a .marker-cluster-small,
#map.cluster-a .marker-cluster-medium,
#map.cluster-a .marker-cluster-large{
    background-color:rgba(88,168,141,0.25);
}

#map.cluster-e .marker-cluster-small div,
#map.cluster-e .marker-cluster-medium div,
#map.cluster-e .marker-cluster-large div,
#map.cluster-a .marker-cluster-small div,
#map.cluster-a .marker-cluster-medium div,
#map.cluster-a .marker-cluster-large div{
    background-color:#58A88D;
}


.modal{
    display:none;
    position:fixed;
    z-index:9999;
    left:0;
    top:0;
    width:100%;
    height:100%;
    background:rgba(0,0,0,0.45);
}

.modal-content{
    background:white;
    max-width:760px;
    margin:40px auto;
    padding:25px;
    border-radius:20px;
    max-height:85vh;
    overflow:auto;
}

.close{
    float:right;
    font-size:28px;
    cursor:pointer;
    color:var(--violet);
    font-weight:bold;
}

.detail-sticky-header{
    position:sticky;
    top:-25px;
    z-index:40;

    background:white;

    margin:-25px -25px 16px -25px;
    padding:25px 55px 6px 25px;

    border-bottom:1px solid #eeeeee;
    box-shadow:0 4px 12px rgba(0,0,0,0.06);
}

.close{
    position:sticky;
    top:0;
    z-index:50;
    background:white;
    border-radius:999px;
}

.modal h2{
    color:var(--violet);
    margin-top:0;
}

.modal-section{
    margin-top:18px;
    padding-top:14px;
    border-top:1px solid #eee;
}

.modal-section h3{
    color:var(--violet);
    margin-bottom:8px;
}

.btn-filtres-mobile{
    display:none;
}

.postes-cards{
    display:none;
}

.col-gf{
    width:70px;
    text-align:center;
    white-space:nowrap;
}

.col-ville{
    width:180px;
}

.col-date{
    width:150px;
    white-space:nowrap;
}

.pagination{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:12px;
    margin:18px 0 4px;
}

.pagination button{
    background:white;
    border:none;
    border-radius:999px;
    padding:9px 14px;
    color:var(--violet);
    font-weight:600;
    cursor:pointer;
    box-shadow:0 2px 8px rgba(0,0,0,0.08);
}

.pagination button:disabled{
    opacity:0.4;
    cursor:not-allowed;
}

.pagination span{
    color:#666;
    font-size:14px;
    font-weight:600;
}

.selected-post{
    background:#f2ecfa !important;
    box-shadow:inset 4px 0 0 var(--violet);
}

.selected-post-card{
    border:2px solid var(--violet) !important;
    background:#f7f1fb !important;
    box-shadow:0 8px 24px rgba(107,43,138,0.28) !important;
    transform:translateY(-2px);
}

.selected-card-h{
    border:2px solid var(--turquoise)!important;
    background:#eef9fc!important;
}

.selected-card-g{
    border:2px solid var(--violet)!important;
    background:#f7f1fb!important;
}

.selected-card-f{
    border:2px solid var(--rose)!important;
    background:#fdebf5!important;
}

.selected-card-e{
    border:2px solid var(--vert)!important;
    background:#edf7f3!important;
}

.selected-card-d{
    border:2px solid var(--turquoise)!important;
    background:#eef9fc!important;
}

.selected-card-c{
    border:2px solid var(--violet)!important;
    background:#f7f1fb!important;
}

.selected-card-b{
    border:2px solid var(--rose)!important;
    background:#fdebf5!important;
}

.selected-card-a{
    border:2px solid var(--vert)!important;
    background:#edf7f3!important;
}

.selected-h{
    background:#eef9fc !important;
    box-shadow:inset 4px 0 0 var(--turquoise);
}

.selected-g{
    background:#f2ecfa !important;
    box-shadow:inset 4px 0 0 var(--violet);
}

.selected-f{
    background:#fdebf5 !important;
    box-shadow:inset 4px 0 0 var(--rose);
}

.selected-e{
    background:#edf7f3 !important;
    box-shadow:inset 4px 0 0 var(--vert);
}

.selected-d{
    background:#eef9fc !important;
    box-shadow:inset 4px 0 0 var(--turquoise);
}

.selected-c{
    background:#f2ecfa !important;
    box-shadow:inset 4px 0 0 var(--violet);
}

.selected-b{
    background:#fdebf5 !important;
    box-shadow:inset 4px 0 0 var(--rose);
}

.selected-a{
    background:#edf7f3 !important;
    box-shadow:inset 4px 0 0 var(--vert);
}

footer{
    text-align:center;
    padding:24px 20px 40px;
    background:#f3f0f4;
    color:#64748b;
    font-size:13px;
    margin-top:40px;
}

.footer-links{
    margin-bottom:10px;
    font-size:13px;
}

.footer-links a{
    color:#A42D88;
    text-decoration:none;
    font-weight:500;
    margin:0 8px;
}

.footer-links a:hover{
    text-decoration:underline;
}

.footer-links span{
    color:#64748b;
}


.footer-main span{
    display:inline;
}

.footer-main span:not(:last-child)::after{
    content:" • ";
}


.message-aucun-poste{
    display:none;
    background:white;
    color:var(--violet);
    font-weight:700;
    text-align:center;
    padding:18px;
    border-radius:18px;
    box-shadow:0 4px 14px rgba(31,41,55,0.08);
    margin-top:14px;
}

@media(max-width:700px){
    .footer-main span{
        display:block;
        line-height:1.35;
    }

    .footer-main span:not(:last-child)::after{
        content:"";
    }
}

.footer-contact{
    margin:12px 0;
    text-align:center;
}

.footer-contact a{
    color:#6b7280;
    text-decoration:none;
    font-size:13px;
}

.footer-contact a:hover{
    color:var(--violet);
}


.footer-install{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    width:fit-content;
    margin:16px auto 0;
    color:#374151;
    text-decoration:none;
    font-size:13px;
    font-weight:600;
}

.footer-install:hover{
    color:var(--violet);
}

.footer-install-icon{
    width:18px;
    height:18px;
    border-radius:5px;
}

    
@media(max-width:700px){

    header{
    padding:16px;
}
    
    .header-inner{
    flex-direction:row;
    text-align:left;
    align-items:center;
    gap:12px;
}

.logo{
    width:52px;
    height:52px;
    padding:0;
    flex-shrink:0;
}

header h1{
    font-size:24px;
    line-height:1.08;
}

header p{
    font-size:14px;
}

    .container{
        padding:18px;
    }

    #map{
        height:420px;
    }

    table{
        font-size:14px;
    }

    th,td{
        padding:10px;
    }

    .filtres{
    grid-template-columns:1fr;
    gap:8px;
    margin-bottom:14px;
}

    .filtres select{
        width:100%;
        padding:10px 12px;
        font-size:14px;
        border-radius:10px;
    }
    
    .reset-filtres{
        width:38px;
        height:38px;
        font-size:19px;
        justify-self:end;
        margin-top:-4px;
    }
    
    .legend{
        display:flex;
        justify-content:center;
        gap:8px;
        margin-bottom:14px;
    }

    .legend-line{
    display:flex;
    justify-content:center;
    gap:8px;
    flex-wrap:wrap;
    }
    
    .legend-line-bottom{
        justify-content:center;
    }
    
    .chip-gf{
        width:38px;
        height:32px;
        padding:0;
        font-size:14px;
    }

    .reset-gf{
    width:38px;
    height:32px;
    padding:0;
    }
    
    .gf-mobile{
        display:inline;
    }
    
    .gf-desktop{
        display:none;
    }


    .btn-filtres-mobile{
        display:block;
        width:100%;
        padding:12px;
        border:none;
        border-radius:12px;
        background:white;
        color:var(--violet);
        font-size:16px;
        font-weight:600;
        margin-bottom:12px;
        box-shadow:0 2px 8px rgba(0,0,0,.08);
    }
    
    .panneau-filtres{
        display:none;
    }
    
    .panneau-filtres.ouvert{
        display:block;
    }
    
.tableau{
    display:none;
}

.postes-cards{
    display:flex;
    flex-direction:column;
    gap:12px;
}

.poste-card{
    background:white;
    border-radius:16px;
    padding:12px;
    box-shadow:0 4px 14px rgba(0,0,0,0.08);
    cursor:pointer;
}
    
.poste-card-header{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:6px;
}

.poste-card-header strong{
    font-size:15px;
    line-height:1.25;
    color:#222;
}

.poste-card-line{
    font-size:13px;
    color:#555;
    line-height:1.25;
    margin-bottom:2px;
}

.poste-card-meta{
    font-size:12px;
    color:#777;
    margin-top:2px;
}

.poste-card-footer{
    display:flex;
    justify-content:space-between;
    align-items:center;
    margin-top:4px;
    font-size:12px;
    color:#777;
}

.poste-card-link{
    color:var(--violet);
    font-weight:600;
    white-space:nowrap;
}

    
}

.map-wrapper{
    position: relative;
}


.btn-reset-map{
    position: absolute;
    top: 15px;
    right: 15px;
    z-index: 1000;

    background: white;
    color: #6f2c91;

    border: none;
    border-radius: 25px;

    padding: 10px 16px;

    font-weight: 600;
    font-size: 14px;

    cursor: pointer;

    box-shadow: 0 2px 8px rgba(0,0,0,0.20);

    transition: all 0.2s ease;
}

.btn-reset-map:hover{
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.25);
}

@media(max-width:700px){
    .btn-reset-map{
        top:12px;
        right:12px;
        width:38px;
        height:38px;
        padding:0;
        font-size:16px;
        border-radius:50%;
    }
    
    .reset-map-text{
        display:none;
    }

    .section-title{
    font-size:24px;
    margin-bottom:12px;
}

.pagination{
    gap:8px;
    margin-top:14px;
}

.pagination button{
    padding:8px 10px;
    font-size:13px;
}

.pagination span{
    font-size:13px;
}

.leaflet-popup-content{
    width:min(68vw, 240px) !important;
}

.leaflet-popup-content-wrapper{
    padding:4px 18px 6px 4px;
}

.leaflet-popup-close-button{
    width:34px !important;
    height:34px !important;
    line-height:34px !important;
    right:8px !important;
    top:6px !important;
    font-size:24px !important;
}

.popup-title{
    font-size:16px;
    line-height:1.2;
    padding-right:28px;
}

.popup-ville{
    font-size:14px;
}

.popup-org{
    font-size:12px;
    line-height:1.2;
}

.popup-gf{
    font-size:13px;
}

.popup-meta{
    font-size:13px;
}

.popup-link{
    font-size:13px;
    padding:9px 13px;
}

.btn-college{
    display:none;
}

.btn-college-mobile{
    display:flex;
    align-items:center;
    justify-content:center;
    width:42px;
    height:42px;
    border-radius:50%;
    background:rgba(255,255,255,0.18);
    color:white;
    border:1px solid rgba(255,255,255,0.35);
    font-size:22px;
    cursor:pointer;
    flex-shrink:0;
}

}
    
.leaflet-popup-pane{
    z-index: 1100;
}

