:root{
    --ar20-primary:#80b900;
    --ar20-primary-dark:#5d8600;
    --ar20-primary-soft:#f4fae8;

    --ar20-blue:#2563eb;

    --ar20-bg:#eef1f5;
    --ar20-card:#ffffff;
    --ar20-text:#172033;
    --ar20-muted:#6b7280;
    --ar20-border:#e2e8f0;

    --ar20-shadow:
        0 12px 35px rgba(15,23,42,.055);
}

*{
    box-sizing:border-box;
}

html,
body{
    margin:0;
    padding:0;
}

body{
    font-family:
        Inter,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Arial,
        Helvetica,
        sans-serif;

    background:var(--ar20-bg);
    color:var(--ar20-text);
}

button,
input{
    font:inherit;
}

.ar20-page{
    width:min(1620px, calc(100% - 28px));
    margin:0 auto;
    padding:18px 0 50px;
}


/* ============================================================
   HEADER
============================================================ */

.ar20-header{
    background:#fff;
    border:1px solid var(--ar20-border);
    border-radius:15px;

    padding:24px 28px;

    box-shadow:var(--ar20-shadow);

    margin-bottom:14px;
}

.ar20-eyebrow{
    color:var(--ar20-primary-dark);
    font-size:11px;
    font-weight:900;
    letter-spacing:1.25px;
    margin-bottom:5px;
}

.ar20-header h1{
    margin:0;
    font-size:28px;
    line-height:1.1;
    letter-spacing:-.5px;
}

.ar20-header p{
    margin:8px 0 0;
    color:var(--ar20-muted);
    font-size:13px;
}


/* ============================================================
   ALERT
============================================================ */

.ar20-alert{
    border-radius:12px;
    padding:14px 16px;
    margin-bottom:14px;
}

.ar20-alert-error{
    background:#fff1f2;
    border:1px solid #fecdd3;
    color:#9f1239;
}


/* ============================================================
   FILTER
============================================================ */

.ar20-filter-card{
    background:#fff;
    border:1px solid var(--ar20-border);
    border-radius:15px;

    padding:18px;

    box-shadow:var(--ar20-shadow);

    margin-bottom:14px;
}

.ar20-filter-title{
    margin-bottom:14px;
}

.ar20-filter-title > div{
    display:flex;
    align-items:center;
    gap:10px;
}

.ar20-filter-title strong{
    display:block;
    font-size:14px;
}

.ar20-filter-title small{
    display:block;
    margin-top:2px;
    color:var(--ar20-muted);
    font-size:11px;
}

.ar20-filter-title-small{
    margin-bottom:10px;
}

.ar20-step{
    display:inline-flex;
    align-items:center;
    justify-content:center;

    width:27px;
    height:27px;

    border-radius:8px;

    background:var(--ar20-primary-soft);
    color:var(--ar20-primary-dark);

    font-weight:900;
}

.ar20-filter-layout{
    display:grid;
    grid-template-columns:minmax(620px,1.55fr) minmax(330px,.72fr);
    gap:16px;
    align-items:start;
}

.ar20-map-column{
    min-width:0;
}

.ar20-filter-column{
    min-width:0;
    border:1px solid var(--ar20-border);
    border-radius:12px;
    padding:15px;

    background:#fbfcfd;
    box-shadow:0 8px 24px rgba(15,23,42,.035);
}

.ar20-selection-card{
    background:#fff;
    border:1px solid var(--ar20-border);
    border-radius:10px;

    padding:13px 14px;

    margin-bottom:14px;
}

.ar20-selection-card > span{
    display:block;
    color:var(--ar20-muted);
    font-size:10px;
    text-transform:uppercase;
    font-weight:900;
    letter-spacing:.5px;
}

.ar20-selection-card > strong{
    display:block;
    font-size:22px;
    margin-top:2px;
}

.ar20-link-button{
    border:0;
    background:none;
    color:var(--ar20-blue);

    padding:0;
    margin-top:6px;

    font-size:11px;
    font-weight:800;

    cursor:pointer;
}

.ar20-field{
    margin-bottom:13px;
}

.ar20-field label{
    display:block;
    margin-bottom:5px;

    color:#334155;
    font-size:11px;
    font-weight:900;
}

.ar20-field input[type="text"],
.ar20-field input[type="number"]{
    width:100%;
    height:39px;

    border:1px solid #cbd5e1;
    border-radius:8px;

    padding:0 11px;

    outline:none;
    background:#fff;

    font-size:12px;
}

.ar20-field input:focus{
    border-color:var(--ar20-primary);

    box-shadow:
        0 0 0 3px rgba(128,185,0,.12);
}

