:root{--background:#f3f5f7;--surface:#fff;--text:#17202a;--muted:#68727d;--primary:#176b55;--primary-hover:#105442;--border:#dce2e7;--danger:#b42318;--sidebar-width:240px}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--background)}a{color:inherit;text-decoration:none}button,input{font:inherit}.app-header{min-height:64px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:var(--surface);border-bottom:1px solid var(--border)}.app-brand{font-size:1.2rem;font-weight:700}.user-menu{display:flex;align-items:center;gap:16px}.app-shell{min-height:calc(100vh - 65px);display:grid;grid-template-columns:var(--sidebar-width) 1fr}.sidebar{padding:20px;background:#17202a;color:#fff}.sidebar nav{display:grid;gap:6px}.sidebar a{padding:11px 12px;border-radius:6px}.sidebar a:hover{background:rgba(255,255,255,.1)}.main-content{padding:30px}.page-header{margin-bottom:24px}.page-header h1{margin:0 0 8px}.page-header p{margin:0;color:var(--muted)}.statistics-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:20px}.stat-card{padding:24px;display:grid;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.stat-card strong{font-size:2rem}.stat-card span{color:var(--muted)}.guest-page{min-height:100vh;display:grid;place-items:center}.guest-container{width:min(420px,calc(100% - 32px))}.login-card{padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 45px rgba(0,0,0,.08)}.login-card h1{margin:0 0 8px}.login-card>p{margin:0 0 24px;color:var(--muted)}.form{display:grid;gap:18px}.form label{display:grid;gap:7px;font-weight:600}.form input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:6px}.button{display:inline-block;padding:10px 15px;border:0;border-radius:6px;background:var(--primary);color:#fff;cursor:pointer}.button:hover{background:var(--primary-hover)}.button-secondary{background:#49545f}.alert{margin-bottom:18px;padding:12px;border-radius:6px}.alert-error{background:#fee4e2;color:var(--danger)}@media(max-width:900px){.statistics-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:680px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.main-content{padding:20px}.statistics-grid{grid-template-columns:1fr}.user-menu span{display:none}}

/* Administration V2.3 */
.page-header-actions{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.panel{background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden}.table-wrapper{overflow:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:13px 15px;border-bottom:1px solid var(--border);text-align:left}.data-table th{background:#f7f9fa}.table-actions{text-align:right!important;white-space:nowrap}.inline-form{display:inline}.button-small{padding:7px 10px;font-size:.85rem}.button-danger{background:var(--danger)}.alert-success{background:#dcfae6;color:#087443}.form-wide{padding:24px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid-full{grid-column:1/-1}.form select,.form textarea{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff}.checkbox-row{display:flex;gap:20px;margin:20px 0}.checkbox-field{display:flex!important;flex-direction:row;align-items:center;gap:8px!important}.checkbox-field input{width:auto!important}.form-actions{margin-top:20px}.import-panel{padding:24px}.import-panel pre{padding:16px;overflow:auto;background:#17202a;color:#fff;border-radius:6px}@media(max-width:760px){.form-grid{grid-template-columns:1fr}.form-grid-full{grid-column:auto}.page-header-actions{flex-direction:column}}


/* Éditeur de polygones V2.4 */
.polygon-editor-layout{
    display:grid;
    grid-template-columns:minmax(300px,380px) minmax(0,1fr);
    gap:20px;
    align-items:stretch
}

.polygon-editor-fields{
    overflow:visible
}

.polygon-editor-fields .form-wide{
    padding:20px
}

.polygon-editor-map-panel{
    min-width:0;
    display:grid;
    grid-template-rows:auto minmax(560px,calc(100vh - 210px))
}

.polygon-editor-toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    padding:12px 16px;
    border-bottom:1px solid var(--border);
    background:#f7f9fa
}

.polygon-editor-toolbar span{
    color:var(--muted);
    font-size:.86rem
}

#polygon-editor-map{
    width:100%;
    height:100%;
    min-height:560px;
    background:#dfe6ec
}

#polygon-editor-map img,
#polygon-editor-map .leaflet-tile{
    max-width:none!important;
    max-height:none!important
}

