/* =============================================
   NEIX Middle Office -- calendario.css
   Listado de encuentros del mes + KPIs.
   Estetica austera MO: bordes finos, sin redondeos,
   tipografia mixta serif + sans con buen contraste.
   ============================================= */

/* ── Toolbar ─────────────────────────────── */
/* Layout: [navegacion mes]  [filtros]  [acciones a la derecha].
   El mes funciona como titulo de la pagina (serif grande) — no
   necesitamos otro H1 arriba. */
.cal-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 18px;
  margin-bottom: 22px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--gris-claro);
}
.cal-toolbar .conn-refresh,
.cal-toolbar .btn-dark {
  margin-left: auto;
}
.cal-toolbar .btn-dark {
  margin-left: 0;
}

.cal-nav {
  display: flex;
  align-items: center;
  gap: 6px;
}
.cal-nav-btn {
  width: 28px;
  height: 28px;
  border: 1px solid transparent;
  background: none;
  color: var(--arena);
  cursor: pointer;
  transition: all 0.15s;
  font-family: inherit;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.cal-nav-btn svg {
  width: 12px;
  height: 12px;
  display: block;
}
.cal-nav-btn:hover {
  color: var(--grafito);
  background: var(--crema);
}

.cal-today {
  padding: 5px 12px;
  background: none;
  border: 1px solid var(--gris-claro);
  color: var(--arena);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.15s;
  margin-left: 6px;
}
.cal-today:hover {
  border-color: var(--bordeaux);
  color: var(--bordeaux);
}

/* El mes opera como titulo del listado. Serif grande, alineado con el
   resto del flow editorial del MO. */
.cal-mes {
  font-family: var(--ff-serif);
  font-size: 26px;
  color: var(--grafito);
  min-width: 180px;
  letter-spacing: -0.01em;
  text-transform: capitalize;
  line-height: 1;
}

.cal-filter-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.conn-refresh svg {
  width: 14px;
  height: 14px;
  display: block;
}

/* ── KPIs del mes ─────────────────────────── */
.cal-kpis {
  display: grid;
  grid-template-columns: repeat(3, auto) 1fr;
  gap: 0;
  margin-bottom: 24px;
  border: 1px solid var(--gris-claro);
  background: var(--blanco);
}
.cal-kpi {
  padding: 16px 22px;
  border-right: 1px solid var(--gris-claro);
  display: flex;
  flex-direction: column;
  gap: 4px;
  justify-content: center;
}
.cal-kpi:last-child {
  border-right: none;
}
.cal-kpi-val {
  font-family: var(--ff-serif);
  font-size: 28px;
  line-height: 1;
  color: var(--grafito);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
.cal-kpi-lbl {
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--arena);
}
.cal-kpi-num {
  min-width: 110px;
}
.cal-kpi-tipos {
  padding-right: 28px;
}
.cal-kpi-tipos-row {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 6px;
}
.cal-kpi-tipo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  color: var(--grafito);
  letter-spacing: 0.02em;
}
.cal-kpi-tipo strong {
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  margin-left: 2px;
}
.cal-kpi-tipo-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  align-items: center;
  justify-content: center;
}
.cal-kpi-tipo-icon svg {
  width: 14px;
  height: 14px;
}
.cal-kpi-tipo.t-cafe {
  color: #7a5c00;
}
.cal-kpi-tipo.t-almuerzo {
  color: var(--ambar-tx);
}
.cal-kpi-tipo.t-cena {
  color: var(--bordeaux);
}
.cal-kpi-tipo.t-reunion {
  color: var(--azul-tx);
}
.cal-kpi-tipo.t-llamada {
  color: var(--verde-neix);
}
.cal-kpi-empty {
  font-size: 11px;
  color: var(--arena);
  font-style: italic;
}

/* ── Listado detallado del mes ────────────── */
.cal-list-wrap {
  margin-bottom: 12px;
}
.cal-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--blanco);
  border: 1px solid var(--gris-claro);
}

/* Separador "Pasados" dentro del listado: linea fina + label discreto.
   Antes era un bloque con bg crema que se notaba demasiado en el medio
   de la lista. Ahora es un divider sutil tipo cabecera de seccion. */
.cal-list-separator {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 18px;
  background: transparent;
  border-top: 1px solid var(--gris-claro);
  border-bottom: 1px solid var(--gris-claro);
}
.cal-list-separator span {
  font-size: 8.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--arena);
  opacity: 0.7;
}
.cal-list-separator::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--gris-claro);
  opacity: 0.5;
}