.ar20-input-action{
    display:grid;
    grid-template-columns:1fr auto;
    gap:7px;
}

.ar20-input-action button{
    border:0;
    border-radius:8px;

    padding:0 13px;

    background:#334155;
    color:#fff;

    font-size:11px;
    font-weight:900;

    cursor:pointer;
}

.ar20-input-unit{
    position:relative;
}

.ar20-input-unit input{
    padding-right:45px !important;
}

.ar20-input-unit span{
    position:absolute;
    right:12px;
    top:50%;

    transform:translateY(-50%);

    color:var(--ar20-muted);
    font-size:11px;
    font-weight:800;
}

.ar20-range-line{
    display:grid;
    grid-template-columns:1fr auto;
    align-items:center;
    gap:10px;
}

.ar20-range-line input{
    width:100%;
    accent-color:var(--ar20-primary);
}

.ar20-range-line strong{
    min-width:68px;
    font-size:11px;
}

.ar20-divider{
    height:1px;
    background:var(--ar20-border);
    margin:16px 0;
}

.ar20-btn{
    border:0;
    border-radius:9px;

    padding:11px 16px;

    font-size:12px;
    font-weight:900;

    cursor:pointer;
}

.ar20-btn-primary{
    background:var(--ar20-primary);
    color:#fff;
}

.ar20-btn-primary:hover{
    background:var(--ar20-primary-dark);
}

.ar20-btn-full{
    width:100%;
}


/* ============================================================
   REAL FRANCE MAP
============================================================ */

.ar20-real-map-wrap{
    min-width:0;
}

.ar20-france-map{
    position:relative;

    width:100%;
    height:500px;

    border:1px solid var(--ar20-border);
    border-radius:14px;

    overflow:hidden;

    background:
        linear-gradient(180deg,#fbfdff 0%,#f4f7fa 100%);
}

.ar20-france-map .leaflet-control-attribution{
    font-size:8px;
}

.ar20-map-loading,
.ar20-map-error{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;

    width:100%;
    height:100%;

    padding:20px;

    text-align:center;

    color:var(--ar20-muted);

    font-size:12px;
    font-weight:700;
}

.ar20-map-error{
    color:#b91c1c;
}

.ar20-map-tooltip{
    font-size:11px;
}

.ar20-map-tooltip strong{
    display:block;
    margin-bottom:2px;
}

.ar20-map-tooltip span{
    color:#64748b;
}

.ar20-map-legend{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:6px;

    margin-top:9px;
}

.ar20-map-legend button{
    border:1px solid var(--ar20-border);
    border-radius:8px;

    padding:8px 5px;

    background:#fff;

    font-size:11px;
    font-weight:900;

    cursor:pointer;
}

.ar20-map-legend button:hover,
.ar20-map-legend button.is-active{
    border-color:var(--ar20-primary);
    background:var(--ar20-primary-soft);
    color:var(--ar20-primary-dark);
}

.ar20-map-caption{
    margin-top:7px;

    color:var(--ar20-muted);

    font-size:10px;
}


/* ============================================================
   CONTEXT
============================================================ */

.ar20-context-bar{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:15px;

    background:#172033;
    color:#fff;

    border-radius:11px;

    padding:11px 15px;
    margin-bottom:10px;
}

.ar20-context-bar > div:first-child{
    display:flex;
    align-items:center;
    gap:8px;
}

.ar20-context-bar span{
    font-size:10px;
    color:#aeb8c6;
}

.ar20-context-bar strong{
    font-size:12px;
}

.ar20-sample-quality{
    display:flex;
    align-items:center;
    gap:7px;
}

#ar20-quality-dot{
    display:inline-block;

    width:8px;
    height:8px;

    border-radius:50%;

    background:#94a3b8;
}


/* ============================================================
   KPI
============================================================ */

.ar20-kpi-grid{
    display:grid;
    grid-template-columns:repeat(6,1fr);

    gap:10px;

    margin-bottom:14px;
}

.ar20-kpi{
    background:#fff;

    border:1px solid var(--ar20-border);
    border-radius:11px;

    padding:13px 14px;

    box-shadow:var(--ar20-shadow);
}

.ar20-kpi > span{
    display:block;

    color:var(--ar20-muted);

    font-size:9.5px;
    font-weight:900;

    text-transform:uppercase;
}

.ar20-kpi > strong{
    display:block;

    font-size:21px;

    margin-top:6px;
}

.ar20-kpi > small{
    display:block;

    color:var(--ar20-muted);

    font-size:9.5px;

    margin-top:5px;
}