.polygon-editor-status{
    padding:10px 12px;
    border-radius:6px;
    background:#eef2f5;
    color:var(--muted);
    font-size:.88rem
}

.polygon-editor-status.is-ready{
    background:#dcfae6;
    color:#087443
}

.polygon-editor-status.is-error{
    background:#fee4e2;
    color:var(--danger)
}

.polygon-editor-fields .form-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px
}

.leaflet-draw-toolbar a{
    box-sizing:content-box
}

@media(max-width:1050px){
    .polygon-editor-layout{
        grid-template-columns:1fr
    }

    .polygon-editor-map-panel{
        grid-template-rows:auto 600px
    }
}

@media(max-width:680px){
    .polygon-editor-map-panel{
        grid-template-rows:auto 520px
    }

    #polygon-editor-map{
        min-height:520px
    }

    .polygon-editor-toolbar{
        align-items:flex-start;
        flex-direction:column
    }
}


/* Éditeur de lieux V2.5 */
.page-header-buttons{
    display:flex;
    flex-wrap:wrap;
    gap:8px
}

.place-editor-layout{
    display:grid;
    grid-template-columns:minmax(360px,480px) minmax(0,1fr);
    gap:20px;
    align-items:stretch
}

.place-editor-fields{
    overflow:visible
}

.place-editor-fields .form-wide{
    padding:20px
}

.place-editor-map-panel{
    min-width:0;
    display:grid;
    grid-template-rows:auto minmax(620px,calc(100vh - 210px))
}

.place-editor-toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    padding:12px 16px;
    border-bottom:1px solid var(--border);
    background:#f7f9fa
}

.place-editor-toolbar span{
    color:var(--muted);
    font-size:.86rem
}

#place-editor-map{
    width:100%;
    height:100%;
    min-height:620px;
    background:#dfe6ec
}

#place-editor-map img,
#place-editor-map .leaflet-tile{
    max-width:none!important;
    max-height:none!important
}

.place-editor-status{
    padding:10px 12px;
    border-radius:6px;
    background:#eef2f5;
    color:var(--muted);
    font-size:.88rem
}

.place-editor-status.is-ready{
    background:#dcfae6;
    color:#087443
}

.place-editor-status.is-error{
    background:#fee4e2;
    color:var(--danger)
}

.photo-field{
    display:grid;
    gap:8px;
    margin-top:4px;
    padding:15px;
    border:1px solid var(--border);
    border-radius:8px;
    background:#f8fafb
}

.photo-field small{
    color:var(--muted)
}

.place-photo-preview{
    display:grid;
    gap:10px
}

.place-photo-preview img{
    width:100%;
    max-height:220px;
    object-fit:cover;
    border-radius:8px
}

.admin-filter-panel{
    margin-bottom:20px;
    padding:16px
}

.admin-filters{
    display:grid;
    grid-template-columns:2fr repeat(3,minmax(150px,1fr)) auto;
    gap:12px;
    align-items:end
}

.admin-filters label{
    display:grid;
    gap:6px;
    font-weight:600
}

.admin-filters input,
.admin-filters select{
    width:100%;
    min-height:42px;
    padding:9px 10px;
    border:1px solid var(--border);
    border-radius:6px;
    background:#fff;
    font:inherit
}

.admin-filter-actions{
    display:flex;
    gap:8px
}

.place-list-name{
    display:flex;
    align-items:center;
    gap:12px;
    min-width:220px
}

.place-list-name img{
    width:44px;
    height:44px;
    flex:0 0 44px;
    object-fit:cover;
    border-radius:7px
}

.place-list-name strong,
.place-list-name small{
    display:block
}

.place-list-name small{
    margin-top:3px;
    color:var(--muted)
}

@media(max-width:1200px){
    .admin-filters{
        grid-template-columns:repeat(2,minmax(0,1fr))
    }

    .admin-filter-actions{
        grid-column:1/-1
    }
}

@media(max-width:1050px){
    .place-editor-layout{
        grid-template-columns:1fr
    }

    .place-editor-map-panel{
        grid-template-rows:auto 600px
    }
}

