﻿/* static/css/popup_theme.css */

/* =========================================================
   Flux Montréal — Leaflet Popup + Legend Theme (2026 FINAL)
   - Popups scoppés: hm-bus-popup / hm-train-popup / hm-bixi-popup / hm-entraves-popup
   - Wrap robuste (contenu), MAIS header BUS/TRAIN anti "1 lettre/ligne"
   - BUS/TRAIN: centré, compact, sans corner icon
   - TRAIN: plus étroit
   - ENTRAVES: lien Québec 511 bleu stable
   - LEGEND + SHARE: card theme + z-index safe
   ========================================================= */


/* =========================================================
   1) TOKENS
   ========================================================= */
:root{
  --hm-pop-bg:#283242;
  --hm-pop-surface:#1E293B;
  --hm-pop-text:#E5E7EB;
  --hm-pop-muted:#A7B0BE;
  --hm-pop-border:rgba(255,255,255,.10);
  --hm-pop-divider:rgba(255,255,255,.12);
  --hm-pop-shadow:0 12px 34px rgba(0,0,0,.38);

  --hm-accent-train:#67a7e4;
  --hm-link:#67a7e4;

  --hm-font: Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;

  /* réserve symétrique pour compenser visuellement le X */
  --hm-close-gutter: 28px;

  /* Largeurs desktop */
  --hm-bus-w:   220px;  /* bus stable */
  --hm-train-w: 240px;  /* train stable */
}


/* =========================================================
   2) POPUPS — BASE (SCOPED)
   ========================================================= */
.leaflet-popup.hm-bus-popup .leaflet-popup-content-wrapper,
.leaflet-popup.hm-train-popup .leaflet-popup-content-wrapper,
.leaflet-popup.hm-entraves-popup .leaflet-popup-content-wrapper,
.leaflet-popup.hm-bixi-popup .leaflet-popup-content-wrapper{
  background:var(--hm-pop-bg) !important;
  border:1px solid var(--hm-pop-border) !important;
  border-radius:14px !important;
  box-shadow:var(--hm-pop-shadow) !important;
  padding:0 !important;
}

.leaflet-popup.hm-bus-popup .leaflet-popup-tip,
.leaflet-popup.hm-train-popup .leaflet-popup-tip,
.leaflet-popup.hm-entraves-popup .leaflet-popup-tip,
.leaflet-popup.hm-bixi-popup .leaflet-popup-tip{
  background:var(--hm-pop-bg) !important;
  box-shadow:none !important;
}

/* Close button (Leaflet X) */
.leaflet-popup.hm-bus-popup .leaflet-popup-close-button,
.leaflet-popup.hm-train-popup .leaflet-popup-close-button,
.leaflet-popup.hm-entraves-popup .leaflet-popup-close-button,
.leaflet-popup.hm-bixi-popup .leaflet-popup-close-button{
  display:block !important;
  top:6px !important;
  right:6px !important;
  padding:0 !important;
  width:22px !important;
  height:22px !important;
  line-height:22px !important;
  text-align:center !important;
  color:#CBD5E1 !important;
  opacity:.95 !important;
}
.leaflet-popup.hm-bus-popup .leaflet-popup-close-button:hover,
.leaflet-popup.hm-train-popup .leaflet-popup-close-button:hover,
.leaflet-popup.hm-entraves-popup .leaflet-popup-close-button:hover,
.leaflet-popup.hm-bixi-popup .leaflet-popup-close-button:hover{
  color:#FFFFFF !important;
  opacity:1 !important;
}


/* =========================================================
   3) POPUPS — CONTENT (wrap robuste global)
   (OK pour les longues chaînes, liens, IDs, etc.)
   ========================================================= */
