/* ============================================================================
   Ajustes sobre o AdminLTE 4
   ----------------------------------------------------------------------------
   Arquivo deliberadamente pequeno. Tudo que o AdminLTE já resolve fica com
   ele — quanto menos CSS próprio, mais fácil de manter e mais fácil de
   atualizar a biblioteca depois sem quebrar nada.

   Só entra aqui o que o AdminLTE não cobre.
   ============================================================================ */

/* ---------------------------------------------------------------------------
   Ícones em SVG no lugar do Bootstrap Icons.
   São poucos ícones, e carregar uma fonte inteira (mais de 100 KB) só para
   eles não se paga. Estes tamanhos imitam os do <i class="bi">.
   --------------------------------------------------------------------------- */
.ic{
  width:1.15em;height:1.15em;
  vertical-align:-.15em;
  flex:none;
}
.sidebar-menu .nav-icon.ic{width:1.25rem;height:1.25rem;margin-right:.35rem}
.sidebar-brand .brand-image-xs{display:inline-flex;width:1.9rem;height:1.9rem;margin-right:.5rem}
.sidebar-brand .brand-image-xs svg{width:100%;height:100%}

/* Item de menu ainda não construído: visível, mas claramente sem ação. */
.sidebar-menu .nav-link.disabled{cursor:default;opacity:.6}
.sidebar-menu .nav-link.disabled .badge{font-size:.62rem;font-weight:600;letter-spacing:.04em}

/* ---------------------------------------------------------------------------
   Números em coluna.
   Bootstrap não liga `tabular-nums` por padrão, e sem isso valores em coluna
   ficam com largura de dígito variável — comparar R$ 1.040,00 com R$ 640,00
   numa lista vira exercício de paciência.
   --------------------------------------------------------------------------- */
.font-tabular{font-variant-numeric:tabular-nums}
.small-box .inner h3{font-variant-numeric:tabular-nums}
table td.text-end,table th.text-end{font-variant-numeric:tabular-nums}

/* ---------------------------------------------------------------------------
   Mapa de ocupação — não existe equivalente pronto no AdminLTE.
   É o quadro de parede do hotel: uma linha por quarto, uma coluna por noite.
   --------------------------------------------------------------------------- */
.mapa-ocupacao{overflow-x:auto;padding-bottom:.4rem}
.mapa-ocupacao table{border-collapse:separate;border-spacing:2px;min-width:760px;margin:0}
.mapa-ocupacao th{background:transparent;border:0;padding:.3rem .4rem}
.mapa-ocupacao thead th{font-size:.66rem;text-align:center;font-weight:600;color:var(--bs-secondary-color)}
.mapa-ocupacao thead th.fds{color:var(--bs-primary);font-weight:800}
.mapa-ocupacao tbody th{
  text-align:left;white-space:nowrap;font-size:.82rem;font-weight:700;
  position:sticky;left:0;background:var(--bs-body-bg);padding-right:.7rem;
}
.mapa-ocupacao tbody th small{display:block;font-weight:400;font-size:.72rem;color:var(--bs-secondary-color)}
.mapa-ocupacao td{padding:0;border:0}

.cel{
  height:32px;min-width:26px;border-radius:5px;
  background:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);
}
.cel.fds{background:var(--bs-primary-bg-subtle)}
.cel.ocupada{background:var(--bs-primary);border-color:var(--bs-primary)}
.cel.pendente{
  background:repeating-linear-gradient(45deg,var(--bs-warning) 0 5px,transparent 5px 10px);
  border-color:var(--bs-warning);
}
.cel.bloqueada{
  background:repeating-linear-gradient(45deg,var(--bs-secondary) 0 4px,transparent 4px 8px);
  border-color:var(--bs-secondary);
}
.cel[title]{cursor:help}

/* ---------------------------------------------------------------------------
   Conta do hóspede — o saldo é o número que decide o check-out, então é o
   único que ganha destaque de tamanho.
   --------------------------------------------------------------------------- */
.saldo-final{font-size:2rem;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.linha-estornada{opacity:.5}
.linha-estornada td:not(:last-child){text-decoration:line-through}

/* Botões de lançamento rápido de consumo. */
.atalho-produto{text-align:left;line-height:1.25}
.atalho-produto small{display:block;font-variant-numeric:tabular-nums;opacity:.75}

/* ---------------------------------------------------------------------------
   Rodapé da barra lateral com o usuário logado.
   --------------------------------------------------------------------------- */
.sidebar-user{margin-top:auto}
.app-sidebar .sidebar-wrapper{display:flex;flex-direction:column}

/* Formulários lado a lado numa célula de tabela não devem empilhar. */
td form{display:inline-block;margin:0}

/* ---------------------------------------------------------------------------
   Linha do tempo do histórico da reserva.
   Cada mudança de status vira um ponto na linha. Não existe componente
   equivalente pronto no AdminLTE 4.
   --------------------------------------------------------------------------- */
.linha-tempo{list-style:none;margin:0;padding:0;position:relative}
.linha-tempo::before{
  content:'';position:absolute;left:7px;top:4px;bottom:4px;width:2px;
  background:var(--bs-border-color);
}
.linha-tempo li{position:relative;padding:0 0 1.1rem 1.8rem}
.linha-tempo li:last-child{padding-bottom:0}
.linha-tempo li::before{
  content:'';position:absolute;left:2px;top:3px;width:12px;height:12px;border-radius:50%;
  background:var(--bs-secondary);border:2px solid var(--bs-body-bg);
}
.linha-tempo li.marco-bom::before{background:var(--bs-success)}
.linha-tempo li.marco-ruim::before{background:var(--bs-danger)}
.linha-tempo li.marco-atencao::before{background:var(--bs-warning)}
.linha-tempo .quando{font-size:.78rem;color:var(--bs-secondary-color);font-variant-numeric:tabular-nums}

/* Bloco do Pix copia-e-cola: monoespaçado, quebrando em qualquer ponto para
   a string enorme não estourar a caixa no celular. */
.pix-codigo{
  font-family:ui-monospace,'Cascadia Mono','Consolas',monospace;
  font-size:.82rem;line-height:1.5;word-break:break-all;
  background:var(--bs-tertiary-bg);border:1px solid var(--bs-border-color);
  border-radius:8px;padding:.8rem;margin:0;
}
