.searchPage{
  overflow:visible;
  padding-bottom:max(18px,env(safe-area-inset-bottom));
}
.dataExplorer{
  width:min(920px,calc(100% - 18px));
  margin:10px auto 0;
  color:#0f172a;
}
.explorerToggle{
  width:100%;
  min-height:58px;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) 30px;
  align-items:center;
  gap:10px;
  padding:8px 12px;
  border:1px solid rgba(255,255,255,.35);
  border-radius:15px;
  background:#fff;
  color:#003a70;
  text-align:left;
  box-shadow:0 8px 22px rgba(0,0,0,.24);
}
.explorerToggleIcon{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:#003a70;
  color:#fff;
  font-size:28px;
  font-weight:900;
  line-height:1;
}
.explorerToggle b,.explorerToggle small{display:block}
.explorerToggle b{font-size:16px}
.explorerToggle small{margin-top:2px;color:#64748b;font-size:11px;font-weight:800}
.explorerChevron{font-size:25px;text-align:center;transition:transform .18s ease}
.explorerToggle[aria-expanded="true"] .explorerChevron{transform:rotate(180deg)}
.explorerPanel{
  margin-top:8px;
  padding:11px;
  border-radius:17px;
  background:#f8fafc;
  box-shadow:0 12px 30px rgba(0,0,0,.28);
}
.explorerPanel[hidden]{display:none!important}
.explorerSearchRow{
  display:grid;
  grid-template-columns:28px minmax(0,1fr) 38px;
  align-items:center;
  border:2px solid #bfdbfe;
  border-radius:13px;
  background:#fff;
  overflow:hidden;
}
.explorerSearchRow>span{color:#003a70;text-align:center;font-size:23px;font-weight:900}
.explorerSearchRow input{
  min-width:0;
  width:100%;
  margin:0;
  padding:11px 5px;
  border:0;
  border-radius:0;
  background:#fff;
  color:#0f172a;
  font-size:16px;
  outline:0;
}
.explorerSearchRow:focus-within{border-color:#0b78e3;box-shadow:0 0 0 3px rgba(11,120,227,.14)}
.explorerSearchRow button{
  width:34px;
  height:34px;
  padding:0;
  border-radius:9px;
  background:#e2e8f0;
  color:#334155;
  font-size:22px;
}
.explorerBreadcrumb{
  display:flex;
  align-items:center;
  gap:9px;
  margin-top:10px;
  padding-bottom:8px;
  border-bottom:1px solid #dbe3ec;
}
.explorerBreadcrumb[hidden]{display:none!important}
.explorerBreadcrumb button{
  width:38px;
  height:38px;
  flex:0 0 38px;
  padding:0;
  border-radius:10px;
  background:#003a70;
  font-size:21px;
}
.explorerBreadcrumb b,.explorerBreadcrumb small{display:block}
.explorerBreadcrumb b{color:#003a70;font-size:14px}
.explorerBreadcrumb small{margin-top:2px;color:#64748b;font-size:10px;font-weight:800}
.explorerFilters{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
  margin-top:9px;
}
.explorerFilters[hidden]{display:none!important}
.explorerFilters select{
  min-width:0;
  width:100%;
  margin:0;
  padding:9px;
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#fff;
  color:#0f172a;
  font-size:13px;
}
.explorerCount{min-height:16px;margin:8px 2px 5px;color:#64748b;font-size:11px;font-weight:850}
.explorerResults{display:grid;gap:7px}
.explorerCategory,.explorerSubcategory,.explorerResult{
  width:100%;
  display:grid;
  align-items:center;
  gap:10px;
  padding:9px 10px;
  border:1px solid #dbe3ec;
  border-radius:13px;
  background:#fff;
  color:#0f172a;
  text-align:left;
  box-shadow:0 2px 6px rgba(15,23,42,.05);
}
.explorerCategory,.explorerSubcategory{grid-template-columns:43px minmax(0,1fr) auto 20px}
.explorerResult{grid-template-columns:minmax(0,1fr) auto}
.explorerCategory:active,.explorerSubcategory:active,.explorerResult:active{transform:translateY(1px);background:#eff6ff}
.explorerCategoryIcon{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border-radius:11px;
  background:#eaf3fb;
  color:#003a70;
  font-size:22px;
  font-weight:950;
  overflow:hidden;
}
.explorerCategoryIcon img{width:35px;height:35px;object-fit:contain}
.explorerCategoryIcon.toll{border-radius:50%;background:#003a70;color:#fff}
.explorerCategoryIcon.da40{background:#e0f2fe}
.explorerCategoryIcon.da40::after{content:"";width:34px;height:5px;border-radius:999px;background:#1683d8}
.explorerCategory b,.explorerSubcategory b,.explorerResult b{display:block;color:#0f172a;font-size:13px;line-height:1.25}
.explorerCategory small,.explorerSubcategory small,.explorerResult small{display:block;margin-top:3px;color:#64748b;font-size:10px;font-weight:750;line-height:1.3}
.explorerCategoryCount{
  padding:4px 7px;
  border-radius:999px;
  background:#e2e8f0;
  color:#334155;
  font-size:10px;
  font-weight:950;
  white-space:nowrap;
}
.explorerArrow{color:#64748b;font-size:20px;text-align:right}
.explorerResultBadge{
  align-self:center;
  padding:5px 7px;
  border-radius:8px;
  background:#003a70;
  color:#fff;
  font-size:9px;
  font-weight:950;
  text-transform:uppercase;
  white-space:nowrap;
}
.explorerResultBadge.pdf{background:#b91c1c}
.explorerResultBadge.route{background:#15803d}
.explorerGroupTitle{
  margin:7px 2px 0;
  padding-top:6px;
  color:#003a70;
  font-size:11px;
  font-weight:950;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.explorerEmpty{
  padding:22px 14px;
  border:1px dashed #94a3b8;
  border-radius:13px;
  background:#fff;
  color:#64748b;
  text-align:center;
  font-size:12px;
  font-weight:800;
}
.districtSearchHalo{
  width:42px;
  height:42px;
  border:5px solid #fff;
  border-radius:50%;
  background:#ff7900;
  box-shadow:0 0 0 0 rgba(255,121,0,.75);
  animation:districtSearchPulse 1.25s infinite;
}
@keyframes districtSearchPulse{70%{box-shadow:0 0 0 18px rgba(255,121,0,0)}100%{box-shadow:0 0 0 0 rgba(255,121,0,0)}}
@media(max-width:949px){
  .dataExplorer{width:calc(100% - 14px);margin-top:7px}
  .explorerPanel{padding:9px}
  .explorerCategory,.explorerSubcategory{grid-template-columns:40px minmax(0,1fr) auto 18px;padding:8px}
  .explorerCategoryIcon{width:39px;height:39px}
  .explorerCategoryIcon img{width:33px;height:33px}
}
@media(max-width:370px){
  .explorerToggle{grid-template-columns:38px minmax(0,1fr) 24px;padding-left:9px;padding-right:8px}
  .explorerCategoryCount{padding:3px 5px;font-size:9px}
  .explorerCategory small{font-size:9px}
}

/* V5.1.5 — plans d'aires interactifs */
.districtAreaPlan,.districtCseDialog{position:fixed;inset:0;z-index:6000;background:rgba(0,0,0,.58);display:flex;align-items:center;justify-content:center;padding:10px}
.districtAreaPlan[hidden],.districtCseDialog[hidden]{display:none!important}
.districtAreaPlanCard{width:min(1100px,98vw);height:min(92vh,1000px);background:#fff;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.districtAreaPlanHead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#f5f7fa;border-bottom:1px solid #d7dde5}
.districtAreaPlanHead>div:first-child{display:flex;flex-direction:column;gap:2px}.districtAreaPlanHead small{font-size:11px;color:#667085}
.districtAreaPlanTools{display:flex;gap:6px}.districtAreaPlanTools button{min-width:38px;height:38px;border:1px solid #c8d0db;background:#fff;border-radius:9px;font-size:22px;font-weight:700}
.districtAreaPlanViewport{position:relative;flex:1;overflow:hidden;background:#d6caa8;touch-action:none;cursor:grab}
.districtAreaPlanViewport:active{cursor:grabbing}.districtAreaPlanCanvas{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.districtAreaPlanCanvas svg{display:block;max-width:none!important;max-height:none!important}.districtAreaPlanLoading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;padding:12px 16px;border-radius:10px;font-weight:800;color:#334155;box-shadow:0 4px 18px rgba(0,0,0,.18);white-space:nowrap}.districtAreaPlanError{color:#b42318}
.districtCseCard{position:relative;width:min(360px,92vw);background:#fff;border-radius:14px;padding:16px;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.districtCseHead{display:flex;align-items:center;justify-content:space-between;font-size:21px}.districtCseHead button{border:0;background:transparent;font-size:25px}
.districtCseType{margin:10px 0 16px;font-weight:800;font-size:18px}.districtCseChars{border-top:1px solid #e0e5ec;padding-top:12px;display:grid;gap:7px}.districtCseEdit{display:block;margin:18px 0 0 auto;border:1px solid #c8d0db;background:#f8fafc;border-radius:9px;width:42px;height:38px;font-size:21px}
@media(max-width:600px){.districtAreaPlan{padding:0}.districtAreaPlanCard{width:100vw;height:100dvh;border-radius:0}.districtAreaPlanHead small{display:none}}

.airesPageWrap{padding:16px;max-width:900px;margin:0 auto}
.airesPageTitle{font-size:22px;font-weight:900;margin:4px 0 6px;color:#12233f}
.airesPageIntro{font-size:13px;color:#667085;margin:0 0 14px}
.airesList{display:flex;flex-direction:column;gap:10px}
.airesRow{width:100%;border:1px solid #d7dde5;background:#fff;border-radius:13px;padding:13px 14px;display:flex;align-items:center;gap:12px;text-align:left;box-shadow:0 2px 8px rgba(16,24,40,.05);cursor:pointer}
.airesRow:active{transform:translateY(1px)}
.airesRowIcon{width:44px;height:44px;border-radius:11px;background:#e9f1fb;display:grid;place-items:center;flex:0 0 auto}
.airesRowIcon img{width:28px;height:28px}
.airesRowText{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.airesRowText b{font-size:16px;color:#12233f}.airesRowText small{font-size:12px;color:#667085}
.airesRowArrow{font-size:28px;color:#7d8998;font-weight:400}

/* 5.1.7 — toolbar contrast fix */
.districtAreaToolBtn{
  appearance:none;border:1px solid #cbd5e1!important;background:#ffffff!important;color:#0f172a!important;
  min-width:36px;height:36px;border-radius:9px;font-size:20px;font-weight:900;line-height:1;
  display:grid!important;place-items:center!important;box-shadow:0 1px 4px rgba(15,23,42,.16);cursor:pointer
}
.districtAreaToolBtn:hover{background:#f8fafc!important}
.districtAreaPlanToolbar{gap:6px}

/* 5.1.8 — contraste popup CSE */
.districtCseCard{background:#fff!important;color:#172033!important}
.districtCseCard,.districtCseCard *{color:#172033!important}
.districtCseHead b{color:#10233f!important}
.districtCseType{color:#10233f!important}
.districtCseChars,.districtCseChars b,.districtCseChars div,#districtCseVolume{color:#334155!important}
.districtCseHead button,.districtCseEdit{
  color:#10233f!important;background:#fff!important;border:1px solid #cbd5e1!important
}
/* boutons visionneuse visibles */
.districtAreaToolBtn{
  appearance:none!important;background:#fff!important;color:#0f172a!important;
  border:1px solid #94a3b8!important;box-shadow:0 1px 4px rgba(15,23,42,.18)!important
}

/* 5.1.9 — contraste visionneuse forcé */
.districtAreaPlanHead,.districtAreaPlanHead *{color:#0f172a!important}
.districtAreaPlanHead small{color:#475569!important}
.districtAreaPlanTools button{appearance:none!important;background:#ffffff!important;color:#0f172a!important;border:1px solid #94a3b8!important;box-shadow:0 1px 4px rgba(15,23,42,.18)!important;opacity:1!important;-webkit-text-fill-color:#0f172a!important}
.districtAreaPlanTools button:hover{background:#f1f5f9!important}

#districtAreaPlan .districtAreaPlanTools button{
  background:#ffffff!important;
  color:#111111!important;
  -webkit-text-fill-color:#111111!important;
  border:1px solid #64748b!important;
  opacity:1!important;
  font-weight:900!important;
  text-shadow:none!important;
}

/* 5.1.11 — centrage exact des contrôles de la visionneuse */
#districtAreaPlan .districtAreaPlanTools{
  display:flex!important;
  align-items:center!important;
  gap:6px!important;
}
#districtAreaPlan .districtAreaPlanTools button{
  width:40px!important;
  min-width:40px!important;
  height:40px!important;
  padding:0!important;
  margin:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
  text-align:center!important;
  vertical-align:middle!important;
  font-size:21px!important;
  box-sizing:border-box!important;
}