.leaflet-popup.hm-bus-popup .leaflet-popup-content,
.leaflet-popup.hm-train-popup .leaflet-popup-content,
.leaflet-popup.hm-entraves-popup .leaflet-popup-content,
.leaflet-popup.hm-bixi-popup .leaflet-popup-content{
  margin:0 !important;
  padding:10px 12px !important;
  color:var(--hm-pop-text) !important;
  font-family:var(--hm-font) !important;
  font-size:13px !important;
  line-height:1.55 !important;

  white-space:normal !important;
  overflow-wrap:anywhere !important; /* robuste */
  word-break:break-word !important;  /* robuste */
  hyphens:auto !important;

  font-weight:400 !important;
  letter-spacing:0 !important;

  max-width:100% !important;
  box-sizing:border-box !important;
}

/* ENTRAVES un peu plus compact */
.leaflet-popup.hm-entraves-popup .leaflet-popup-content{
  padding:8px 10px !important;
}

/* No bold absolu */
.leaflet-popup.hm-bus-popup *,
.leaflet-popup.hm-train-popup *,
.leaflet-popup.hm-entraves-popup *,
.leaflet-popup.hm-bixi-popup *{
  font-family:var(--hm-font) !important;
  font-weight:400 !important;
  box-sizing:border-box !important;
}


/* =========================================================
   4) COMPONENTS (structure commune)
   ========================================================= */
.hm-popup-wrap{
  position:relative;
  display:block;
  max-width:100%;
}

/* Header (par défaut) */
.hm-popup-head{
  padding-left:40px; /* laisse la place à une éventuelle icône coin (BIXI) */
}

.hm-title{
  font-size:13.5px;
  line-height:1.2;
  color:var(--hm-pop-text);
  white-space:normal;
}

.hm-sub{
  margin-top:3px;
  font-size:12px;
  color:var(--hm-pop-muted);
  white-space:normal;
}

/* Pills */
.hm-status-row{
  margin-top:10px;
  display:flex;
  gap:8px;
  justify-content:center;
  align-items:center;
  flex-wrap:wrap;
}

.hm-status-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:7px 12px;
  border-radius:999px;
  background:var(--hm-pop-surface);
  border:1px solid var(--hm-pop-border);
  color:var(--hm-pop-text);
  font-size:12px;
  white-space:nowrap;
}

/* Divider utilitaire */
.hm-divider{
  height:1px;
  background:var(--hm-pop-divider);
  margin:10px 0;
}


/* =========================================================
   5) REMIXICON safe
   ========================================================= */
.hm-ri{
  font-family:"remixicon" !important;
  font-style:normal !important;
  font-weight:normal !important;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  line-height:1;
  opacity:.95;
}

.leaflet-popup.hm-bixi-popup i[class^="ri-"],
.leaflet-popup.hm-bixi-popup i[class*=" ri-"],
.leaflet-popup.hm-train-popup i[class^="ri-"],
.leaflet-popup.hm-train-popup i[class*=" ri-"],
.leaflet-popup.hm-bus-popup i[class^="ri-"],
.leaflet-popup.hm-bus-popup i[class*=" ri-"],
.leaflet-popup.hm-entraves-popup i[class^="ri-"],
.leaflet-popup.hm-entraves-popup i[class*=" ri-"]{
  font-family:"remixicon" !important;
  font-style:normal !important;
  font-weight:normal !important;
}


/* =========================================================
   6) BUS — SOURCE OF TRUTH (anti popup mince + anti 1 lettre/ligne)
   ========================================================= */

/* Largeur stable (évite shrink ultra-mince) */
.leaflet-popup.hm-bus-popup{
  width: var(--hm-bus-w) !important;
  max-width: var(--hm-bus-w) !important;
}

.leaflet-popup.hm-bus-popup .leaflet-popup-content-wrapper{
  width: var(--hm-bus-w) !important;
  max-width: var(--hm-bus-w) !important;
  min-width: 200px !important; /* sécurité anti “popup fil” */
}

.leaflet-popup.hm-bus-popup .leaflet-popup-content{
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  padding:10px 12px !important;
}

/* Centre tout */
.leaflet-popup.hm-bus-popup .hm-popup-wrap{
  width:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  text-align:center !important;
}

/* Header centré + réserve symétrique pour le X */
.leaflet-popup.hm-bus-popup .hm-popup-head{
  width:100% !important;
  padding-left:var(--hm-close-gutter) !important;
  padding-right:var(--hm-close-gutter) !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  margin:0 !important;
}

