/* =====================================================================
   CloudClinic ERP — Folha de estilos principal
   Complementa o Bootstrap 5.3 | Padrão: mobile-first
   ===================================================================== */

/* ------------------------- Variáveis do tema ------------------------ */
:root {
  --cc-primary:        #0d6efd;
  --cc-sidebar-bg:     #1a2332;
  --cc-sidebar-hover:  #243044;
  --cc-sidebar-active: #0d6efd;
  --cc-content-bg:     #f4f6f9;

  /* Cores de status (RF-01.03) — fonte única de verdade */
  --st-agendado:       #6c757d;
  --st-confirmado:     #0d6efd;
  --st-aguardando:     #fd7e14;
  --st-em-atendimento: #6610f2;
  --st-finalizado:     #198754;
  --st-faltou:         #dc3545;
  --st-cancelado:      #adb5bd;
}

/* --------------------------- Base / Layout -------------------------- */
body {
  font-size: .925rem;
  background: var(--cc-content-bg);
}

main {
  min-height: 100vh;
  overflow-x: hidden;
}

/* ----------------------------- Sidebar ------------------------------ */
.sidebar {
  background: var(--cc-sidebar-bg) !important;
  flex-shrink: 0;
  transition: margin-left .25s ease;
}

.sidebar .nav-link {
  border-radius: .375rem;
  padding: .45rem .75rem;
  font-size: .875rem;
  transition: background .15s ease;
}

.sidebar .nav-link:hover {
  background: var(--cc-sidebar-hover);
}

.sidebar .nav-link.active {
  background: var(--cc-sidebar-active);
}

/* Sidebar responsiva: recolhe em telas pequenas (RNF-06) */
@media (max-width: 991.98px) {
  .sidebar {
    position: fixed;
    z-index: 1045;
    margin-left: -240px;
    height: 100vh;
    overflow-y: auto;
  }
  .sidebar.show {
    margin-left: 0;
    box-shadow: 0 0 30px rgba(0, 0, 0, .4);
  }
  .sidebar-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: rgba(0, 0, 0, .5);
  }
}

/* --------------------------- Cards / Tabelas ------------------------ */
.card {
  border: none;
  box-shadow: 0 1px 4px rgba(20, 30, 50, .08);
}

.card .table thead th {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: #6c757d;
  white-space: nowrap;
}

.table-responsive {
  scrollbar-width: thin;
}

/* Cards de indicador (dashboards) */
.card.border-primary,   .card.border-info,   .card.border-warning,
.card.border-success,   .card.border-danger, .card.border-secondary {
  border-left: 4px solid !important;
  border-top: none !important;
  border-right: none !important;
  border-bottom: none !important;
}

/* -------------------- Badges de status (RF-01.03) ------------------- */
.badge-status-agendado       { background: var(--st-agendado); }
.badge-status-confirmado     { background: var(--st-confirmado); }
.badge-status-aguardando     { background: var(--st-aguardando); }
.badge-status-em_atendimento { background: var(--st-em-atendimento); }
.badge-status-finalizado     { background: var(--st-finalizado); }
.badge-status-faltou         { background: var(--st-faltou); }
.badge-status-cancelado      { background: var(--st-cancelado); }

/* ----------------------- Calendário da Agenda ----------------------- */
/* Modo mês: 7 colunas fixas */
.col-cal {
  width: 14.2857%;
  min-height: 96px;
  font-size: .8rem;
}

/* Chips de evento (dia/semana/mês) */
.evento-chip {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: .75rem;
  line-height: 1.3;
  user-select: none;
}

.evento-chip:active { cursor: grabbing !important; }
.evento-chip:hover  { filter: brightness(1.12); }

/* Coluna de dia recebendo drop */
[data-dia].drag-over {
  background: #e7f1ff;
  outline: 2px dashed var(--cc-primary);
  outline-offset: -4px;
}

/* --------------------- Autocomplete de paciente --------------------- */
#na_sugestoes { max-height: 220px; overflow-y: auto; }

/* ------------------- Editor de texto clínico (RF-08.2) -------------- */
/* Editor contenteditable — permite APENAS negrito/itálico/sublinhado   */
.editor-clinico {
  min-height: 180px;
  max-height: 420px;
  overflow-y: auto;
  border: 1px solid #ced4da;
  border-radius: 0 0 .375rem .375rem;
  padding: .75rem 1rem;
  background: #fff;
  outline: none;
}

.editor-clinico:focus {
  border-color: #86b7fe;
  box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .15);
}

.editor-toolbar {
  border: 1px solid #ced4da;
  border-bottom: none;
  border-radius: .375rem .375rem 0 0;
  background: #f8f9fa;
  padding: .35rem .5rem;
}