.cal-list-row {
  display: grid;
  grid-template-columns: 44px 28px 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 12px 18px;
  border-bottom: 1px solid var(--gris-claro);
  cursor: pointer;
  transition: background 0.12s;
}
.cal-list-row:last-child {
  border-bottom: none;
}
.cal-list-row:hover {
  background: var(--crema);
}

/* Fila pasada: leve atenuacion */
.cal-row-past {
  background: #fafafa;
}
.cal-row-past .cal-list-main-titulo {
  color: var(--arena);
}
.cal-row-past:hover {
  background: var(--crema);
}
.cal-row-past:hover .cal-list-main-titulo {
  color: var(--grafito);
}

/* Columna fecha: dow + dia + mes. Compacta y plana — sin borde
   separador (recargaba la fila). Dia con serif pero a 18px en lugar
   de 22px, mas integrado con el resto. */
.cal-list-fecha {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  font-variant-numeric: tabular-nums;
  padding: 4px 0;
}
.cal-list-fecha-dow {
  font-size: 8.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--arena);
  line-height: 1;
  opacity: 0.7;
}
.cal-list-fecha-dia {
  font-family: var(--ff-serif);
  font-size: 18px;
  line-height: 1.05;
  color: var(--grafito);
  letter-spacing: -0.02em;
}
.cal-list-fecha-mes {
  font-size: 8.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--arena);
  line-height: 1;
  opacity: 0.7;
}

/* Icono del tipo en columna propia, color por tipo. Reducido a 28px
   para que tenga el mismo footprint que los icon buttons de la derecha
   (Teams + editar), dando una linea visual consistente a la altura
   del row. */
.cal-list-tipo-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--gris-claro);
  background: var(--blanco);
  color: var(--arena);
}
.cal-list-tipo-icon svg {
  width: 14px;
  height: 14px;
}
.cal-list-tipo-icon.t-cafe {
  color: #7a5c00;
  border-color: #7a5c00;
}
.cal-list-tipo-icon.t-almuerzo {
  color: var(--ambar-tx);
  border-color: var(--ambar-tx);
}
.cal-list-tipo-icon.t-cena {
  color: var(--bordeaux);
  border-color: var(--bordeaux);
}
.cal-list-tipo-icon.t-reunion {
  color: var(--azul-tx);
  border-color: var(--azul);
}
.cal-list-tipo-icon.t-llamada {
  color: var(--verde-neix);
  border-color: var(--verde-neix);
}
.cal-list-tipo-icon.t-cumple {
  color: #b5478c;
  border-color: #b5478c;
}
.cal-list-tipo-icon.t-otro {
  color: var(--arena);
  border-color: var(--arena);
}

/* Etiqueta para eventos sinteticos (cumpleanos auto-generados) */
.cal-list-synthetic-tag {
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 3px 8px;
  border: 1px solid #dfb4d0;
  background: #fbf1f7;
  color: #8c3a6f;
  white-space: nowrap;
}
.cal-list-row.cal-row-synthetic {
  background: #fdf7fa;
}

.cal-list-main {
  min-width: 0;
}
.cal-list-main-titulo {
  font-family: var(--ff-serif);
  font-size: 15px;
  color: var(--grafito);
  line-height: 1.3;
  margin-bottom: 3px;
  letter-spacing: -0.005em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Meta line: hora + lugar. El "tipo" se sacó porque el icono coloreado
   en la columna izquierda ya lo comunica. Asistentes paso a tener su
   propia linea (.cal-list-main-asistentes) para no saturar este row. */
.cal-list-main-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: baseline;
  font-size: 11px;
  color: var(--arena);
  line-height: 1.3;
}
.cal-list-main-meta:empty {
  display: none;
}
.cal-list-meta-hora {
  font-variant-numeric: tabular-nums;
  color: var(--bordeaux);
  font-weight: 500;
  letter-spacing: 0.02em;
}
.cal-list-meta-lugar {
  color: var(--grafito);
  opacity: 0.85;
}
/* Si hay hora Y lugar, separar visualmente con un dot entre ellos. */
.cal-list-meta-hora + .cal-list-meta-lugar::before {
  content: '·';
  color: var(--gris-claro);
  margin-right: 8px;
  margin-left: 0;
}

