/* ============================================================
   ERP+ : Zone carto de l'atelier (HORS DEFAULT_TARGETS)

   Feuille dediee aux INTERNES du widget de selection de parcelle : conteneur
   de carte Leaflet, rendu des tuiles, controles, attribution et mini satellite.
   Ces elements ne sont NI restyles NI tokenises (frontiere carto #389) : on
   habille autour, jamais au travers. Les polygones de selection (#16a34a) vivent
   dans public/js/parcel-selector.js, intouche.

   Cette feuille porte les seules couleurs fonctionnelles carto (bordure et fond
   de la mini-carte, voile d'attribution). Elle est volontairement TENUE HORS de
   DEFAULT_TARGETS du gate check_design.sh : son maquillage par tokens de marque
   romprait la lisibilite du rendu cartographique. Ne jamais l'ajouter au gate,
   ne jamais vendoriser le CSS Leaflet (charge en CDN) dans un fichier scanne.
   ============================================================ */

/* ============================================================
   Cadre editorial V1.3 du corps de l'atelier (issue #401)
   La carte est enveloppee : frame > (seat + card) ; card > head + inset >
   viewport. Le seat creme-fonce depasse derriere la carte (traitement
   specimen home V2). Token-clean par coherence (feuille hors gate). #map
   garde une hauteur via la chaine flex jusqu'a .atelier__map.
   ============================================================ */
.atelier__map-frame {
  position: relative; min-width: 0; min-height: 0;
  display: flex; flex-direction: column;
}

/* Seat : bandeau creme-fonce qui depasse en bas et a droite, derriere la carte.
   Fioriture desktop (masque en <=1024px). Valeurs calibrables (tuning). */
.atelier__map-seat {
  position: absolute; top: 24px; right: -16px; bottom: -16px; left: 28px;
  background: var(--erp-cream-deep); border-radius: var(--radius-2); z-index: 0;
}

/* Carte blanche, au-dessus du seat (idiome .erp-card) */
.atelier__map-card {
  position: relative; z-index: 1; flex: 1; min-height: 0;
  display: flex; flex-direction: column;
  background: var(--erp-white);
  border: 1px solid color-mix(in srgb, var(--erp-marine) 6%, transparent);
  border-radius: var(--radius-2); box-shadow: var(--shadow-2); overflow: hidden;
}

/* Rail eyebrow en tete de carte */
.atelier__map-head {
  flex: none; display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-4);
  padding: var(--sp-4) var(--sp-5); border-bottom: 1px solid var(--erp-rule);
}
.atelier__map-head-aux {
  font-family: var(--erp-font-sans); font-size: 12px; color: var(--erp-fg-3);
}

/* Inset autour du viewport Leaflet */
.atelier__map-inset { flex: 1; min-height: 0; padding: var(--sp-3); display: flex; }

/* Viewport carte : remplit l'inset via flex, #map remplit le viewport */
.atelier__map { position: relative; min-width: 0; min-height: 0; z-index: 0; flex: 1; }
#map { width: 100%; height: 100%; }

/* Placeholder d'attente du viewport carte pendant le lazy-load (issue #300) :
   l'init Leaflet est deferee (order-new.js, scheduleMapInit) hors du chemin
   critique de /new ; le conteneur #map etant visible d'emblee, on lui pose un
   fond de remplissage tokenise et STATIQUE (aucune animation) pour eviter une
   boite blanche en attente. Recouvert par les tuiles a l'init ; retire des que
   order-new.js pose .is-map-ready. La mini-carte n'en a pas besoin : sa coquille
   .sat-mini porte deja un fond creme-fonce. Feuille hors gate, valeurs tokenisees
   par coherence (jamais de hex en dur). */
#map:not(.is-map-ready) {
  background: var(--erp-cream-deep);
  border: 1px solid var(--erp-rule);
  border-radius: var(--radius-2);
}

/* Attenuation du fond Plan IGN (issue #400) : ramene la couche Plan vers un
   creme-gris sobre qui recule derriere le cadastre et la parcelle, en coherence
   de famille avec la maquette V1.3. Cible la SEULE couche Plan via la className
   'erp-fond-attenue' posee sur le L.tileLayer du Plan (parcel-selector.js,
   _initMap). Le satellite (ORTHOPHOTOS) et le cadastre (PARCELLAIRE_EXPRESS)
   n'ont pas cette className et restent pleine couleur et nets ; les vecteurs
   parcelle vivent dans l'overlayPane, hors du filtre applique au tilePane.
   Valeur calibree (tuning #400) vers un creme plus propre et moins sepia que la
   baseline initiale (plus de grayscale, moins de sepia). A confirmer par Remy
   parmi les candidats captures ; un swap de candidat = une ligne, pas un commit. */