.editor-toolbar .btn.active {
  background: var(--cc-primary);
  color: #fff;
}

/* Histórico de atendimentos anteriores (abaixo do editor) */
.historico-clinico {
  max-height: 380px;
  overflow-y: auto;
}

.historico-clinico .registro {
  border-left: 3px solid var(--cc-primary);
  background: #fff;
  padding: .6rem .9rem;
  margin-bottom: .6rem;
  border-radius: 0 .375rem .375rem 0;
}

.historico-clinico .registro.adendo {
  border-left-color: var(--st-aguardando);
  background: #fff8f0;
}

/* Prontuário finalizado = somente leitura visual (RN-03) */
.prontuario-bloqueado .editor-clinico,
.prontuario-bloqueado input:not(.sempre-ativo),
.prontuario-bloqueado select,
.prontuario-bloqueado textarea {
  background: #f1f3f5 !important;
  pointer-events: none;
  opacity: .8;
}

.faixa-imutavel {
  background: repeating-linear-gradient(
    -45deg, #fff3cd, #fff3cd 12px, #ffe69c 12px, #ffe69c 24px);
  border: 1px solid #ffc107;
  border-radius: .375rem;
  font-weight: 600;
}

/* ------------------------ Abas do prontuário ------------------------ */
.nav-tabs-prontuario .nav-link {
  font-size: .85rem;
  color: #495057;
  padding: .5rem .8rem;
}

.nav-tabs-prontuario .nav-link.active {
  font-weight: 600;
  color: var(--cc-primary);
  border-bottom: 3px solid var(--cc-primary);
}

.nav-tabs-prontuario .nav-link .badge {
  font-size: .65rem;
  vertical-align: top;
}

/* -------------------- Fila de atendimento (RF-03) ------------------- */
.fila-card {
  border-left: 4px solid var(--st-aguardando);
  transition: transform .12s ease;
}

.fila-card:hover { transform: translateX(3px); }

.fila-card.em-atendimento { border-left-color: var(--st-em-atendimento); }

.tempo-espera {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

.tempo-espera.alerta { color: var(--st-faltou); }

/* ------------------------- Anexos / Upload -------------------------- */
.dropzone {
  border: 2px dashed #adb5bd;
  border-radius: .5rem;
  padding: 2rem 1rem;
  text-align: center;
  color: #6c757d;
  cursor: pointer;
  transition: all .15s ease;
}

.dropzone:hover, .dropzone.drag-over {
  border-color: var(--cc-primary);
  background: #e7f1ff;
  color: var(--cc-primary);
}

.anexo-item .bi-file-earmark-pdf   { color: #dc3545; }
.anexo-item .bi-file-earmark-word  { color: #2b579a; }
.anexo-item .bi-file-earmark-image { color: #198754; }

/* -------------------- Formulários dinâmicos (RF-08.7) --------------- */
.pergunta-builder {
  background: #fff;
  border: 1px solid #dee2e6;
  border-radius: .375rem;
  padding: .75rem;
  margin-bottom: .5rem;
}

.pergunta-builder .grip {
  cursor: grab;
  color: #adb5bd;
}

.escala-opcoes .btn-check:checked + .btn {
  background: var(--cc-primary);
  color: #fff;
}

/* --------------------------- Financeiro ----------------------------- */
.valor-positivo { color: var(--st-finalizado); font-weight: 600; }
.valor-negativo { color: var(--st-faltou);     font-weight: 600; }

.lancamento-vencido td { background: #fff5f5; }

/* --------------------------- Login page ----------------------------- */
.login-bg {
  background: linear-gradient(135deg, #1a2332 0%, #0d6efd 100%);
}

/* --------------------------- Utilidades ----------------------------- */
.cursor-pointer { cursor: pointer; }

.text-truncate-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Toasts empilhados */
.alert.position-fixed { min-width: 280px; animation: slideIn .25s ease; }

@keyframes slideIn {
  from { transform: translateX(110%); opacity: 0; }
  to   { transform: translateX(0);    opacity: 1; }
}

/* --------------------- Impressão (receitas/laudos) ------------------ */
@media print {
  .sidebar, .btn, .nav-tabs-prontuario, .no-print, form.card,
  .modal, .alert.position-fixed { display: none !important; }

  main { padding: 0 !important; background: #fff !important; }
  .card { box-shadow: none; border: none; }
  body  { font-size: 12pt; }

  .print-cabecalho {
    display: block !important;
    border-bottom: 2px solid #000;
    margin-bottom: 1rem;
    padding-bottom: .5rem;
  }
}

.print-cabecalho { display: none; }