/* Módulo Agenda (calendario) — estilos propios (prefijo lbo-cal-).
 * Los colores de cada servicio llegan como variables en línea:
 * --c-bg (fondo suave), --c-tx (texto) y --c-dot (borde / acento). */

.lbo-cal { display: flex; flex-direction: column; gap: 14px; }

/* ── Cabecera ─────────────────────────────────────── */
.lbo-cal-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 14px; flex-wrap: wrap;
}
.lbo-cal-titulo { font-size: 28px; font-weight: 700; color: var(--lbo-gray-900); margin: 0; letter-spacing: -.01em; }
.lbo-cal-sub { font-size: 15px; color: var(--lbo-gray-500); margin: 2px 0 0; }
.lbo-cal-head-ctl { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

.lbo-cal-vistas {
  display: inline-flex; background: var(--lbo-gray-100); border-radius: 12px; padding: 4px; gap: 2px;
}
.lbo-cal-vista {
  min-height: 40px; padding: 0 18px; border: 0; border-radius: 9px; background: transparent;
  font: 600 15px var(--lbo-font); color: var(--lbo-gray-600); cursor: pointer;
}
.lbo-cal-vista:hover { color: var(--lbo-gray-900); }
.lbo-cal-vista.activo { background: var(--lbo-white); color: var(--lbo-blue-dark); box-shadow: 0 1px 3px rgba(19, 26, 46, .12); }

.lbo-cal-nav { display: flex; align-items: center; gap: 6px; }
.lbo-cal-navbtn {
  min-width: 44px; height: 44px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--lbo-gray-300); border-radius: 11px; background: var(--lbo-white);
  color: var(--lbo-gray-700); cursor: pointer; font: 600 15px var(--lbo-font);
}
.lbo-cal-navbtn:hover { background: var(--lbo-gray-50); border-color: var(--lbo-blue); color: var(--lbo-blue); }
.lbo-cal-hoy { padding: 0 18px; }

/* ── Filtros y leyenda ────────────────────────────── */
.lbo-cal-filtros {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px;
}
.lbo-cal-chips { flex: 1 1 auto; min-width: 0; }
.lbo-cal-selects { display: flex; gap: 10px; flex-wrap: wrap; margin-left: auto; }
.lbo-cal-sel { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--lbo-gray-500); }
.lbo-cal-sel select {
  min-height: 40px; padding: 0 12px; border: 1px solid var(--lbo-gray-300); border-radius: 10px;
  background: var(--lbo-white); font: 500 14px var(--lbo-font); color: var(--lbo-gray-800); cursor: pointer;
}
.lbo-cal-leyenda { display: flex; flex-wrap: wrap; gap: 6px 16px; width: 100%; }
.lbo-cal-ley { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--lbo-gray-600); }
.lbo-cal-ley i { width: 14px; height: 14px; border-radius: 4px; background: var(--c-bg); border-left: 4px solid var(--c-dot); }

.lbo-cal-est {
  display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 700;
  background: var(--c-bg); color: var(--c-tx); white-space: nowrap;
}

/* ── Tarjeta contenedora y estados vacíos ─────────── */
.lbo-cal-card { padding: 0; overflow: hidden; border-radius: 18px; box-shadow: var(--lbo-shadow-md); }
.lbo-cal-esqueleto { display: grid; gap: 10px; }
.lbo-cal-esqueleto .lbo-skeleton { height: 48px; border-radius: 10px; }
.lbo-cal-vacio { text-align: center; padding: 40px 20px; }
.lbo-cal-vacio-t { font-size: 17px; font-weight: 700; color: var(--lbo-gray-900); margin: 0 0 6px; }
.lbo-cal-vacio-s { font-size: 14px; color: var(--lbo-gray-500); margin: 0 0 14px; }
.lbo-cal-aviso {
  margin: 0; padding: 12px 18px; font-size: 14px; font-weight: 600; color: #047857;
  background: #ECFDF5; border-bottom: 1px solid #D1FAE5;
}