.erp-fond-attenue {
  filter: grayscale(0.85) sepia(0.12) saturate(0.6) brightness(1.04) contrast(0.9);
}

/* Mini satellite : vignette flottante encadree V1.3, bascule plan / satellite */
.sat-mini {
  position: absolute; bottom: 24px; right: 24px; width: 300px; height: 220px;
  border-radius: var(--radius-2); overflow: hidden; box-shadow: var(--shadow-2);
  border: 1px solid color-mix(in srgb, var(--erp-marine) 6%, transparent);
  cursor: pointer; z-index: 800; background: var(--erp-cream-deep);
}
.sat-mini-label {
  position: absolute; bottom: 0; left: 0; right: 0; background: var(--erp-marine);
  color: var(--erp-fg-on-marine); font-size: 10px; font-weight: 600; letter-spacing: 0.06em;
  text-transform: uppercase; text-align: center; padding: 3px 0;
}

/* ============================================================
   Controles Leaflet rhabilles V1.3 (issue #401), feuille hors gate.
   ============================================================ */
.leaflet-control-zoom {
  border: 1px solid var(--erp-rule-strong) !important; border-radius: var(--radius-1) !important;
  box-shadow: var(--shadow-1) !important; overflow: hidden;
}
.leaflet-control-zoom a {
  background: var(--erp-white); color: var(--erp-marine); border-bottom: 1px solid var(--erp-rule);
}
.leaflet-control-zoom a:hover { background: var(--erp-cream-soft); color: var(--erp-marine); }

/* Attribution en chip creme translucide ("Leaflet | IGN Geoplateforme") */
.leaflet-control-attribution {
  font-size: 10px !important;
  background: color-mix(in srgb, var(--erp-cream) 88%, transparent) !important;
  border: 1px solid var(--erp-rule); border-radius: var(--radius-1);
  color: var(--erp-fg-3); padding: 1px 6px;
}
.leaflet-control-attribution a { color: var(--erp-marine); }

/* Echelle reelle (L.control.scale, parcel-selector.js) en chip creme */
.leaflet-control-scale-line {
  background: color-mix(in srgb, var(--erp-cream) 88%, transparent);
  border: 1px solid var(--erp-rule); border-top: none;
  border-radius: 0 0 var(--radius-1) var(--radius-1);
  color: var(--erp-fg-2); font-family: var(--erp-font-sans); font-size: 10px; padding: 1px 6px;
}

@media (max-width: 1024px) {
  /* Seat = fioriture desktop : masquee quand les cartes s'empilent. */
  .atelier__map-seat { display: none; }
  .sat-mini { bottom: 12px; right: 12px; width: 200px; height: 140px; }
}
@media (max-width: 600px) {
  .sat-mini { width: 160px; height: 120px; }
}

/* ---------------------------------------------------------------
   #472 (Lot D (B) correctif) : hauteur effective de la carte en regime
   page-scroll. Seuil = H_PAGESCROLL dans order-new.js et order-buy.js et
   @media (max-height: 600px) dans atelier.css, GARDER SYNCHRONISE.
   Pourquoi ICI et pas dans atelier.css : cette feuille est chargee APRES et
   .atelier__map-card y porte flex:1 1 0% (meme specificite, l'ordre de source
   tranche). Pourquoi sur le FRAME et pas sur la carte : sous le seuil, la
   rangee de grille passe en auto, le frame devient content-sized, et un
   flex-basis:0% sur la carte se resout alors contre une hauteur nulle (mesure :
   carte 73px, viewport Leaflet 0px, aucune tuile). On pose donc la hauteur sur
   le frame et on laisse la carte la remplir par son flex:1 d'origine.
   Plancher 240px (et non 200) : il faut loger la mini-sat de 140px plus sa
   gouttiere sous le rail d'en-tete, y compris a 848x445.
   --------------------------------------------------------------- */
@media (max-height: 600px) {
  .atelier__map-frame { flex: none; height: clamp(240px, 40vh, 320px); }
}
