/* SEMAL — Estilos customizados */

/* Paleta principal — override do "primary" do Bootstrap */
:root {
  --semal-primary: #389c77;
  --semal-primary-rgb: 56, 156, 119;
  --semal-primary-hover: #2f8566;
  --semal-primary-active: #266b53;

  --bs-primary: var(--semal-primary);
  --bs-primary-rgb: var(--semal-primary-rgb);
  --bs-link-color: var(--semal-primary);
  --bs-link-color-rgb: var(--semal-primary-rgb);
  --bs-link-hover-color: var(--semal-primary-hover);
}

/* btn-primary precisa override de hover/active (CSS vars do componente) */
.btn-primary {
  --bs-btn-bg: var(--semal-primary);
  --bs-btn-border-color: var(--semal-primary);
  --bs-btn-hover-bg: var(--semal-primary-hover);
  --bs-btn-hover-border-color: var(--semal-primary-hover);
  --bs-btn-active-bg: var(--semal-primary-active);
  --bs-btn-active-border-color: var(--semal-primary-active);
  --bs-btn-disabled-bg: var(--semal-primary);
  --bs-btn-disabled-border-color: var(--semal-primary);
}

.btn-outline-primary {
  --bs-btn-color: var(--semal-primary);
  --bs-btn-border-color: var(--semal-primary);
  --bs-btn-hover-bg: var(--semal-primary);
  --bs-btn-hover-border-color: var(--semal-primary);
  --bs-btn-active-bg: var(--semal-primary-active);
  --bs-btn-active-border-color: var(--semal-primary-active);
}

body {
  font-size: .875rem;
}

/* Sidebar */
.sidebar {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  z-index: 100;
  padding: 48px 0 0;
  box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1);
}

.sidebar-sticky {
  height: calc(100vh - 48px);
  overflow-x: hidden;
  overflow-y: auto;
}

.sidebar .nav-link {
  font-weight: 500;
  color: #333;
  padding: .5rem 1rem;
  border-radius: .375rem;
  margin: .1rem .5rem;
}

.sidebar .nav-link:hover {
  background-color: rgba(var(--semal-primary-rgb), .08);
  color: var(--semal-primary);
}

.sidebar .nav-link.active {
  color: var(--semal-primary);
  background-color: rgba(var(--semal-primary-rgb), .12);
}

.sidebar .nav-link i {
  width: 1.2rem;
}

/* Main content offset */
@media (min-width: 768px) {
  main {
    padding-top: 1.5rem;
  }
}

/* Cards */
.card {
  border: none;
  box-shadow: 0 .125rem .5rem rgba(0, 0, 0, .075);
}

.card-header {
  background-color: transparent;
  border-bottom: 1px solid rgba(0,0,0,.1);
  font-weight: 600;
}