@media(max-width:680px){
    .admin-filters{
        grid-template-columns:1fr
    }

    .admin-filter-actions{
        grid-column:auto;
        flex-wrap:wrap
    }

    .place-editor-map-panel{
        grid-template-rows:auto 500px
    }

    #place-editor-map{
        min-height:500px
    }

    .place-editor-toolbar{
        align-items:flex-start;
        flex-direction:column
    }
}

/* Territoires et IRIS V3.0.1 */
.territory-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.territory-section {
    padding: 22px;
    overflow: visible;
}

.territory-section h2 {
    margin: 0 0 20px;
}

.territory-section h3 {
    margin: 0;
}

.territory-section hr {
    margin: 26px 0;
    border: 0;
    border-top: 1px solid var(--border);
}

.territory-table {
    margin-top: 22px;
    border: 1px solid var(--border);
    border-radius: 8px;
}

.territory-section .form + .territory-table {
    margin-top: 24px;
}

.territory-section .data-table td small,
.data-table td > small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}

.territory-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}

.territory-summary span {
    padding: 5px 9px;
    border-radius: 999px;
    color: var(--muted);
    background: #eef2f5;
    font-size: .8rem;
}

.territory-section .form {
    padding: 18px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: #f8fafb;
}

.territory-section .form .button {
    justify-self: start;
}

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

