/* UI carte locale (remplace Tailwind CDN sur EFS / feux d'artifice) */
.map-panel {
    width: 100%;
    background: rgba(30, 41, 59, 0.6);
    border: 1px solid #1e293b;
    border-radius: 12px;
    padding: 14px;
    box-sizing: border-box;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}
.map-panel-stats {
    margin-bottom: 12px;
    font-size: 13px;
    color: #94a3b8;
    text-align: left;
    line-height: 1.4;
}
.map-panel-stats p { margin: 0; }
.map-panel-block { margin-bottom: 12px; }
.map-panel-label {
    display: block;
    margin-bottom: 6px;
    text-align: left;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #94a3b8;
}
.map-search-row {
    display: flex;
    gap: 8px;
    align-items: stretch;
}
.map-search-field {
    position: relative;
    flex: 1;
    min-width: 0;
}
.map-search-field input {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #475569;
    border-radius: 8px;
    background: #020617;
    color: #fff;
    padding: 10px 12px;
    font-size: 14px;
    outline: none;
}
.map-search-field input::placeholder { color: #64748b; }
.map-search-field input:focus { border-color: #94a3b8; }
.btn-locate {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border: 1px solid rgba(239, 68, 68, 0.7);
    background: rgba(185, 28, 28, 0.9);
    color: #fff;
    border-radius: 8px;
    padding: 10px 14px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}
.btn-locate:hover { background: #dc2626; }
.btn-locate-label { display: none; }
@media (min-width: 640px) {
    .btn-locate-label { display: inline; }
}
#filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.filter-btn {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    border: 1px solid #475569;
    background: rgba(15, 23, 42, 0.85);
    color: #cbd5e1;
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.filter-btn:hover { border-color: #94a3b8; color: #fff; }
.filter-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: 6px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.5);
    vertical-align: middle;
}
.filter-dot-slate { background: #cbd5e1; }
.filter-dot-red { background: #ef4444; }
.filter-dot-blue { background: #3b82f6; }
.filter-dot-green { background: #22c55e; }
.filter-dot-amber { background: #f59e0b; }
.efs-map-ui .filter-btn.active {
    border-color: #dc2626;
    background: #dc2626;
    color: #fff;
}
.efs-map-ui .filter-btn:hover { border-color: #ef4444; color: #fff; }
.feux-map-ui .filter-btn.active {
    border-color: #2563eb;
    background: #2563eb;
    color: #fff;
}
.feux-map-ui .filter-btn:hover { border-color: #3b82f6; color: #fff; }
.map-action-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-bottom: 12px;
}
.btn-feux-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border-radius: 999px;
    padding: 8px 14px;
    font-size: 12px;
    font-weight: 600;
    color: #fff;
    cursor: pointer;
    border: 1px solid transparent;
}
@media (min-width: 640px) {
    .btn-feux-action { font-size: 13px; }
}
.btn-feux-signal {
    border-color: rgba(239, 68, 68, 0.8);
    background: rgba(220, 38, 38, 0.9);
}
.btn-feux-signal:hover { background: #ef4444; }
.btn-feux-dept {
    border-color: rgba(59, 130, 246, 0.7);
    background: rgba(29, 78, 216, 0.9);
}
.btn-feux-dept:hover { background: #2563eb; }
.map-wrap {
    position: relative;
    width: 100%;
    height: min(68vh, 560px);
    min-height: 320px;
    overflow: hidden;
    border-radius: 10px;
    border: 1px solid #475569;
    box-sizing: border-box;
}
.map-wrap > .map-canvas,
.map-wrap > #efs-map,
.map-wrap > #feux-map {
    width: 100%;
    height: 100%;
}
.map-loading {
    position: absolute;
    inset: 0;
    z-index: 500;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(11, 15, 25, 0.82);
    color: #e2e8f0;
    font-size: 14px;
}
.map-loading i { font-size: 20px; }
.efs-map-ui .map-loading i { color: #f87171; }
.feux-map-ui .map-loading i { color: #60a5fa; }
.map-loading.hidden,
.map-error.hidden { display: none; }
.map-hint,
.map-source {
    margin: 8px 0 0;
    text-align: center;
    font-size: 11px;
    line-height: 1.55;
    color: #64748b;
}
.map-source a {
    color: #94a3b8;
    text-decoration: underline;
}
.map-source a:hover { color: #e2e8f0; }
.map-error {
    margin-top: 12px;
    border-radius: 8px;
    border: 1px solid rgba(239, 68, 68, 0.3);
    background: rgba(127, 29, 29, 0.4);
    padding: 10px 12px;
    text-align: center;
    font-size: 12px;
    color: #fecaca;
}
.map-legend {
    margin-top: 14px;
    border-radius: 10px;
    border: 1px solid #475569;
    background: rgba(15, 23, 42, 0.55);
    padding: 14px;
    text-align: left;
}
.map-legend-title {
    margin: 0 0 10px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #94a3b8;
}
.map-legend-grid {
    display: grid;
    gap: 8px;
}
@media (min-width: 640px) {
    .map-legend-grid { grid-template-columns: 1fr 1fr; }
}
.map-legend-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 12px;
    color: #cbd5e1;
}
.map-legend-item strong { color: #fff; }
.map-legend-item.is-wide { grid-column: 1 / -1; }
.map-legend-swatch {
    flex-shrink: 0;
    width: 12px;
    height: 12px;
    margin-top: 2px;
    border-radius: 999px;
    border: 2px solid rgba(255, 255, 255, 0.85);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}
.map-legend-swatch.is-square { border-radius: 3px; }
.map-legend-swatch.is-red { background: #ef4444; }
.map-legend-swatch.is-blue { background: #3b82f6; }
.map-legend-swatch.is-green { background: #22c55e; }
.map-legend-swatch.is-amber { background: #f59e0b; }
.map-legend-swatch.is-zone {
    background: rgba(239, 68, 68, 0.35);
    border-color: rgba(239, 68, 68, 0.8);
}
.map-legend-icon {
    flex-shrink: 0;
    width: 20px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.map-legend-muted { color: #94a3b8; }
.map-legend-muted .is-red-txt { color: #f87171; }
.map-legend-muted .is-green-txt { color: #4ade80; }
.map-legend-muted .is-amber-txt { color: #fbbf24; }
.map-note {
    margin-top: 16px;
    border-radius: 8px;
    border: 1px solid rgba(120, 53, 15, 0.4);
    background: rgba(69, 26, 3, 0.3);
    padding: 10px 12px;
    text-align: center;
    font-size: 12px;
    line-height: 1.55;
    color: rgba(254, 243, 199, 0.9);
}
.opacity-80 { opacity: 0.8; }
.btn-share-page.is-done {
    border-color: #10b981;
    color: #6ee7b7;
}