/* Badges de status */
.badge-agendado    { background-color: var(--semal-primary); }
.badge-confirmado  { background-color: #198754; }
.badge-em_atendimento { background-color: #fd7e14; }
.badge-realizado   { background-color: #6c757d; }
.badge-cancelado   { background-color: #dc3545; }
.badge-falta       { background-color: #ffc107; color: #000; }

/* Tabelas */
.table th {
  font-weight: 600;
  font-size: .8rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #6c757d;
}

/* HTMX loading indicator */
.htmx-indicator {
  display: none;
}
.htmx-request .htmx-indicator {
  display: inline-block;
}

/* Login page */
.login-card {
  max-width: 420px;
  margin: 0 auto;
}

/* ===== Calendário da agenda (semana e mês) ===== */
.cal-status-agendado       { --cal-color: var(--semal-primary); }
.cal-status-confirmado     { --cal-color: #198754; }
.cal-status-em_atendimento { --cal-color: #fd7e14; }
.cal-status-realizado      { --cal-color: #6c757d; }
.cal-status-cancelado      { --cal-color: #dc3545; }
.cal-status-falta          { --cal-color: #d39e00; }

.cal-period { font-weight: 600; }
.cal-period::first-letter { text-transform: uppercase; }
.cal-scroll { overflow-x: auto; }
.cal-legend .cal-chip-dot { margin-right: .35rem; }

/* Semana */
.cal-week { min-width: 720px; --cal-gutter: 3.25rem; }
.cal-week-head, .cal-week-body {
  display: grid;
  grid-template-columns: var(--cal-gutter) repeat(7, minmax(0, 1fr));
}
.cal-week-head { border-bottom: 1px solid #dee2e6; }
.cal-day-head {
  display: flex; flex-direction: column; align-items: center;
  padding: .4rem 0; color: #495057; text-decoration: none;
}
.cal-day-head:hover { background: rgba(var(--semal-primary-rgb), .06); }
.cal-dow { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #6c757d; }
.cal-dnum {
  font-size: 1.25rem; line-height: 2.1rem; width: 2.1rem; text-align: center; border-radius: 50%;
}
.cal-day-head.is-today .cal-dow { color: var(--semal-primary); font-weight: 600; }
.cal-day-head.is-today .cal-dnum { background: var(--semal-primary); color: #fff; }

.cal-week-body { position: relative; }
.cal-week-body .cal-gutter { position: relative; }
.cal-hour-label {
  position: absolute; right: .4rem; transform: translateY(-50%);
  font-size: .7rem; color: #6c757d;
}
.cal-hour-label:first-child { transform: none; }
.cal-col {
  position: relative;
  border-left: 1px solid #dee2e6;
  background-image: repeating-linear-gradient(to bottom, #e9ecef 0 1px, transparent 1px var(--cal-hour));
}
.cal-col.is-today { background-color: rgba(var(--semal-primary-rgb), .03); }
.cal-slot { position: absolute; left: 0; right: 0; height: var(--cal-hour); }
.cal-slot:hover { background: rgba(var(--semal-primary-rgb), .08); }
.cal-event {
  position: absolute; overflow: hidden; z-index: 1;
  padding: 1px 4px; border: 1px solid #fff; border-left: 3px solid var(--cal-color);
  border-radius: 4px; font-size: .72rem; line-height: 1.2;
  background: color-mix(in srgb, var(--cal-color) 14%, #fff);
  color: #212529; text-decoration: none;
}
.cal-event:hover { z-index: 2; background: color-mix(in srgb, var(--cal-color) 24%, #fff); color: #212529; }
.cal-event-title { display: block; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-event-meta { display: block; color: #495057; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-status-cancelado.cal-event .cal-event-title,
.cal-status-cancelado.cal-chip .cal-chip-title { text-decoration: line-through; }
.cal-status-cancelado.cal-event { opacity: .7; }
.cal-now { position: absolute; left: 0; right: 0; height: 2px; background: #dc3545; z-index: 3; pointer-events: none; }
.cal-now::before {
  content: ""; position: absolute; left: -5px; top: -4px;
  width: 10px; height: 10px; border-radius: 50%; background: #dc3545;
}

/* Mês */
.cal-month { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); min-width: 640px; }
.cal-month-dow {
  padding: .4rem; text-align: center; border-bottom: 1px solid #dee2e6;
  font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: #6c757d;
}
.cal-month-cell {
  min-height: 7rem; padding: .25rem; overflow: hidden;
  border-right: 1px solid #e9ecef; border-bottom: 1px solid #e9ecef;
}
.cal-month-cell:nth-child(7n) { border-right: none; }
.cal-month-cell.is-other { background: #f8f9fa; }
.cal-month-cell.is-other .cal-month-dnum { color: #adb5bd; }
.cal-month-dnum {
  display: block; width: 1.6rem; line-height: 1.6rem; margin: 0 auto .15rem; text-align: center;
  border-radius: 50%; font-size: .8rem; color: #495057; text-decoration: none;
}
.cal-month-dnum:hover { background: #e9ecef; }
.cal-month-cell.is-today .cal-month-dnum { background: var(--semal-primary); color: #fff; }
.cal-chip {
  display: flex; align-items: center; gap: .25rem; padding: 0 .25rem; border-radius: 4px;
  font-size: .72rem; line-height: 1.35rem; color: #212529; text-decoration: none; white-space: nowrap;
}
.cal-chip:hover { background: #e9ecef; color: #212529; }
.cal-chip-dot {
  display: inline-block; flex: none; width: .5rem; height: .5rem; border-radius: 50%; background: var(--cal-color);
}
.cal-chip-time { color: #6c757d; }
.cal-chip-title { overflow: hidden; text-overflow: ellipsis; }
.cal-more { display: block; padding: 0 .25rem; font-size: .72rem; font-weight: 600; color: #495057; text-decoration: none; }
.cal-more:hover { text-decoration: underline; }