/* ✅ FIX CRITIQUE: dans le header, on INTERDIT la casse “anywhere”
   -> sinon “Ligne” peut devenir L / i / g / n / e si la largeur est serrée */
.leaflet-popup.hm-bus-popup .hm-title,
.leaflet-popup.hm-bus-popup .hm-sub{
  width:100% !important;
  text-align:center !important;
  margin:0 auto !important;
  display:block !important;

  overflow-wrap: break-word !important; /* OK si mot vraiment trop long */
  word-break: normal !important;        /* PAS lettre-par-lettre */
  hyphens: none !important;
}

/* Accent titre bus */
.leaflet-popup.hm-bus-popup .hm-title{
  color:var(--hm-accent-train) !important;
}

/* Pills empilées */
.leaflet-popup.hm-bus-popup .hm-status-row{
  width:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  flex-wrap:nowrap !important;
}
.leaflet-popup.hm-bus-popup .hm-status-pill{
  width:fit-content !important;
  max-width:100% !important;
  margin:0 auto !important;
  white-space:nowrap !important;
}

/* No corner icon */
.leaflet-popup.hm-bus-popup .hm-corner-icon{
  display:none !important;
}

/* Mobile: largeur responsive (sans redevenir minuscule) */
@media (max-width: 768px){
  .leaflet-popup.hm-bus-popup{
    width: min(240px, calc(100vw - 48px)) !important;
    max-width: min(240px, calc(100vw - 48px)) !important;
  }
  .leaflet-popup.hm-bus-popup .leaflet-popup-content-wrapper{
    width: 100% !important;
    max-width: 100% !important;
    min-width: min(210px, calc(100vw - 48px)) !important;
  }
}


/* =========================================================
   7) TRAIN — SOURCE OF TRUTH (centré + plus étroit)
   ========================================================= */
.leaflet-popup.hm-train-popup{
  width: var(--hm-train-w) !important;
  max-width: var(--hm-train-w) !important;
}
.leaflet-popup.hm-train-popup .leaflet-popup-content-wrapper{
  width: var(--hm-train-w) !important;
  max-width: var(--hm-train-w) !important;
  min-width: 210px !important;
}
.leaflet-popup.hm-train-popup .leaflet-popup-content{
  width:100% !important;
  max-width:100% !important;
  padding:10px 12px !important;
}

/* Centre tout */
.leaflet-popup.hm-train-popup .hm-popup-wrap{
  width:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  text-align:center !important;
}
.leaflet-popup.hm-train-popup .hm-popup-head{
  width:100% !important;
  padding-left:var(--hm-close-gutter) !important;
  padding-right:var(--hm-close-gutter) !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  margin:0 !important;
}

/* Header train: même anti lettre-par-lettre */
.leaflet-popup.hm-train-popup .hm-title,
.leaflet-popup.hm-train-popup .hm-sub{
  width:100% !important;
  text-align:center !important;
  overflow-wrap: break-word !important;
  word-break: normal !important;
  hyphens: none !important;
}

/* Accent train + taille légère */
.leaflet-popup.hm-train-popup .hm-title{
  color:var(--hm-accent-train) !important;
  font-size:12.5px !important;
}
.leaflet-popup.hm-train-popup .hm-sub{
  color:var(--hm-pop-muted) !important;
  font-size:11px !important;
  line-height:1.15 !important;
}

/* Pills empilées */
.leaflet-popup.hm-train-popup .hm-status-row{
  width:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  flex-wrap:nowrap !important;
}
.leaflet-popup.hm-train-popup .hm-status-pill{
  width:fit-content !important;
  max-width:100% !important;
  margin:0 auto !important;
  white-space:nowrap !important;
}

/* No corner icon */
.leaflet-popup.hm-train-popup .hm-corner-icon{
  display:none !important;
}


/* =========================================================
   8) ENTRAVES — cohérence + lien Québec 511
   ========================================================= */
