/*
  Motion Fit — painel "Como chegar" do mapa (mapa.php).
  Fica na coluna da lista, logo abaixo dos filtros.
*/

.route-form {
  padding: 14px;
  border-top: 1px solid var(--line);
  display: grid;
  gap: 12px;
}

.route-form[hidden] {
  display: none;
}

.route-form-head .eyebrow {
  margin-bottom: 4px;
}

.route-form-target {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.route-form-target strong {
  color: #131312;
}

.route-status {
  margin: 0;
  min-height: 18px;
  font-size: 12.5px;
  font-weight: 800;
  color: var(--muted);
}

.route-status.is-ok {
  color: #3f5708;
}

.route-status.is-error {
  color: #8a1f11;
}

/* Quatro modos lado a lado; cada um vira um botão que troca o traçado. */
.route-modes {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
}

.route-modes[hidden] {
  display: none;
}

.route-mode {
  padding: 10px 6px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  display: grid;
  gap: 2px;
  justify-items: center;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}

.route-mode:hover:not(:disabled) {
  border-color: #131312;
  transform: translateY(-2px);
}

.route-mode.is-active {
  border-color: #98c01f;
  background: rgba(152, 192, 31, .14);
}

/* Modo sem rota (ex.: transporte público inexistente no trecho) não some da
   lista — fica visível e desabilitado, para o usuário entender que foi
   consultado e não há opção, em vez de achar que sumiu por falha. */
.route-mode:disabled {
  opacity: .45;
  cursor: not-allowed;
}

.route-mode-icon {
  font-size: 18px;
  line-height: 1;
}

.route-mode-label {
  font-size: 10.5px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--muted);
}

.route-mode-time {
  font-size: 13px;
  font-weight: 950;
  color: #131312;
}

.route-mode-dist {
  font-size: 10.5px;
  font-weight: 700;
  color: var(--muted);
}

@media (max-width: 420px) {
  .route-modes {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .route-mode {
    transition: none;
  }
  .route-mode:hover:not(:disabled) {
    transform: none;
  }
}

/* ---------- Layout da página de mapa ---------- */
/*
  O conteúdo desta página é o mapa. Fixá-lo enquanto a lista rola evita o
  vaivém de subir para ver o traçado e descer para escolher outra unidade.
*/
@media (min-width: 981px) {
  .map-layout {
    align-items: start;
  }

  .map-layout .map-panel {
    position: sticky;
    top: 84px; /* abaixo do header fixo */
  }

  .map-layout #map {
    height: calc(100vh - 140px);
    min-height: 560px;
  }

  /* A lista tem 20 unidades: rolar dentro dela mantém o mapa e a busca à
     vista, em vez de esticar a página inteira. */
  .map-layout .units-list {
    max-height: calc(100vh - 420px);
    min-height: 260px;
    overflow-y: auto;
  }
}

/* Deixa claro qual unidade está selecionada no mapa. */
.unit-card.active {
  border-color: #98c01f;
  box-shadow: 0 0 0 2px rgba(152, 192, 31, .35);
}

/* ---------------- Aviso de "calculando" sobre o mapa ---------------- */
/*
  Aparece enquanto a rota é calculada. Fica no mapa porque o painel de rota
  pode estar fora da tela, e quem clica num marcador está olhando para o
  mapa: sem retorno ali, o clique parece não ter funcionado.
*/
.map-loading{
  position:absolute;
  top:14px;
  left:50%;
  transform:translateX(-50%);
  /* Acima dos controles do Leaflet (z-index 1000) para não ficar por baixo
     do zoom nem da atribuição. */
  z-index:1200;
  display:flex;
  align-items:center;
  gap:10px;
  max-width:calc(100% - 28px);
  padding:10px 16px;
  border-radius:999px;
  background:rgba(19,19,18,.92);
  color:#fff;
  font-size:13px;
  font-weight:800;
  line-height:1.2;
  box-shadow:0 10px 30px rgba(0,0,0,.28);
  /* Informativo: não pode bloquear o arraste do mapa durante o cálculo. */
  pointer-events:none;
}
.map-loading[hidden]{display:none}

.map-loading-text{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.map-loading-spinner{
  width:15px;
  height:15px;
  flex:0 0 auto;
  border-radius:50%;
  border:2px solid rgba(255,255,255,.28);
  border-top-color:#98c01f;
  animation:map-loading-spin .7s linear infinite;
}

@keyframes map-loading-spin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion:reduce){
  .map-loading-spinner{animation:none;border-top-color:#98c01f}
}

@media (max-width:520px){
  .map-loading{font-size:12px;padding:9px 13px}
}