/* ── Rejilla: agenda por técnico (Día) y semana ──── */
.lbo-cal-ag-scroll { overflow-x: auto; }
.lbo-cal-ag { display: grid; min-width: 100%; }
.lbo-cal-ag > * { border-left: 1px solid var(--lbo-gray-100); }
.lbo-cal-ag-esq, .lbo-cal-ag-gutter, .lbo-cal-ag-sinlbl { border-left: 0 !important; }
.lbo-cal-ag-esq { border-bottom: 1px solid var(--lbo-gray-200); }

.lbo-cal-ag-col {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 14px 10px; min-height: 68px; background: var(--lbo-white);
  border: 0; border-bottom: 1px solid var(--lbo-gray-200); cursor: pointer; font-family: var(--lbo-font); text-align: left;
}
.lbo-cal-ag-col:hover { background: var(--lbo-gray-50); }
.lbo-cal-ag-col-txt { display: flex; flex-direction: column; min-width: 0; }
.lbo-cal-ag-col-txt strong { font-size: 15px; color: var(--lbo-gray-900); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lbo-cal-ag-col-txt small { font-size: 13px; color: var(--lbo-gray-500); font-weight: 500; }
.lbo-cal-ag-col-txt small.libre { color: #059669; font-weight: 700; }

.lbo-cal-av {
  flex-shrink: 0; width: 36px; height: 36px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--c-dot); color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .02em;
}
.lbo-cal-av.chico { width: 28px; height: 28px; font-size: 11.5px; }

.lbo-cal-ag-sinlbl {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  font-size: 12px; font-weight: 700; color: var(--lbo-gray-500); text-align: center;
  background: var(--lbo-gray-50); border-bottom: 1px solid var(--lbo-gray-200); padding: 6px 2px;
}
.lbo-cal-ag-sin {
  display: flex; flex-direction: column; gap: 5px; padding: 8px;
  background: var(--lbo-gray-50); border-bottom: 1px solid var(--lbo-gray-200);
}
.lbo-cal-ag-sin-vacio { color: var(--lbo-gray-300); font-size: 14px; text-align: center; padding: 4px 0; }
.lbo-cal-sh {
  display: block; width: 100%; text-align: left; cursor: pointer;
  padding: 7px 10px; border-radius: 8px; border: 0; border-left: 4px solid var(--c-dot);
  background: var(--c-bg); color: var(--c-tx); font: 500 13px var(--lbo-font);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lbo-cal-sh .lbo-cal-est { margin-left: 6px; font-size: 11px; background: #fff; }
.lbo-cal-sh:hover { filter: brightness(.97); }

.lbo-cal-ag-gutter { position: relative; }
.lbo-cal-hora {
  position: absolute; right: 10px; transform: translateY(4px);
  font-size: 13px; font-weight: 500; color: var(--lbo-gray-400);
}
.lbo-cal-ag-cuerpo { position: relative; background: var(--lbo-white); }
.lbo-cal-ag-cuerpo.libre { background: repeating-linear-gradient(0deg, transparent 0, transparent 100%); }
.lbo-cal-ag-cuerpo.hoy { background: #FAFDFF; }
.lbo-cal-linea { position: absolute; left: 0; right: 0; border-top: 1px solid var(--lbo-gray-100); }
.lbo-cal-ahora { position: absolute; left: 0; right: 0; border-top: 2px solid #EF4444; z-index: 2; }
.lbo-cal-ahora.sin-punto::before { display: none; }
.lbo-cal-ahora::before {
  content: ''; position: absolute; left: -5px; top: -6px; width: 10px; height: 10px; border-radius: 50%; background: #EF4444;
}

.lbo-cal-blq {
  position: absolute; box-sizing: border-box; overflow: hidden; z-index: 1;
  display: flex; flex-direction: column; gap: 1px; text-align: left; cursor: pointer;
  padding: 6px 10px; border: 0; border-left: 4px solid var(--c-dot); border-radius: 10px;
  background: var(--c-bg); color: var(--c-tx); font-family: var(--lbo-font);
  box-shadow: 0 1px 2px rgba(19, 26, 46, .06);
  transition: box-shadow .15s, transform .15s;
}
.lbo-cal-blq:hover { box-shadow: 0 6px 16px -6px rgba(19, 26, 46, .25); z-index: 3; }
.lbo-cal-blq:focus-visible, .lbo-cal-sh:focus-visible, .lbo-cal-m-card:focus-visible { outline: 3px solid rgba(12, 132, 204, .45); outline-offset: 1px; }
.lbo-cal-blq > span { flex-shrink: 0; }
.lbo-cal-blq-t { font-size: 14px; font-weight: 600; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lbo-cal-blq-h { font-size: 13px; font-weight: 500; opacity: .9; display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.lbo-cal-blq-h .lbo-cal-est { background: #fff; font-size: 11px; padding: 1px 7px; }
.lbo-cal-blq-s { font-size: 12.5px; color: var(--lbo-gray-600); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lbo-cal-blq.compacto { padding: 4px 7px; border-radius: 8px; border-left-width: 3px; }
.lbo-cal-blq.compacto .lbo-cal-blq-t { font-size: 13px; }
.lbo-cal-blq.compacto .lbo-cal-blq-h { font-size: 12px; }
.lbo-cal-blq.compacto .lbo-cal-blq-s { font-size: 12px; }
.cancelado { opacity: .6; }
.cancelado .lbo-cal-blq-t, .lbo-cal-mes-svc.cancelado, .lbo-cal-m-card.cancelado .lbo-cal-m-tit { text-decoration: line-through; }

/* Semana: encabezado de días */
.lbo-cal-sem-dia {
  display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 10px 4px;
  border: 0; border-bottom: 1px solid var(--lbo-gray-200); background: var(--lbo-white);
  cursor: pointer; font-family: var(--lbo-font);
}
.lbo-cal-sem-dia:hover { background: var(--lbo-gray-50); }
.lbo-cal-sem-dia small { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--lbo-gray-500); }
.lbo-cal-sem-dia strong { font-size: 20px; color: var(--lbo-gray-900); line-height: 1.2; }
.lbo-cal-sem-dia em { font-style: normal; font-size: 12px; color: var(--lbo-gray-400); }
.lbo-cal-sem-dia.hoy { background: var(--lbo-blue-light); }
.lbo-cal-sem-dia.hoy strong, .lbo-cal-sem-dia.hoy small { color: var(--lbo-blue-dark); }

/* ── Mes ──────────────────────────────────────────── */
.lbo-cal-mes { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.lbo-cal-mes-dow {
  padding: 11px 6px; text-align: center; font-size: 12.5px; font-weight: 700; letter-spacing: .05em;
  text-transform: uppercase; color: var(--lbo-gray-500); border-bottom: 1px solid var(--lbo-gray-200);
}
.lbo-cal-mes-celda {
  min-height: 112px; padding: 6px; display: flex; flex-direction: column; gap: 3px; min-width: 0;
  border-right: 1px solid var(--lbo-gray-100); border-bottom: 1px solid var(--lbo-gray-100); background: var(--lbo-white);
}
.lbo-cal-mes-celda:nth-child(7n) { border-right: 0; }
.lbo-cal-mes-celda.finde { background: #FBFBFD; }
.lbo-cal-mes-celda.fuera { background: var(--lbo-gray-50); }
.lbo-cal-mes-celda.hoy { box-shadow: inset 0 0 0 2px var(--lbo-blue); }
.lbo-cal-mes-num {
  align-self: flex-start; min-width: 30px; height: 30px; padding: 0 6px; border-radius: 999px; border: 0;
  background: transparent; font: 600 14px var(--lbo-font); color: var(--lbo-gray-700); cursor: pointer;
}
.lbo-cal-mes-num:hover { background: var(--lbo-gray-100); }
.lbo-cal-mes-celda.hoy .lbo-cal-mes-num { background: var(--lbo-blue); color: #fff; }
.lbo-cal-mes-svc {
  display: block; width: 100%; text-align: left; cursor: pointer;
  padding: 3px 7px; border: 0; border-left: 3px solid var(--c-dot); border-radius: 6px;
  background: var(--c-bg); color: var(--c-tx); font: 500 12.5px var(--lbo-font);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lbo-cal-mes-svc .h { font-weight: 700; }
.lbo-cal-mes-mas {
  align-self: flex-start; border: 0; background: none; padding: 2px 6px; cursor: pointer;
  font: 700 12.5px var(--lbo-font); color: var(--lbo-blue-dark);
}

/* ── Celular: tira de días ────────────────────────── */
.lbo-cal-tira {
  display: flex; align-items: center; gap: 4px;
  background: var(--lbo-white); border: 1px solid var(--lbo-gray-200); border-radius: 18px; padding: 8px 4px;
  box-shadow: var(--lbo-shadow-sm);
}
.lbo-cal-tira-flecha {
  flex-shrink: 0; width: 34px; height: 56px; border: 0; background: none; color: var(--lbo-gray-500);
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 10px;
}
.lbo-cal-tira-dias { flex: 1; display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.lbo-cal-tira-dia {
  display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 7px 0 6px;
  border: 0; border-radius: 14px; background: none; cursor: pointer; font-family: var(--lbo-font); min-height: 62px;
}
.lbo-cal-tira-l { font-size: 13px; font-weight: 600; color: var(--lbo-gray-500); }
.lbo-cal-tira-n { font-size: 18px; font-weight: 700; color: var(--lbo-gray-900); }
.lbo-cal-tira-punto { width: 7px; height: 7px; border-radius: 50%; background: transparent; }
.lbo-cal-tira-punto.si { background: var(--lbo-blue); }
.lbo-cal-tira-dia.hoy .lbo-cal-tira-n { color: var(--lbo-blue); }
.lbo-cal-tira-dia.activo { background: var(--lbo-gradient); box-shadow: 0 8px 18px -10px rgba(12, 132, 204, .8); }
.lbo-cal-tira-dia.activo .lbo-cal-tira-l, .lbo-cal-tira-dia.activo .lbo-cal-tira-n { color: #fff; }
.lbo-cal-tira-dia.activo .lbo-cal-tira-punto.si { background: #fff; }

/* ── Celular: lista de tarjetas ───────────────────── */
.lbo-cal-m-lista { display: flex; flex-direction: column; gap: 12px; }
.lbo-cal-m-item { display: flex; gap: 10px; align-items: flex-start; }
.lbo-cal-m-hora { width: 50px; flex-shrink: 0; padding-top: 14px; font-size: 15px; font-weight: 700; color: var(--lbo-gray-900); }
.lbo-cal-m-hora span { font-size: 12px; font-weight: 600; color: var(--lbo-gray-400); line-height: 1.2; display: block; }
.lbo-cal-m-card {
  flex: 1; min-width: 0; cursor: pointer; background: var(--lbo-white);
  border: 1px solid var(--lbo-gray-200); border-left: 5px solid var(--c-dot); border-radius: 16px;
  padding: 13px 14px; box-shadow: var(--lbo-shadow-sm);
}
.lbo-cal-m-tit { font-size: 16px; font-weight: 600; color: var(--lbo-gray-900); line-height: 1.3; }
.lbo-cal-m-tit b { color: var(--c-tx); }
.lbo-cal-m-sub { font-size: 14px; color: var(--lbo-gray-500); margin-top: 2px; }
.lbo-cal-m-sub:empty { display: none; }
.lbo-cal-m-pie { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.lbo-cal-m-tec { font-size: 14px; font-weight: 600; color: var(--lbo-gray-700); margin-right: auto; }
.lbo-cal-m-tec.sin { color: var(--lbo-gray-400); }
.lbo-cal-m-repro {
  margin-top: 10px; width: 100%; min-height: 42px; display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  border: 1px solid #FCD9A8; background: #FFF8EC; color: #B45309; border-radius: 11px;
  font: 600 14px var(--lbo-font); cursor: pointer;
}
.lbo-cal-m-dia {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  margin-top: 6px; padding: 4px 2px; border: 0; background: none; cursor: pointer; font-family: var(--lbo-font); text-align: left;
}
.lbo-cal-m-dia:first-child { margin-top: 0; }
.lbo-cal-m-dia strong { font-size: 16px; color: var(--lbo-gray-900); }
.lbo-cal-m-dia small { font-size: 13px; color: var(--lbo-gray-500); }
.lbo-cal-m-dia.hoy strong { color: var(--lbo-blue-dark); }

/* ── Detalle y reprogramar (ventanas SweetAlert) ──── */
.lbo-cal-det { text-align: left; font-family: var(--lbo-font); }
.lbo-cal-det-badges { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.lbo-cal-det-badges .lbo-cal-est { font-size: 13px; padding: 4px 11px; }
.lbo-cal-det dl { display: grid; grid-template-columns: 80px 1fr; gap: 8px 12px; margin: 0; font-size: 15px; }
.lbo-cal-det dt { color: var(--lbo-gray-500); font-size: 13.5px; padding-top: 1px; }
.lbo-cal-det dd { margin: 0; color: var(--lbo-gray-900); font-weight: 600; }
.lbo-cal-costo { margin-top: 16px; border-radius: 12px; padding: 12px 14px; font-size: 14px; }
.lbo-cal-costo .t { font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.lbo-cal-costo p { font-size: 13px; color: var(--lbo-gray-600); margin: 8px 0 0; }
.lbo-cal-costo.gris { background: var(--lbo-gray-50); border: 1px solid var(--lbo-gray-200); color: var(--lbo-gray-600); }
.lbo-cal-costo.verde { background: #ECFDF5; border: 1px solid #A7F3D0; color: #065F46; }
.lbo-cal-costo.verde .total { font-size: 20px; font-weight: 700; color: #059669; }
.lbo-cal-costo.azul { background: var(--lbo-blue-light); border: 1px solid #C2E3F6; color: var(--lbo-blue-dark); }
.lbo-cal-costo .cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.lbo-cal-costo .cols small { display: block; font-size: 12.5px; color: var(--lbo-gray-500); }
.lbo-cal-costo .cols strong { font-size: 15px; }
.lbo-cal-costo strong.verde { color: #059669; }

.lbo-cal-rp { text-align: left; font-family: var(--lbo-font); }
.lbo-cal-rp-quien { font-size: 14px; color: var(--lbo-gray-500); margin: 0 0 14px; }
.lbo-cal-rp label { display: block; font-size: 14px; font-weight: 600; color: var(--lbo-gray-700); margin-bottom: 5px; }
.lbo-cal-rp input, .lbo-cal-rp textarea {
  width: 100%; box-sizing: border-box; padding: 10px 12px; font: 400 15px var(--lbo-font);
  border: 1px solid var(--lbo-gray-300); border-radius: 10px; color: var(--lbo-gray-900);
}
.lbo-cal-rp textarea { resize: vertical; }
.lbo-cal-rp .lbo-hint { margin: 5px 0 14px; }
.lbo-cal-rp-horas { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

/* ── Celular ──────────────────────────────────────── */
@media (max-width: 767px) {
  .lbo-cal { gap: 12px; }
  .lbo-cal-head { align-items: stretch; flex-direction: column; gap: 10px; }
  .lbo-cal-titulo { font-size: 24px; }
  .lbo-cal-head-ctl { justify-content: space-between; gap: 8px; }
  .lbo-cal-vista { padding: 0 13px; font-size: 14px; }
  .lbo-cal-navbtn { min-width: 42px; height: 42px; }
  .lbo-cal-hoy { padding: 0 12px; }
  .lbo-cal-chips { width: 100%; }
  .lbo-cal-selects { margin-left: 0; width: 100%; }
  .lbo-cal-sel { width: 100%; }
  .lbo-cal-sel select { flex: 1; }
}