.ar20-kpi-accent{
    border-color:#d8e9b7;
    background:#fbfef5;
}

.ar20-kpi-accent > strong{
    color:var(--ar20-primary-dark);
}


/* ============================================================
   ANALYSIS SECTIONS
============================================================ */

.ar20-analysis-section{
    margin:18px 0;
}

.ar20-section-heading{
    margin-bottom:10px;
}

.ar20-section-heading > div{
    display:flex;
    align-items:center;
    gap:10px;
}

.ar20-section-heading h2{
    margin:0;

    font-size:17px;
}

.ar20-section-heading p{
    margin:2px 0 0;

    color:var(--ar20-muted);

    font-size:10px;
}

.ar20-section-badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;

    min-width:58px;
    height:34px;

    padding:0 10px;

    border-radius:9px;

    background:#eff6ff;
    color:#2563eb;

    font-size:12px;
    font-weight:900;
}

.ar20-section-badge-dh{
    background:#ecfdf5;
    color:#047857;
}


/* ============================================================
   CARDS / CHARTS
============================================================ */

.ar20-chart-grid{
    display:grid;
    gap:12px;
}

.ar20-chart-grid-two{
    grid-template-columns:repeat(2,minmax(0,1fr));
}

.ar20-card{
    background:#fff;

    border:1px solid var(--ar20-border);
    border-radius:12px;

    padding:14px;

    box-shadow:var(--ar20-shadow);

    min-width:0;
}

.ar20-card-wide{
    grid-column:1 / -1;
}

.ar20-card-heading{
    margin-bottom:10px;
}

.ar20-card-heading strong{
    display:block;
    font-size:13px;
}

.ar20-card-heading small{
    display:block;

    margin-top:2px;

    color:var(--ar20-muted);
    font-size:10px;
}

.ar20-chart-wrap{
    position:relative;
    height:285px;
}

.ar20-chart-large{
    height:335px;
}


/* ============================================================
   TABLE
============================================================ */

.ar20-table-wrap{
    width:100%;
    overflow:auto;

    border:1px solid var(--ar20-border);
    border-radius:9px;
}

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

.ar20-table th{
    padding:9px 10px;

    background:#f7faef;

    color:#475569;

    text-align:left;
    white-space:nowrap;

    font-size:9.5px;
    font-weight:900;

    text-transform:uppercase;
}

.ar20-table td{
    padding:9px 10px;

    border-top:1px solid var(--ar20-border);

    font-size:11px;
}


/* ============================================================
   METHODOLOGY
============================================================ */

.ar20-methodology{
    background:#fff;

    border:1px solid var(--ar20-border);
    border-radius:12px;

    padding:16px;

    margin-top:12px;

    box-shadow:var(--ar20-shadow);
}

.ar20-methodology p{
    color:#475569;

    font-size:10.5px;
    line-height:1.6;
}

.ar20-formulas{
    display:flex;
    flex-wrap:wrap;

    gap:8px;

    margin-top:9px;
}

.ar20-formulas code{
    display:inline-block;

    background:#f7faef;
    border:1px solid #dceabf;

    color:#365300;

    border-radius:7px;

    padding:7px 9px;

    font-size:10px;
}


/* ============================================================
   RESPONSIVE
============================================================ */

@media(max-width:1250px){

    .ar20-kpi-grid{
        grid-template-columns:repeat(3,1fr);
    }

    .ar20-map-legend{
        grid-template-columns:repeat(4,1fr);
    }

}


@media(max-width:1120px){

    .ar20-filter-layout{
        grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);
    }

    .ar20-france-map{
        height:460px;
    }

}

@media(max-width:900px){

    .ar20-filter-layout{
        grid-template-columns:1fr;
    }

    .ar20-chart-grid-two{
        grid-template-columns:1fr;
    }

    .ar20-card-wide{
        grid-column:auto;
    }

}


@media(max-width:700px){

    .ar20-page{
        width:calc(100% - 16px);
        padding-top:8px;
    }

    .ar20-header{
        padding:18px;
    }

    .ar20-header h1{
        font-size:23px;
    }

    .ar20-kpi-grid{
        grid-template-columns:repeat(2,1fr);
    }

    .ar20-france-map{
        height:430px;
    }

}


@media(max-width:450px){

    .ar20-kpi-grid{
        grid-template-columns:1fr;
    }

    .ar20-map-legend{
        grid-template-columns:repeat(2,1fr);
    }

    .ar20-context-bar{
        flex-direction:column;
        align-items:flex-start;
    }

}
