/* ============================================================
   map.css · la carte, version 3 « vitrine »
   Un en-tête en display, puis la carte dans un panneau de verre aux crochets
   HUD. Les coordonnées du curseur s'affichent dans le HUD, en bas à droite.
   ============================================================ */

.map-main { position: relative; z-index: 2; min-height: 100svh; padding: calc(var(--nav-h) + 48px) calc(var(--hud-inset) + 34px) 12vh; max-width: var(--max); margin: 0 auto; display: grid; gap: 22px; align-content: start; }
/* En-tête compact : titre sur une ligne à gauche, chapeau à droite, pour que
   la carte soit visible dès le premier écran. */
.page-head { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: end; gap: 12px 48px; }
.page-head__t { display: grid; gap: 12px; }
.page-title { font-size: clamp(40px, 7vw, 110px); white-space: nowrap; }
.page-head .lede { max-width: 34rem; font-size: clamp(14px, 1.1vw, 16px); padding-bottom: .4em; }

.map-shell { overflow: hidden; }
.map-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--line-0); }
.map-tools__meta { margin-left: auto; }
.map-panel { position: relative; height: calc(100svh - var(--nav-h) - 290px); min-height: 480px; background: #0d2b4f; }
#map { position: absolute; inset: 0; background: #0d2b4f; }
.map-hint { position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 500; pointer-events: none; padding: 7px 14px; border-radius: 9999px; font-family: var(--f-mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-mid); background: rgba(5,5,6,.75); border: 1px solid var(--line-1); backdrop-filter: blur(8px); white-space: nowrap; max-width: 92%; overflow: hidden; text-overflow: ellipsis; }
.hud #coords { letter-spacing: .06em; text-transform: none; color: var(--ink-meta); }
.hud #coords:empty::before { content: "survole la carte"; color: var(--ink-ghost); }

/* ---------- Leaflet aux couleurs du site ---------- */
.leaflet-container { font-family: var(--f-body); }
.leaflet-bar { border: 1px solid var(--line-1) !important; border-radius: 9999px !important; overflow: hidden; box-shadow: 0 10px 30px -15px #000 !important; }
.leaflet-bar a { background: rgba(5,5,6,.85) !important; color: var(--ink-hi) !important; border-bottom: 1px solid var(--line-0) !important; width: 36px !important; height: 36px !important; line-height: 36px !important; }
.leaflet-bar a:hover { background: #ffffff14 !important; }
.leaflet-bar a.leaflet-disabled { color: #555 !important; }
.leaflet-control-attribution { background: rgba(5,5,6,.7) !important; color: var(--ink-meta) !important; font-size: 10px !important; border-radius: 6px 0 0 0; }
.leaflet-control-attribution a { color: var(--ink-hi) !important; }
.leaflet-popup-content-wrapper { background: #0e0e10; color: var(--ink-body); border: 1px solid var(--line-1); border-radius: var(--r); box-shadow: inset 0 1px #ffffff0f, 0 20px 40px -20px #000; }
.leaflet-popup-tip { background: #0e0e10; }
.leaflet-popup-content { margin: 12px 14px; font-size: 13px; }
.leaflet-popup-content b { font-family: var(--f-display); font-style: italic; text-transform: uppercase; font-size: 15px; color: var(--ink-hi); display: block; margin-bottom: 2px; }
.leaflet-popup-close-button { color: var(--ink-meta) !important; }

/* ---------- Blips (sprites FiveM) ---------- */
.blip-pin { width: 32px; height: 32px; position: relative; }
.blip-pin img { width: 32px; height: 32px; display: block; filter: drop-shadow(0 2px 4px rgba(0,0,0,.8)); transition: transform .3s var(--enter); }
.blip-pin:hover img { transform: scale(1.18); }
.blip-label { position: absolute; top: 100%; left: 50%; transform: translateX(-50%); margin-top: 3px; padding: 3px 9px; border-radius: 9999px; font-family: var(--f-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: #fff; background: rgba(5,5,6,.85); border: 1px solid var(--line-1); white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity .2s; }
.blip-pin:hover .blip-label, .blip-main .blip-label, .blip-selected .blip-label { opacity: 1; }
.blip-main img { width: 38px; height: 38px; margin: -3px; }
.blip-main::before { content: ""; position: absolute; inset: -6px; border-radius: 50%; background: var(--red); opacity: .3; animation: pulse 1.8s ease-out infinite; z-index: -1; }
@keyframes pulse { 0% { transform: scale(.6); opacity: .6; } 100% { transform: scale(1.8); opacity: 0; } }

@media (max-width: 900px) { .map-main { padding: calc(var(--nav-h) + 12px) var(--hud-inset) 8vh; } .page-head { grid-template-columns: 1fr; } .page-head .lede { padding-bottom: 0; } .map-panel { height: 66svh; min-height: 420px; } .map-tools__meta { display: none; } }
