:root { font-family: Inter, system-ui, sans-serif; color: #15202b; background: #f4f7f9; }
* { box-sizing: border-box; }
body { margin: 0; }
header { padding: 2rem clamp(1rem, 4vw, 4rem); background: #fff; display: flex; gap: 2rem; align-items: center; justify-content: space-between; border-bottom: 1px solid #dbe3e8; }
h1, h2, p { margin-top: 0; }
h1 { margin-bottom: 0; font-size: clamp(1.7rem, 4vw, 2.8rem); }
.eyebrow { color: #355f73; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
button { border: 0; border-radius: .5rem; padding: .8rem 1rem; background: #164e63; color: white; font-weight: 700; cursor: pointer; }
button:focus { outline: 3px solid #f59e0b; outline-offset: 3px; }
main { padding: 2rem clamp(1rem, 4vw, 4rem); }
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
.kpis article { background: white; border: 1px solid #dbe3e8; border-radius: .8rem; padding: 1.2rem; }
.kpis span { display: block; color: #526674; }
.kpis strong { display: block; font-size: 2rem; margin-top: .4rem; }
section + section { margin-top: 2.5rem; }
.section-title { display: flex; justify-content: space-between; align-items: end; gap: 1rem; }
.table-wrap { overflow-x: auto; background: white; border: 1px solid #dbe3e8; border-radius: .8rem; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .85rem 1rem; text-align: left; border-bottom: 1px solid #e8eef1; }
th { background: #eef4f6; }
.status { border-radius: 999px; padding: .2rem .55rem; background: #e8eef1; white-space: nowrap; }
@media (max-width: 700px) { header { align-items: flex-start; flex-direction: column; } }
/* ==========================
   Carte Leaflet
========================== */

.map-section{
    margin:2rem 0;
}

#map{
    width:100%;
    height:500px;
    border-radius:12px;
    border:1px solid #d8dee6;
    overflow:hidden;
}
.map-popup {
    min-width: 240px;
}

.map-popup h3 {
    margin: 0 0 0.75rem;
    font-size: 1.1rem;
}

.map-popup p {
    margin: 0.35rem 0;
    line-height: 1.35;
}

.map-popup hr {
    border: 0;
    border-top: 1px solid #d8dee6;
    margin: 0.75rem 0;
}
/* ===========================
   Barre de filtres
=========================== */

.filters{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:1rem;
    margin-bottom:2rem;
}

.filters select{
    padding:.7rem .9rem;
    border:1px solid #d8dee6;
    border-radius:8px;
    background:#fff;
    font-size:.95rem;
    cursor:pointer;
    transition:border-color .2s;
}

.filters select:hover{
    border-color:#355f73;
}

.filters select:focus{
    outline:none;
    border-color:#164e63;
    box-shadow:0 0 0 3px rgba(22,78,99,.15);
}
/* =====================================================
   MODAL
===================================================== */

.modal{
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.45);

    display:flex;
    justify-content:center;
    align-items:center;

    z-index:5000;
}

.hidden{
    display:none;
}

.modal-content{

    background:white;

    width:min(900px,95vw);

    max-height:90vh;

    overflow:auto;

    border-radius:12px;

    padding:30px;

    box-shadow:0 10px 40px rgba(0,0,0,.25);

    position:relative;
}

.modal-close{

    position:absolute;

    right:20px;

    top:20px;

    border:none;

    background:none;

    font-size:30px;

    cursor:pointer;
}
.custom-marker-wrapper {
    background: transparent;
    border: none;
}

.custom-marker {
    width: 18px;
    height: 18px;
    border: 3px solid #ffffff;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}
.photo-gallery{
    display:flex;
    gap:12px;
    flex-wrap:wrap;
    margin-top:15px;
}

.observation-photo{

    width:160px;

    height:120px;

    object-fit:cover;

    border-radius:8px;

    border:1px solid #ccc;

    cursor:pointer;

    transition:.2s;
}

.observation-photo:hover{

    transform:scale(1.05);

    box-shadow:0 4px 10px rgba(0,0,0,.25);
}

/* Navigation et module Référentiel */
.main-nav { display:flex; gap:.75rem; padding:1rem clamp(1rem,4vw,4rem); background:#fff; border-bottom:1px solid #dbe3e8; }
.nav-button { background:#e8eef1; color:#164e63; }
.nav-button.active { background:#164e63; color:#fff; }
.reference-form { margin:1.5rem 0; padding:1.25rem; background:#fff; border:1px solid #dbe3e8; border-radius:.8rem; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.form-grid label { display:flex; flex-direction:column; gap:.4rem; font-weight:700; }
.form-grid input, .form-grid textarea { width:100%; padding:.75rem; border:1px solid #b9c7cf; border-radius:.5rem; font:inherit; }
.form-wide { grid-column:1 / -1; }
.checkbox-label { flex-direction:row !important; align-items:center; }
.checkbox-label input { width:auto; }
.form-actions { display:flex; gap:.75rem; margin-top:1rem; }
.secondary-button { background:#e8eef1; color:#164e63; }
.danger-button { background:#b42318; }
.small-button { padding:.5rem .7rem; font-size:.85rem; }
.action-cell { display:flex; gap:.5rem; flex-wrap:wrap; }
@media (max-width:700px) { .main-nav { flex-direction:column; } .form-grid { grid-template-columns:1fr; } }

.reference-toolbar {
  display: flex;
  gap: 1rem;
  align-items: end;
  margin: 1rem 0;
}

.reference-toolbar label {
  display: grid;
  gap: .4rem;
  min-width: 280px;
  font-weight: 600;
}

.action-buttons {
  white-space: nowrap;
}

.reference-toolbar select,
.form-grid select {
  width: 100%;
  padding: .75rem;
  border: 1px solid #b9c7cf;
  border-radius: .5rem;
  background: #fff;
  font: inherit;
}

/* Affectation des sites aux campagnes */
.assignment-panel {
  margin: 1.5rem 0;
  padding: 1.25rem;
  background: #fff;
  border: 1px solid #b9c7cf;
  border-radius: .8rem;
  box-shadow: 0 8px 24px rgba(21, 32, 43, .08);
}
.assignment-panel h3 { margin: 0 0 .35rem; font-size: 1.35rem; }
.assignment-toolbar {
  display: flex;
  gap: 1rem;
  align-items: end;
  justify-content: space-between;
  margin: 1rem 0;
  flex-wrap: wrap;
}
.assignment-toolbar label { display: grid; gap: .4rem; min-width: min(420px, 100%); font-weight: 700; }
.assignment-toolbar input {
  width: 100%;
  padding: .75rem;
  border: 1px solid #b9c7cf;
  border-radius: .5rem;
  font: inherit;
}
.assignment-actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.assignment-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: .75rem;
  max-height: 420px;
  overflow: auto;
  padding: .25rem;
}
.assignment-item {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .75rem;
  align-items: start;
  padding: .9rem;
  border: 1px solid #dbe3e8;
  border-radius: .65rem;
  background: #f8fafb;
  cursor: pointer;
}
.assignment-item:hover { border-color: #164e63; }
.assignment-item input { margin-top: .25rem; width: 1.1rem; height: 1.1rem; }
.assignment-item strong, .assignment-item small { display: block; }
.assignment-item small { color: #526674; margin-top: .25rem; }
.assignment-item.inactive { opacity: .65; }


/* =========================================================
   Interface terrain — Inspections 0.3.0
========================================================= */
.field-view{max-width:1500px;margin:0 auto}.field-hero{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1.25rem}.field-hero h2{font-size:clamp(1.8rem,4vw,2.5rem);margin:.15rem 0 .35rem}.field-hero p{max-width:760px}.field-refresh{min-height:48px}.inspection-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;margin:1rem 0 1.25rem}.inspection-kpis article{background:#fff;border:1px solid #d7e1e7;border-radius:1rem;padding:1rem 1.15rem;box-shadow:0 5px 18px rgba(23,55,69,.06)}.inspection-kpis span{display:block;color:#526674;font-weight:700}.inspection-kpis strong{display:block;font-size:2rem;margin-top:.25rem}.field-filters{display:grid;grid-template-columns:minmax(260px,1.5fr) minmax(230px,1fr);gap:1rem;align-items:end;margin:1rem 0}.field-filters label{display:grid;gap:.4rem;font-weight:700}.field-filters input,.field-filters select,.detail-actions select{width:100%;min-height:48px;border:1px solid #b9c7cf;border-radius:.7rem;padding:.7rem .8rem;background:#fff;font:inherit}.status-chips{grid-column:1/-1;display:flex;gap:.55rem;overflow:auto;padding:.15rem 0 .35rem}.status-chip{background:#e7eef2;color:#164e63;border:1px solid transparent;white-space:nowrap;min-height:44px}.status-chip.active{background:#164e63;color:#fff}.field-status{color:#526674;font-weight:700;margin:.75rem 0}.inspection-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:1rem}.inspection-card{position:relative;background:#fff;border:1px solid #d7e1e7;border-left:6px solid #8ca0aa;border-radius:1rem;padding:1.1rem;box-shadow:0 8px 22px rgba(23,55,69,.07);transition:transform .18s ease,box-shadow .18s ease}.inspection-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(23,55,69,.12)}.inspection-card.status-doing{border-left-color:#d97706}.inspection-card.status-done{border-left-color:#2563eb}.inspection-card.status-validated{border-left-color:#16803c}.inspection-card-top{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.status-badge{display:inline-flex;align-items:center;min-height:30px;padding:.3rem .65rem;border-radius:999px;background:#edf1f3;font-weight:800;font-size:.84rem}.status-badge.doing{background:#fff0d7;color:#8a4b00}.status-badge.done{background:#e9f1ff;color:#174ea6}.status-badge.validated{background:#e5f5ea;color:#11662e}.inspection-date{font-weight:700;color:#526674}.inspection-card h3{font-size:1.25rem;margin:1rem 0 .25rem}.inspection-code{margin:0 0 1rem;color:#526674;font-size:.88rem;overflow-wrap:anywhere}.inspection-meta{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:0}.inspection-meta div{background:#f5f8fa;border-radius:.7rem;padding:.75rem}.inspection-meta dt{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#607583;font-weight:800}.inspection-meta dd{margin:.2rem 0 0;font-weight:700}.inspection-card-actions{display:flex;gap:.65rem;margin-top:1rem}.inspection-card-actions button{flex:1;min-height:48px}.primary-field-button{background:#164e63;color:#fff}.field-empty{grid-column:1/-1;text-align:center;background:#fff;border:1px dashed #aebdc5;border-radius:1rem;padding:3rem 1rem}.inspection-detail{margin-top:1.2rem;background:#fff;border:1px solid #b9c7cf;border-radius:1rem;padding:1.25rem;box-shadow:0 16px 38px rgba(20,50,63,.15)}.inspection-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.inspection-detail-header h3{font-size:1.55rem;margin:.15rem 0}.detail-progress{margin:1rem 0}.detail-progress>span,.detail-progress>strong{display:inline-block;font-weight:800}.detail-progress>strong{float:right}.detail-progress>div{clear:both;height:10px;border-radius:999px;background:#e5ecef;overflow:hidden;margin-top:.55rem}.detail-progress i{display:block;height:100%;background:#16803c;border-radius:999px}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.detail-grid>div{background:#f5f8fa;border-radius:.75rem;padding:.85rem}.detail-grid span{display:block;font-size:.76rem;text-transform:uppercase;color:#607583;font-weight:800}.detail-grid strong{display:block;margin-top:.3rem}.detail-callout{margin:1rem 0;padding:1rem;border-radius:.8rem;background:#eef6f8;border-left:5px solid #164e63}.detail-callout p{margin:.3rem 0 0}.detail-actions{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap}.detail-actions label{display:grid;gap:.35rem;font-weight:700;min-width:240px}.detail-actions button{min-height:48px}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:900px){.inspection-kpis{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.field-hero{display:block}.field-refresh{width:100%;margin-top:.75rem}.field-filters{grid-template-columns:1fr}.inspection-cards{grid-template-columns:1fr}.inspection-card{padding:1rem}.inspection-meta{grid-template-columns:1fr}.inspection-card-actions{position:sticky;bottom:.5rem;background:#fff;padding-top:.65rem}.detail-grid{grid-template-columns:1fr}.detail-actions{display:grid}.detail-actions label,.detail-actions button{width:100%}.inspection-kpis article{padding:.8rem}.inspection-kpis strong{font-size:1.6rem}}

/* LOT 0.3.2 — parcours d'inspection guidé */
.journey-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px}.journey-summary>div{background:#f4f8fa;border:1px solid #dce7ec;border-radius:12px;padding:12px}.journey-summary span{display:block;color:#607486;font-size:.78rem;margin-bottom:4px}.journey-summary strong{display:block}.journey-step{background:#fff;border:1px solid #d9e4e9;border-radius:18px;padding:24px;box-shadow:0 12px 30px rgba(26,57,74,.08)}.journey-counter{margin:0 0 10px;color:#607486;font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}.journey-breadcrumb{display:flex;gap:8px;align-items:center;color:#19566c;font-weight:700;margin-bottom:16px}.journey-step h4{font-size:1.55rem;margin:0 0 10px}.journey-description{color:#536b78}.answer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0}.answer-button{min-height:58px;border:2px solid #d6e2e7;background:#f8fbfc;color:#193746;border-radius:14px;font-weight:800;cursor:pointer}.answer-button:hover,.answer-button.selected{border-color:#17627a;background:#e8f4f7}.answer-button[data-answer="non_conforme"].selected{border-color:#b74232;background:#fff0ed;color:#8c2e22}.answer-button[data-answer="conforme"].selected{border-color:#27835a;background:#edf9f3;color:#19623f}.journey-comment{display:block;font-weight:700}.journey-comment textarea{width:100%;box-sizing:border-box;margin-top:8px;resize:vertical}.journey-actions{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-top:18px}.journey-list{display:grid;gap:8px;margin-top:18px;max-height:360px;overflow:auto}.journey-list-item{display:grid;grid-template-columns:34px 1fr 24px;gap:10px;align-items:center;width:100%;text-align:left;border:1px solid #dce6ea;background:#fff;border-radius:12px;padding:10px;cursor:pointer}.journey-list-item>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#edf3f5;font-weight:800}.journey-list-item div{min-width:0}.journey-list-item strong,.journey-list-item small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.journey-list-item small{color:#687d88;margin-top:2px}.journey-list-item.active{border-color:#17627a;box-shadow:0 0 0 2px rgba(23,98,122,.12)}.journey-list-item.answered em{color:#27835a;font-weight:900}@media(max-width:720px){.journey-summary,.answer-grid{grid-template-columns:1fr}.journey-step{padding:16px}.journey-actions{flex-wrap:wrap}.journey-save{order:-1;width:100%}}
.card-progress{margin:16px 0}.card-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:.85rem}.card-progress-track{height:9px;background:#e4ecef;border-radius:999px;overflow:hidden;margin:7px 0}.card-progress-track i{display:block;height:100%;background:#17627a;border-radius:inherit}.card-progress small{color:#687d88}

/* LOT 0.3.3.1 — photos justificatives par critère */
.journey-photos{margin-top:18px;padding:16px;border:1px solid #d9e4e9;border-radius:14px;background:#f8fbfc}.journey-photos-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.journey-photos-header h5{margin:0;font-size:1rem}.photo-upload-label{display:inline-flex;align-items:center;gap:8px;padding:.7rem .9rem;border-radius:.6rem;background:#164e63;color:#fff;font-weight:800;cursor:pointer}.photo-upload-label input{position:absolute;opacity:0;pointer-events:none}.journey-photo-status{margin:.6rem 0 0;color:#536b78}.journey-photo-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:14px}.journey-photo-card{margin:0;background:#fff;border:1px solid #d9e4e9;border-radius:12px;overflow:hidden}.journey-photo-card img{display:block;width:100%;height:120px;object-fit:cover}.journey-photo-card figcaption{padding:9px}.journey-photo-card strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.82rem}.journey-photo-card small{display:block;color:#687d88;margin:3px 0 8px}.photo-delete-button{width:100%;padding:.5rem;background:#b42318}.journey-photo-empty{grid-column:1/-1;color:#687d88;margin:0}

/* LOT 0.3.3.2 — Observations automatiques */
.observation-cards{display:grid;gap:1rem;margin-top:1rem}.observation-card{background:#fff;border:1px solid #d6e1e7;border-left:5px solid #d97706;border-radius:14px;padding:1.15rem;box-shadow:0 8px 22px rgba(30,55,70,.06)}.observation-card-heading{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.observation-card-heading h3{margin:.55rem 0 .2rem}.observation-card-heading p{margin:0;color:#587080}.observation-path{display:flex;gap:.45rem;flex-wrap:wrap;background:#f2f6f8;border-radius:10px;padding:.8rem;margin:1rem 0}.observation-comment{font-size:1rem;line-height:1.5}.observation-actions{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:1rem;margin-top:1rem}.observation-actions label{font-weight:700}.observation-actions select{display:block;width:100%;margin-top:.35rem}.severity-badge{border-radius:999px;padding:.45rem .7rem;font-weight:800;background:#eef3f6}.severity-critique{background:#fee2e2;color:#991b1b}.severity-majeure{background:#ffedd5;color:#9a3412}.severity-mineure{background:#fef3c7;color:#854d0e}.severity-a_qualifier{background:#e5e7eb;color:#374151}.observation-photo-link{display:inline-block;font-weight:800;margin-top:.25rem}.observation-toolbar{grid-template-columns:repeat(2,minmax(220px,1fr))}.muted{color:#64748b}@media(max-width:700px){.observation-actions,.observation-toolbar{grid-template-columns:1fr}.observation-card-heading{display:block}.severity-badge{display:inline-block;margin-top:.7rem}}

/* OA45 0.3.4 — actions correctives */
.inspection-stats-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:.75rem}.inspection-stats-grid article{background:#fff;border:1px solid #d6e1e7;border-radius:12px;padding:1rem;box-shadow:0 5px 15px rgba(30,55,70,.05)}.inspection-stats-grid span{display:block;color:#506978;font-weight:700}.inspection-stats-grid strong{display:block;font-size:1.8rem;margin-top:.25rem}.observation-toolbar{grid-template-columns:repeat(3,minmax(180px,1fr))}.observation-actions{grid-template-columns:repeat(3,minmax(180px,1fr))}.observation-actions input,.observation-actions textarea{display:block;width:100%;margin-top:.35rem;box-sizing:border-box}.observation-note-label{grid-column:span 2}.observation-card-footer{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:1rem}.observation-save-status{font-weight:700;color:#205b70}.observation-badges{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.priority-badge,.late-badge{border-radius:999px;padding:.45rem .7rem;font-weight:800;background:#e8f0f4}.priority-haute{background:#ffedd5;color:#9a3412}.priority-critique,.late-badge{background:#fee2e2;color:#991b1b}.priority-faible{background:#dcfce7;color:#166534}.observation-late{border-left-color:#b91c1c}.observation-history-panel{margin-top:1rem;background:#f5f8fa;border-radius:10px;padding:1rem}.observation-history-panel ol{margin:0;padding-left:1.25rem}.observation-history-panel li{margin:.8rem 0}.observation-history-panel small{display:block;color:#64748b}.observation-history-panel pre{white-space:pre-wrap;font-family:inherit;margin:.25rem 0 0}.hidden{display:none!important}@media(max-width:1000px){.inspection-stats-grid{grid-template-columns:repeat(3,1fr)}.observation-actions{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.inspection-stats-grid,.observation-actions,.observation-toolbar{grid-template-columns:1fr}.observation-note-label{grid-column:auto}}
.field-hero-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.free-visit-form{margin:0 0 1.25rem}.inspection-origin{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#506070}


/* OA45 0.5.0 — Carte territoriale */
.territory-map-toolbar{display:grid;grid-template-columns:2fr 1fr 1fr;gap:1rem;margin:1rem 0}.territory-map-toolbar label{display:flex;flex-direction:column;gap:.4rem;font-weight:700}.territory-map-toolbar input,.territory-map-toolbar select{padding:.8rem;border:1px solid #b9cad4;border-radius:10px;background:#fff}.territory-place-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem;margin-top:1rem}.territory-place-card{background:#fff;border:1px solid #d4e0e7;border-radius:12px;padding:1rem}.territory-place-card h3{margin:.2rem 0}.territory-place-card p{margin:.25rem 0}.territory-place-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.7rem}#territoryMap{height:560px;border-radius:16px;border:1px solid #c9d7df;background:#eaf0f3}.map-pin{font-size:20px}.leaflet-popup-content .popup-actions{display:flex;gap:.4rem;margin-top:.7rem}.leaflet-popup-content button{padding:.45rem .65rem}@media(max-width:800px){.territory-map-toolbar{grid-template-columns:1fr}#territoryMap{height:430px}}

/* OA45 0.6.0 — Graphe territorial */
.path-analysis-panel {
  margin: 1.5rem 0;
  padding: 1.25rem;
  border: 1px solid #d7e1e6;
  border-radius: 14px;
  background: #fff;
}
.path-analysis-controls {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto;
  gap: 0.75rem;
  align-items: end;
}
.path-analysis-controls label { display: grid; gap: 0.35rem; font-weight: 700; }
.path-analysis-result { margin-top: 1rem; padding: 1rem; border-radius: 10px; }
.muted-panel { background: #eef3f5; }
.path-result-heading { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; }
.path-object-chain { font-weight: 700; line-height: 1.8; }
.accessibility-badge { display: inline-flex; align-items: center; padding: 0.28rem 0.6rem; border-radius: 999px; font-weight: 800; font-size: 0.82rem; }
.accessibility-inconnue { background: #e8edf0; color: #34444e; }
.accessibility-accessible { background: #dff4e7; color: #155c35; }
.accessibility-degradee { background: #fff0c9; color: #795300; }
.accessibility-inaccessible { background: #fde2df; color: #8b1e15; }
@media (max-width: 850px) { .path-analysis-controls { grid-template-columns: 1fr; } }

/* OA45 0.7.4 — Smart Field */
.smart-field-panel{margin:1rem 0 1.25rem;padding:1.1rem;border:1px solid var(--border,#d7dee7);border-radius:18px;background:linear-gradient(135deg,#fff,#f5f8fb)}
.smart-field-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.smart-field-heading h3{margin:.15rem 0}.opportunity-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem;margin-top:.8rem}
.opportunity-card{border:1px solid var(--border,#d7dee7);border-radius:14px;background:#fff;padding:1rem;box-shadow:0 4px 14px rgba(20,36,54,.06)}
.opportunity-card header{display:flex;justify-content:space-between;gap:.5rem;align-items:flex-start}.opportunity-score{font-weight:800;font-size:1.05rem;white-space:nowrap}
.opportunity-card h4{margin:0}.opportunity-distance{font-weight:700}.opportunity-reasons{padding-left:1.15rem;margin:.65rem 0}.opportunity-actions{display:flex;gap:.5rem;flex-wrap:wrap}

/* OA45 0.7.5 — Smart Decision */
.smart-decision-controls{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:.75rem;margin-top:1rem}
.smart-decision-controls label{display:grid;gap:.35rem;font-weight:700}.smart-decision-controls select{min-height:46px;border:1px solid #b9c7cf;border-radius:.7rem;padding:.65rem;background:#fff;font:inherit}
.recommendation-impact{margin:.7rem 0;color:#294957}.opportunity-reasons li{display:flex;justify-content:space-between;gap:.75rem;margin:.35rem 0}.recommendation-over-time{border-style:dashed;opacity:.82}.time-warning{font-weight:700;color:#8a4b00;background:#fff3d8;padding:.55rem;border-radius:.55rem}
@media(max-width:760px){.smart-decision-controls{grid-template-columns:1fr}}


/* OA45 Platform 2.0 — interface métier */
:root{--oa45-ink:#132432;--oa45-blue:#145a72;--oa45-blue-dark:#0d4357;--oa45-mint:#e7f4f1;--oa45-bg:#f4f7f8;--oa45-card:#fff;--oa45-border:#d6e1e5;--oa45-shadow:0 12px 32px rgba(20,55,70,.08)}
body{background:var(--oa45-bg);color:var(--oa45-ink)}
.platform-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px clamp(20px,4vw,64px);background:#fff;border-bottom:1px solid var(--oa45-border)}
.brand-block{display:flex;align-items:center;gap:18px}.brand-mark{display:grid;place-items:center;flex:0 0 58px;height:58px;border-radius:18px;background:linear-gradient(145deg,var(--oa45-blue),var(--oa45-blue-dark));color:#fff;font-weight:900;font-size:1.15rem;box-shadow:0 10px 22px rgba(20,90,114,.24)}
.platform-header h1{margin:.15rem 0;font-size:clamp(1.8rem,3vw,2.7rem)}.brand-subtitle{margin:0;color:#58717c}.version-pill{display:inline-flex;vertical-align:middle;padding:.2rem .55rem;border-radius:999px;background:var(--oa45-mint);color:var(--oa45-blue-dark);font-size:.45em;letter-spacing:.04em}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.mode-switch{display:flex;align-items:center;gap:7px;font-weight:800}.mode-switch select{padding:.62rem .8rem;border:1px solid var(--oa45-border);border-radius:10px;background:#fff}.health-badge{padding:.6rem .85rem;border-radius:999px;background:#edf1f3;color:#52646d;font-weight:800;font-size:.86rem}.health-ok{background:#dcf5e8;color:#12613b}.health-error{background:#fde5e2;color:#94271c}
.main-nav{position:sticky;top:0;z-index:900;display:flex;gap:8px;overflow-x:auto;padding:12px clamp(20px,4vw,64px);background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--oa45-border)}.main-nav .nav-button{white-space:nowrap;border-radius:12px;padding:.72rem .95rem;background:#edf3f5;color:#214350}.main-nav .nav-button.active{background:var(--oa45-blue);color:#fff;box-shadow:0 6px 15px rgba(20,90,114,.2)}.mode-hidden{display:none!important}
main{max-width:1600px;margin:0 auto;padding:30px clamp(18px,4vw,62px) 64px}.welcome-panel{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(520px,1.4fr);gap:28px;align-items:start;background:linear-gradient(135deg,#fff 0%,#edf7f4 100%);border:1px solid var(--oa45-border);border-radius:24px;padding:clamp(22px,3vw,38px);box-shadow:var(--oa45-shadow);margin-bottom:20px}.welcome-panel h2{font-size:clamp(1.6rem,2.7vw,2.4rem);margin:.3rem 0 .65rem}.welcome-panel p{color:#56717e;line-height:1.55}.quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.quick-action{text-align:left;display:grid;grid-template-columns:40px 1fr;column-gap:12px;align-items:center;padding:16px;border:1px solid #d7e4e8;background:#fff;color:var(--oa45-ink);border-radius:16px;box-shadow:none}.quick-action:hover{transform:translateY(-2px);border-color:#78aebd;box-shadow:0 10px 22px rgba(20,90,114,.1)}.quick-action>span{grid-row:1/3;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--oa45-mint);color:var(--oa45-blue);font-size:1.25rem}.quick-action strong{font-size:.98rem}.quick-action small{display:block;color:#6a7d86;line-height:1.3;margin-top:3px}
.platform-status-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 18px;background:#173f50;color:#fff;border-radius:16px;margin-bottom:24px}.platform-status-panel div:first-child{display:grid;gap:2px}.platform-status-panel span{font-size:.86rem;opacity:.86}.status-items{display:flex;gap:8px;flex-wrap:wrap}.status-items span{padding:.42rem .68rem;border-radius:999px;background:rgba(255,255,255,.12);opacity:1;font-weight:700}
.kpis article{border:1px solid var(--oa45-border);border-radius:17px;box-shadow:0 7px 20px rgba(20,55,70,.05)}.table-wrap,.reference-form,.map-section{border-radius:18px;box-shadow:0 8px 24px rgba(20,55,70,.05)}
@media(max-width:980px){.platform-header{align-items:flex-start;flex-direction:column}.header-actions{justify-content:flex-start}.welcome-panel{grid-template-columns:1fr}.platform-status-panel{align-items:flex-start;flex-direction:column}}
@media(max-width:640px){.brand-mark{display:none}.quick-actions{grid-template-columns:1fr}.platform-header{padding:20px}.health-badge{order:3}.platform-status-panel{border-radius:12px}.status-items{display:grid;grid-template-columns:1fr 1fr}}


/* OA45 Platform 3.0 */
.platform3-dashboard{max-width:1600px;margin:auto}.command-hero{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding:2rem;border-radius:24px;background:linear-gradient(135deg,#123f52,#1e6a75);color:#fff}.command-hero h2{font-size:clamp(2rem,4vw,3.4rem);max-width:850px}.command-hero .eyebrow,.command-hero p{color:#d7eef0}.index-orb{min-width:210px;aspect-ratio:1;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 0 40px rgba(255,255,255,.08)}.index-orb strong{font-size:2.6rem}.executive-kpis{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:1rem;margin-top:1.25rem}.executive-kpis article,.decision-summary article{background:#fff;border:1px solid #dbe3e8;border-radius:16px;padding:1.1rem;box-shadow:0 8px 24px rgba(16,53,68,.06)}.executive-kpis span,.executive-kpis small{display:block;color:#526674}.executive-kpis strong{display:block;font-size:2rem;margin:.35rem 0}.timeline-panel{display:flex;align-items:end;justify-content:space-between;gap:1rem;background:#fff;border:1px solid #dbe3e8;padding:1rem 1.25rem;border-radius:16px}.timeline-controls{display:flex;align-items:end;gap:.75rem;flex-wrap:wrap}.timeline-controls label{display:grid;gap:.3rem}.timeline-controls input{padding:.65rem;border:1px solid #b9c7cf;border-radius:8px}.analytics-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(280px,1fr);gap:1rem}.map-command-card,.alert-card,.distribution-card,.assistant-panel{background:#fff;border:1px solid #dbe3e8;border-radius:18px;padding:1rem}.map-toolbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:.75rem}.map-layer-controls{display:flex;gap:.5rem;flex-wrap:wrap}.layer-toggle{background:#e8eef1;color:#164e63}.layer-toggle.active{background:#164e63;color:#fff}.map-command-card #map{height:650px}.insight-column{display:grid;gap:1rem;align-content:start}.priority-alerts{display:grid;gap:.7rem}.priority-alerts article{display:flex;align-items:center;gap:.8rem;padding:.8rem;background:#f4f7f9;border-radius:12px}.priority-alerts strong{font-size:1.8rem}.score-distribution>div{display:grid;grid-template-columns:90px 1fr 30px;gap:.5rem;align-items:center;margin:.8rem 0}.distribution-track{height:10px;background:#e8eef1;border-radius:999px;overflow:hidden}.distribution-track i{display:block;height:100%;background:#1e6a75;border-radius:999px}.assistant-panel{padding:1.5rem}.assistant-form{display:flex;gap:.75rem}.assistant-form input{flex:1;padding:.9rem 1rem;border:1px solid #b9c7cf;border-radius:10px;font:inherit}.assistant-suggestions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.8rem 0}.assistant-suggestions button{background:#e8eef1;color:#164e63}.assistant-answer{padding:1rem;background:#f4f7f9;border-radius:12px;min-height:60px}.map-fullscreen{position:fixed;inset:12px;z-index:4500;padding:1rem;background:#fff}.map-fullscreen #map{height:calc(100vh - 95px)}.decision-view{max-width:1400px;margin:auto}.decision-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.decision-summary span{display:block;color:#526674}.decision-summary strong{font-size:2rem}.decision-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.decision-grid>section{background:#fff;border:1px solid #dbe3e8;border-radius:16px;padding:1rem}.decision-item{padding:.85rem;border-bottom:1px solid #e8eef1}.decision-item strong,.decision-item span{display:block}.decision-item span{color:#526674;margin-top:.25rem}@media(max-width:1100px){.executive-kpis{grid-template-columns:repeat(3,1fr)}.analytics-layout{grid-template-columns:1fr}.insight-column{grid-template-columns:1fr 1fr}}@media(max-width:700px){.command-hero{align-items:flex-start;flex-direction:column}.index-orb{aspect-ratio:auto;width:100%;padding:1.2rem;border-radius:16px}.executive-kpis{grid-template-columns:repeat(2,1fr)}.timeline-panel,.map-toolbar{align-items:flex-start;flex-direction:column}.assistant-form{flex-direction:column}.decision-summary{grid-template-columns:repeat(2,1fr)}.decision-grid,.insight-column{grid-template-columns:1fr}.map-command-card #map{height:500px}}@media print{.platform-header,.main-nav,.header-actions,.assistant-panel,.filters,button{display:none!important}.app-view{display:none!important}.decision-view{display:block!important}body{background:#fff}main{padding:0}.decision-grid{grid-template-columns:1fr 1fr}}


/* OA45 Platform 3.1 — quartiers */
.quartiers-panel{background:#fff;border:1px solid #dce8ea;border-radius:18px;padding:20px;margin:22px 0;box-shadow:0 8px 24px rgba(15,54,67,.05)}
.quartiers-panel .section-title{align-items:center}.quartiers-panel select{min-width:190px}
.quartiers-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.quartier-card{border:1px solid #dce8ea;border-left:5px solid #64748b;border-radius:14px;padding:14px;background:#fbfdfd;cursor:pointer;transition:.15s transform,.15s box-shadow}
.quartier-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(15,54,67,.12)}.quartier-card.good{border-left-color:#15803d}.quartier-card.medium{border-left-color:#b45309}.quartier-card.hard{border-left-color:#b91c1c}
.quartier-card>div:first-child{display:flex;justify-content:space-between;gap:8px;flex-direction:column}.quartier-card span{font-size:.72rem;text-transform:uppercase;color:#58717b}.quartier-card h3{margin:2px 0 8px}.quartier-card>strong{font-size:1.45rem;color:#163846}
.quartier-card dl{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 0}.quartier-card dl div{background:#edf4f5;border-radius:8px;padding:7px}.quartier-card dt{font-size:.68rem;color:#58717b}.quartier-card dd{margin:2px 0 0;font-weight:700}.boundary-note{font-size:.78rem;color:#6b7d85;margin:14px 0 0}
#quartiersLayerToggle.active{background:#174f63;color:#fff}
@media(max-width:1050px){.quartiers-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.quartiers-cards{grid-template-columns:1fr}.quartier-card dl{grid-template-columns:1fr 1fr 1fr}}