.leaflet-popup.hm-entraves-popup{
  max-width:420px !important;
}

.leaflet-popup.hm-entraves-popup a,
.leaflet-popup.hm-entraves-popup a:visited,
.leaflet-popup.hm-entraves-popup a:hover,
.leaflet-popup.hm-entraves-popup a:active,
.leaflet-popup.hm-entraves-popup a:focus{
  color:var(--hm-link) !important;
  text-decoration:none !important;
  outline:none !important;
}

.leaflet-popup.hm-entraves-popup .hm-entraves-link,
.leaflet-popup.hm-entraves-popup a.hm-entraves-link{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:8px !important;
  padding:8px 12px !important;
  border-radius:10px !important;
  background:rgba(30,41,59,.55) !important;
  border:1px solid rgba(255,255,255,.12) !important;
  color:var(--hm-link) !important;
  cursor:pointer !important;
  user-select:none !important;
}
.leaflet-popup.hm-entraves-popup .hm-entraves-link:hover,
.leaflet-popup.hm-entraves-popup a.hm-entraves-link:hover{
  border-color:rgba(103,167,228,.55) !important;
  background:rgba(30,41,59,.62) !important;
}


/* =========================================================
   9) BIXI — icône coin + spacing header (garde à gauche)
   ========================================================= */
.leaflet-popup.hm-bixi-popup{
  max-width:380px !important;
}

.leaflet-popup.hm-bixi-popup .hm-popup-wrap{
  position:relative !important;
  padding-top:2px !important;
}

.leaflet-popup.hm-bixi-popup .hm-corner-icon{
  position:absolute !important;
  left:12px !important;
  top:12px !important;
  width:30px !important;
  height:30px !important;
  border-radius:12px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:rgba(30,41,59,.55) !important;
  border:1px solid rgba(255,255,255,.10) !important;
  color:#E5E7EB !important;
}

.leaflet-popup.hm-bixi-popup .hm-popup-head{
  padding-left:52px !important;
  padding-right:28px !important;
  min-height:34px !important;
  text-align:left !important;
}

.leaflet-popup.hm-bixi-popup .hm-corner-icon i{
  display:block !important;
  line-height:1 !important;
  font-size:16px !important;
  opacity:.95 !important;
  transform:translateY(0.5px);
}


/* =========================================================
   10) LEAFLET CONTROLS — safe z-index (ne pas casser Leaflet)
   ========================================================= */
.leaflet-control-container{ pointer-events:none; }
.leaflet-control-container .leaflet-control{ pointer-events:auto; }

.leaflet-top,
.leaflet-bottom{
  z-index:1000 !important;
}


/* =========================================================
   11) LEGEND THEME (hm_dynamic_legend.js)
   ========================================================= */
.hm-legend.leaflet-control{
  position:relative;
  z-index:1200 !important;
}

.hm-legend-card{
  background:var(--hm-pop-bg);
  border:1px solid var(--hm-pop-border);
  border-radius:14px;
  box-shadow:var(--hm-pop-shadow);
  padding:10px 10px;
  color:var(--hm-pop-text);
  font-family:var(--hm-font);
}

.hm-legend-title{
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:rgba(229,231,235,.92);
  margin:0 0 8px 2px;
  font-weight:400;
}

/* =========================================================
   13) MOBILE — hide legend + share
   ========================================================= */
@media (max-width: 768px){
  .hm-legend.leaflet-control,
  .hm-legend-card{
    display:none !important;
    visibility:hidden !important;
    opacity:0 !important;
    pointer-events:none !important;
  }

  .th-map-share-btn{
    display:none !important;
    visibility:hidden !important;
    opacity:0 !important;
    pointer-events:none !important;
  }
}

/* BUS = TRAIN (typo/couleurs) */
.leaflet-popup.hm-bus-popup .hm-title{
  color: var(--hm-accent-train) !important;
  font-size: 12.5px !important;
}
.leaflet-popup.hm-bus-popup .hm-sub{
  color: var(--hm-pop-muted) !important;
  font-size: 11px !important;
  line-height: 1.15 !important;
}