/* V4.0 — Territoire */
.sidebar-section-title{display:block;margin:16px 14px 5px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;opacity:.58}.territory-actions{display:flex;gap:8px;flex-wrap:wrap}.territory-section{margin-bottom:20px}.territory-section>h2,.territory-section>p{margin-left:24px;margin-right:24px}.territory-section>h2{margin-top:22px}.territory-import-panel code{font-size:.9em}.territory-total{display:inline-block;padding:4px 8px;border-radius:999px;font-weight:700;font-size:.82rem}.territory-total.is-valid{background:#dcfae6;color:#087443}.territory-total.is-warning{background:#fff1d6;color:#8a5700}.territory-note{font-size:.9rem;color:#667085}.territory-recalculate-form{display:flex;gap:18px;align-items:end;flex-wrap:wrap}.territory-recalculate-form label{min-width:300px}.territory-inline-field,.territory-percentage-form{display:flex;align-items:center;gap:6px}.territory-inline-field input{max-width:110px}.territory-percentage-form input{width:90px;padding:7px 8px;border:1px solid var(--border);border-radius:6px}.data-table td small{display:block;margin-top:3px;color:#667085}.alert-error{background:#fee4e2;color:#b42318}@media(max-width:760px){.territory-recalculate-form{display:block}.territory-recalculate-form .button{margin-top:14px}.territory-actions{width:100%}}

/* V4.2 — contrôle géométrique IRIS / quartiers */
.territory-summary-v42{margin:0 24px 18px}.territory-row-warning{background:#fffaf0}.territory-warning-text{color:#b54708!important;font-weight:600}.territory-muted{color:var(--muted)}.territory-section .data-table form{margin:0}.territory-section .data-table .button-small{white-space:nowrap}

/* Sources de données V4.3 */
.data-source-summary{margin-bottom:18px;color:var(--muted)}
.data-table td small{display:block;margin-top:3px;color:var(--muted)}
.connector-status{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid var(--border);border-radius:999px;font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.status-ready,.status-success{background:#eef8f0;border-color:#afd6b8;color:#266b37}
.status-warning{background:#fff8e7;border-color:#e8cd82;color:#805e08}
.status-error{background:#fff0f0;border-color:#e2aaaa;color:#8b2727}
.status-never{background:#f3f4f6;color:var(--muted)}
.connector-check-panel form{margin-top:14px}

/* V4.4 — Catalogue Melodi & indicateurs CLEP */
.data-catalog-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 24px 18px}.data-catalog-stats>div{padding:14px;border:1px solid var(--border);border-radius:8px;background:#f8fafb}.data-catalog-stats strong{display:block;font-size:1.35rem}.data-catalog-stats span{display:block;margin-top:3px;color:var(--muted);font-size:.85rem}.data-catalog-filters{margin:0 24px 18px;grid-template-columns:2fr minmax(180px,1fr) auto}.catalog-compatible,.catalog-unavailable{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.78rem;font-weight:700}.catalog-compatible{background:#eef8f0;color:#266b37}.catalog-unavailable{background:#f3f4f6;color:var(--muted)}.indicator-toggle-form{margin:0!important;padding:0!important;border:0!important;background:transparent!important}@media(max-width:900px){.data-catalog-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.data-catalog-filters{grid-template-columns:1fr}}@media(max-width:560px){.data-catalog-stats{grid-template-columns:1fr}}

/* V4.6.3 — Audit géographique */
.geo-audit-cards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 24px 18px}.geo-audit-cards>div{padding:14px;border:1px solid var(--border);border-radius:8px;background:#f8fafb}.geo-audit-cards strong{display:block;font-size:1.35rem}.geo-audit-cards span{display:block;margin-top:3px;color:var(--muted);font-size:.82rem}.geo-audit-cards .audit-perfect{background:#eef8f0}.geo-audit-cards .audit-warning{background:#fff8e7}.geo-audit-cards .audit-critical{background:#fff0f0}.geo-audit-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:700}.geo-audit-status.perfect{background:#dcfae6;color:#087443}.geo-audit-status.warning{background:#fff1d6;color:#8a5700}.geo-audit-status.critical{background:#fee4e2;color:#b42318}.audit-row-warning{background:#fffdf7}.audit-row-critical{background:#fff8f7}.geo-audit-table tr.is-selected{outline:2px solid #98a2b3;outline-offset:-2px}.geo-audit-detail{padding-bottom:24px}.geo-audit-detail-header{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:20px 24px}.geo-audit-detail-header h2{margin:0}.geo-audit-detail-header p{margin:5px 0 0}.geo-audit-detail-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);gap:20px;margin:0 24px}.geo-audit-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.geo-audit-metrics>div{padding:12px;border:1px solid var(--border);border-radius:8px;background:#f8fafb}.geo-audit-metrics span{display:block;color:var(--muted);font-size:.82rem}.geo-audit-metrics strong{display:block;margin-top:4px;font-size:1.1rem}.geo-audit-map{height:480px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#eef1f4}@media(max-width:1100px){.geo-audit-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.geo-audit-detail-grid{grid-template-columns:1fr}}@media(max-width:700px){.geo-audit-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.geo-audit-detail-header{display:block}.geo-audit-detail-header form{margin-top:16px}.geo-audit-map{height:360px}}

/* Administration V5.26 — navigation */
.app-header-right{
    display:flex;
    align-items:center;
    gap:18px
}

.app-header-shortcuts{
    display:flex;
    align-items:center;
    gap:8px
}

.app-header-shortcuts .button{
    min-width:112px;
    text-align:center
}

.sidebar-section-title-first{
    margin-top:0
}

.sidebar a.is-active{
    background:rgba(255,255,255,.14);
    font-weight:700
}

@media(max-width:760px){
    .app-header{
        gap:14px;
        flex-wrap:wrap;
        padding-top:10px;
        padding-bottom:10px
    }

    .app-header-right{
        gap:10px;
        flex-wrap:wrap;
        justify-content:flex-end
    }

    .app-header-shortcuts .button{
        min-width:auto
    }
}

@media(max-width:680px){
    .app-header-shortcuts{
        order:-1
    }
}

/* V5.27 — gestion unifiée des indicateurs INSEE */
.alert-warning{background:#fff8e7;color:#805e08}.indicator-actions{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.indicator-actions form{margin:0!important}.indicator-variable-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.indicator-variable-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;margin-top:8px}.indicator-variable-columns .checkbox-row,.indicator-variable-list .checkbox-row{margin:8px 0;gap:8px;align-items:flex-start}.indicator-variable-columns>div{min-width:0}@media(max-width:1000px){.indicator-actions{flex-wrap:wrap}.indicator-variable-columns,.indicator-variable-list{grid-template-columns:1fr}}

.indicator-color-field{display:flex;align-items:center;gap:10px;min-height:42px}.indicator-color-field input[type=color]{width:64px;height:42px;padding:3px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer}.indicator-color-preview{display:inline-block;width:42px;height:42px;border:1px solid var(--border);border-radius:6px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}.indicator-color-field code{min-width:76px;font-weight:700}
