/* MyLabs v2.9 · Mapa Operacional e Planejamento de Rotas
   Carregada depois de v28-profissional.css. Só estiliza elementos novos ou reorganizados. */

/* Chip de aparelhos (lista, planejamento) -------------------------------- */
.device-chip { display:inline-flex; align-items:baseline; gap:3px; padding:2px 8px; border-radius:999px; background:rgba(59,130,246,.16); border:1px solid rgba(96,165,250,.35); color:#bfdbfe; font-weight:700; font-size:.78rem; line-height:1.5; white-space:nowrap; }
.device-chip small { color:#93c5fd !important; font-weight:500; font-size:.7rem; }

/* Painel da empresa selecionada no mapa ---------------------------------- */
#map-company-card .intel-detail-header, #map-company-card .official-map-detail > header { display:grid !important; grid-template-columns:auto minmax(0,1fr) auto; align-items:start; gap:8px; }
.intel-detail-close { width:32px; height:32px; min-width:32px; padding:0 !important; display:grid; place-items:center; border-radius:8px !important; border:1px solid var(--pro-border-strong) !important; background:var(--pro-surface-2) !important; color:var(--pro-text) !important; font-size:20px; line-height:1; cursor:pointer; }
.intel-detail-close:hover { background:rgba(239,68,68,.18) !important; border-color:rgba(239,68,68,.55) !important; }
#map-company-card button.intel-detail-name { font-size:1.02rem; border-bottom:1px dashed rgba(96,165,250,.6) !important; }
#map-company-card button.intel-detail-name:hover, #map-company-card button.intel-detail-name:focus-visible { color:#93c5fd !important; border-bottom-style:solid !important; outline:none; }
.intel-detail-keyfacts { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:10px 0; }
.intel-detail-keyfacts > div { padding:10px; border-radius:10px; background:var(--pro-surface-2); border:1px solid var(--pro-border); min-width:0; }
.intel-detail-keyfacts span { display:block; color:var(--pro-muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; }
.intel-detail-keyfacts strong { display:block; font-size:1.25rem; color:var(--pro-text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.intel-detail-keyfacts small { display:block; margin-top:2px; font-size:.74rem; }
#map-company-card .intel-detail-actions { display:grid !important; grid-template-columns:1fr 1fr !important; gap:6px; }
#map-company-card .intel-detail-actions .primary { grid-column:1 / -1; }

/* Lista de empresas do mapa ---------------------------------------------- */
#humyn-map-company-list { min-height:380px !important; flex:1 1 auto; }
#humyn-map-company-list .humyn-map-company-row { flex:0 0 auto !important; height:auto !important; display:grid !important; grid-template-columns:auto minmax(0,1fr) !important; align-items:start; gap:10px; padding:11px 12px !important; min-height:0 !important; }
#humyn-map-company-list .humyn-map-company-row.is-marked { border-color:rgba(59,130,246,.75) !important; background:rgba(37,99,235,.12) !important; }
.humyn-map-company-title { min-width:0; }
#humyn-map-company-list button.humyn-map-company-name, #map-company-card button.intel-detail-name { appearance:none; display:inline; width:auto !important; min-width:0 !important; height:auto !important; min-height:0 !important; margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important; background:none !important; box-shadow:none !important; cursor:pointer; text-align:left; white-space:normal; font-weight:700; font-size:.95rem; line-height:1.3; color:var(--pro-text) !important; }
#humyn-map-company-list button.humyn-map-company-name:hover, #humyn-map-company-list button.humyn-map-company-name:focus-visible { color:#93c5fd !important; text-decoration:underline; outline:none; }
.humyn-map-company-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px; font-size:.78rem; }
.humyn-map-company-meta small { color:var(--pro-muted); }
.humyn-map-company-meta .humyn-map-location-state { font-weight:600; }
.humyn-map-company-foot { display:flex; align-items:center; gap:6px; min-width:0; }
.humyn-map-company-foot .humyn-map-row-assign { flex:1; margin:0; }
.humyn-map-company-copy { display:flex; flex-direction:column; gap:4px; min-width:0; }
.humyn-map-company-copy > small { color:var(--pro-muted); }
.humyn-map-location-state.state-confirmed { color:#4ade80 !important; }
.humyn-map-location-state.state-review, .humyn-map-location-state.state-missing { color:#fbbf24 !important; }
.humyn-map-row-assign { display:flex !important; align-items:center; gap:6px; margin:2px 0 0; font-size:.75rem; color:var(--pro-muted); }
.humyn-map-row-assign span { white-space:nowrap; }
.humyn-map-row-assign select { flex:1; min-width:0; height:30px !important; min-height:30px !important; padding:2px 8px !important; font-size:.8rem !important; }
.humyn-map-row-assign-empty { color:var(--pro-muted); }
.humyn-map-row-action { flex:0 0 auto; white-space:nowrap; font-size:.76rem !important; height:30px !important; min-height:30px !important; padding:0 10px !important; }
.map-assign-check { padding-top:2px; }
.map-assign-check input { width:18px; height:18px; accent-color:var(--pro-primary); cursor:pointer; }

/* Barra de atribuição: dica quando ociosa, ação quando há marcadas ------- */
.map-assign-bar { margin:10px 0 !important; padding:10px 12px !important; border-radius:10px !important; border:1px solid var(--pro-border) !important; background:var(--pro-surface-2) !important; display:flex; flex-direction:column; gap:8px; }
.map-assign-bar.is-active { position:sticky; top:0; z-index:5; border-color:rgba(59,130,246,.7) !important; background:#132a4a !important; box-shadow:0 6px 18px rgba(0,0,0,.35); }
.map-assign-tip { margin:0; color:var(--pro-muted); font-size:.8rem; line-height:1.4; }
.map-assign-quick { display:flex; flex-wrap:wrap; gap:6px; }
.map-assign-quick button { font-size:.78rem !important; padding:5px 10px !important; }
.map-assign-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.map-assign-actions { display:grid !important; grid-template-columns:minmax(0,1fr) auto; gap:6px; }
.link-button { all:unset; cursor:pointer; color:#93c5fd; font-size:.8rem; text-decoration:underline; }

/* Cabeçalho do mapa: Localizar operadores + mais opções ------------------ */
.intel-map-header .actions { display:flex; flex-wrap:wrap; align-items:center; gap:6px; }
.map-team-locate { display:inline-flex !important; align-items:center; gap:8px; background:var(--pro-success) !important; border-color:var(--pro-success) !important; color:#fff !important; font-weight:650; }
.map-team-locate:hover:not(:disabled) { filter:brightness(1.1); }
.map-team-locate:disabled { opacity:1 !important; cursor:default; }
.map-team-locate.is-active { background:#14532d !important; border-color:#22c55e !important; color:#bbf7d0 !important; }
.map-team-dot { width:9px; height:9px; border-radius:50%; background:#fff; box-shadow:0 0 0 3px rgba(255,255,255,.25); }
.map-team-locate.is-active .map-team-dot { background:#4ade80; animation:map-team-pulse 1.6s ease-in-out infinite; }
@keyframes map-team-pulse { 0%,100% { box-shadow:0 0 0 2px rgba(74,222,128,.5); } 50% { box-shadow:0 0 0 7px rgba(74,222,128,0); } }
@media (prefers-reduced-motion:reduce) { .map-team-locate.is-active .map-team-dot { animation:none; } }
.map-team-status { margin:6px 0 8px; padding:8px 12px; border-radius:8px; border:1px solid rgba(34,197,94,.35); background:rgba(22,163,74,.12); color:#bbf7d0; font-size:.82rem; }
.map-more-actions { position:relative; }
.map-more-actions summary { list-style:none; cursor:pointer; padding:7px 12px; border-radius:8px; border:1px solid var(--pro-border-strong); background:var(--pro-surface-2); color:var(--pro-text); font-size:.85rem; }
.map-more-actions summary::-webkit-details-marker { display:none; }
.map-more-actions > div { position:absolute; right:0; top:calc(100% + 6px); z-index:900; display:flex; flex-direction:column; gap:6px; min-width:230px; padding:8px; border-radius:10px; border:1px solid var(--pro-border-strong); background:var(--pro-surface); box-shadow:var(--pro-shadow); }
.map-privacy { display:none !important; }

/* Pino da empresa com contador de aparelhos ------------------------------ */
.point-pin { position:relative; }
.point-pin .pin-devices { position:absolute; left:-9px; top:-9px; min-width:18px; height:18px; padding:0 4px; border-radius:9px; background:#2563eb; border:2px solid #0b1220; color:#fff; font:700 10px/14px var(--pro-font); font-style:normal; text-align:center; box-sizing:border-box; }

/* Planejamento de rotas --------------------------------------------------- */
body.route-planning-active .route-map-metrics { grid-template-columns:repeat(6,minmax(0,1fr)) !important; }
body.route-planning-active .route-map-metrics .route-metric-total { border-color:rgba(59,130,246,.7) !important; background:linear-gradient(140deg,#16325a,#0f2240) !important; }
body.route-planning-active .route-map-metrics .route-metric-total strong { font-size:18px !important; color:#fff !important; }
body.route-planning-active .route-map-metrics small { font-size:10px !important; }
.route-map-metrics .metric-device { background:#1e3a5f !important; color:#93c5fd !important; }
.route-map-metrics .metric-service { background:#123c32 !important; color:#6ee7b7 !important; }
.route-map-metrics .metric-travel { background:#3b2a12 !important; color:#fcd34d !important; }
@media (max-width:1320px) { body.route-planning-active .route-map-metrics { grid-template-columns:repeat(3,minmax(0,1fr)) !important; } }
@media (max-width:640px) { body.route-planning-active .route-map-metrics { grid-template-columns:repeat(2,minmax(0,1fr)) !important; } }
.route-company-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:3px 0 2px; font-size:.75rem; color:var(--pro-muted); }
.route-service-chip { padding:1px 7px; border-radius:999px; background:rgba(16,185,129,.14); border:1px solid rgba(16,185,129,.35); color:#6ee7b7; white-space:nowrap; }
.route-group-totals { margin:4px 0 0 !important; color:#bfdbfe !important; font-weight:600; font-size:.8rem; }
.route-group-totals.is-over { color:#fcd34d !important; }
.route-suggest-day { background:var(--pro-primary) !important; border-color:var(--pro-primary) !important; color:#fff !important; font-weight:650; }