/* Linea propia para asistentes, debajo del titulo y la meta principal.
   Discreta — texto pequeno e italic — pero no oculta info importante. */
.cal-list-main-asistentes {
  margin-top: 4px;
  font-size: 11px;
  font-style: italic;
  color: var(--arena);
  opacity: 0.85;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 540px;
}

/* Acciones: Teams + editar */
.cal-list-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
}

/* Teams: antes era un boton azul con texto "TEAMS" en uppercase que
   competia visualmente con el titulo. Ahora es un icon button discreto,
   mismo footprint que .cal-edit-btn — solo toma color azul al hover.
   El SVG es un chat-icon simplificado (no el logo oficial, evita
   trademark + se ve mejor en monocromo). */
.cal-teams-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: none;
  border: 1px solid var(--gris-claro);
  color: var(--arena);
  text-decoration: none;
  transition: all 0.12s;
  font-family: inherit;
}
.cal-teams-link svg {
  width: 14px;
  height: 14px;
  display: block;
}
.cal-teams-link:hover {
  border-color: var(--azul);
  color: var(--azul-tx);
  background: var(--azul-bg);
}

.cal-edit-btn {
  background: none;
  border: 1px solid var(--gris-claro);
  color: var(--arena);
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.12s;
  padding: 0;
}
.cal-edit-btn svg {
  width: 13px;
  height: 13px;
}
.cal-edit-btn:hover {
  border-color: var(--grafito);
  color: var(--grafito);
  background: var(--blanco);
}

/* ── Empty state ─────────────────────────── */
.cal-empty-state {
  padding: 50px 28px;
  text-align: center;
  border: 1px dashed var(--gris-claro);
  background: var(--blanco);
}
.cal-empty-title {
  font-family: var(--ff-serif);
  font-size: 17px;
  color: var(--grafito);
  margin-bottom: 6px;
  letter-spacing: -0.01em;
}
.cal-empty-hint {
  font-size: 12px;
  color: var(--arena);
  letter-spacing: 0.02em;
}

/* ── Responsive ──────────────────────────── */
@media (max-width: 1100px) {
  .cal-kpis {
    grid-template-columns: repeat(3, auto);
  }
  .cal-kpi-tipos {
    grid-column: 1 / -1;
    border-top: 1px solid var(--gris-claro);
    border-right: none;
  }
}
@media (max-width: 900px) {
  .cal-list-row {
    grid-template-columns: 56px 32px 1fr;
    gap: 12px;
  }
  .cal-list-actions {
    grid-column: 1 / -1;
    justify-content: flex-start;
    padding-left: 88px;
  }
}
@media (max-width: 768px) {
  .cal-toolbar {
    gap: 12px;
  }
  .cal-mes {
    min-width: 160px;
    font-size: 18px;
  }
  .cal-kpis {
    grid-template-columns: repeat(3, 1fr);
  }
  .cal-kpi {
    padding: 12px 14px;
  }
  .cal-kpi-val {
    font-size: 22px;
  }
}
@media (max-width: 640px) {
  .cal-list-row {
    grid-template-columns: 50px 28px 1fr;
    gap: 10px;
    padding: 10px 12px;
  }
  .cal-list-fecha-dia {
    font-size: 18px;
  }
  .cal-list-tipo-icon {
    width: 28px;
    height: 28px;
  }
  .cal-list-tipo-icon svg {
    width: 14px;
    height: 14px;
  }
  .cal-list-actions {
    grid-column: 1 / -1;
    padding-left: 0;
    justify-content: flex-end;
  }
}

/* Banner de filtro de oficial activo (deep-link desde KPI). Visible
   solo cuando state.oficialFilter esta set. Color crema con borde
   bordeaux a la izquierda para que se vea claro pero no agresivo. */
.cal-filter-banner {
  background: var(--crema);
  border-left: 3px solid var(--bordeaux);
  padding: 10px 16px;
  margin-bottom: 16px;
  font-size: 12px;
  color: var(--grafito);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.cal-filter-banner strong {
  font-weight: 600;
}
.cal-filter-banner-clear {
  background: none;
  border: 1px solid var(--gris-claro);
  color: var(--arena);
  font-size: 14px;
  line-height: 1;
  padding: 4px 9px;
  cursor: pointer;
  font-family: var(--ff-sans);
  transition:
    border-color 0.15s,
    color 0.15s;
}
.cal-filter-banner-clear:hover {
  border-color: var(--bordeaux);
  color: var(--bordeaux);
}
