:root{
  --cm-mamey: #E07A34;
  --cm-mamey-claro: #F2A05C;
  --cm-mamey-oscuro: #B85F24;
  --cm-negro: #1A1A1A;
  --cm-negro-suave: #2A2A2A;
  --cm-gris: #f4f5f9;
  --cm-borde: #e2e2e2;
  /* Alias retro-compatibles: algunas vistas todavia usan var(--cm-azul)/var(--cm-rojo) inline */
  --cm-azul: var(--cm-negro);
  --cm-azul-claro: var(--cm-negro-suave);
  --cm-rojo: var(--cm-mamey);
}

body{
  background: var(--cm-gris);
  font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  color: #23263a;
}

/* ---------- Layout shell ---------- */
.cm-shell{ display:flex; min-height:100vh; }

.cm-sidebar{
  width: 260px;
  background: linear-gradient(180deg, var(--cm-negro) 0%, #000000 100%);
  color: #fff;
  position: fixed;
  top:0; bottom:0; left:0;
  overflow-y:auto;
  transition: transform .25s ease;
  z-index: 1030;
}
.cm-brand{ padding: 16px 16px 14px; border-bottom: 1px solid rgba(255,255,255,.12); display:flex; justify-content:center; }
.cm-brand-logo-full{ width:100%; max-width:210px; max-height:150px; object-fit:contain; background:#fff; border-radius:10px; padding:8px; }
.cm-brand-logo{ height: 42px; width: 42px; object-fit: contain; border-radius: 8px; background:#fff; padding:3px; }
.cm-brand-text{ line-height:1.15; }
.cm-brand-coordina{ font-weight:800; font-size:1.15rem; color:#fff; }
.cm-brand-moto{ font-weight:800; font-size:1.15rem; color:var(--cm-mamey-claro); }
.cm-brand-sub{ font-size:.68rem; letter-spacing:.05em; color:#c9c9c9; margin-top:2px; }

.cm-nav{ padding: 10px 10px 30px; }
.cm-nav .nav-link{
  color:#d6d6d6;
  border-radius:8px;
  padding:.6rem .8rem;
  margin-bottom:2px;
  font-size:.92rem;
}
.cm-nav .nav-link i{ width:22px; display:inline-block; }
.cm-nav .nav-link:hover{ background: rgba(255,255,255,.08); color:#fff; }
.cm-nav .nav-link.active{ background: var(--cm-mamey); color:#fff; }

.cm-main{ margin-left:260px; flex:1; min-width:0; }
.cm-topbar{
  background:#fff; border-bottom:1px solid var(--cm-borde);
  padding: .7rem 1.4rem; position: sticky; top:0; z-index:1020;
}
.cm-content{ padding: 1.4rem; }
.cm-user{ text-decoration:none; color:#23263a; font-size:.9rem; }
.cm-badge-rol{ background: var(--cm-negro); margin-left:6px; }
.cm-toggle{ border:1px solid var(--cm-borde); }

/* ---------- Cards / tablas ---------- */
.card{ border:1px solid var(--cm-borde); border-radius: 12px; }
.card-header{ background:#fff; border-bottom:1px solid var(--cm-borde); font-weight:600; }
.table thead th{ background: var(--cm-negro); color:#fff; font-weight:600; border:none; }
.table-hover tbody tr:hover{ background: #fbeee1; }

.btn-cm-primary{ background: var(--cm-negro); border-color: var(--cm-negro); color:#fff; }
.btn-cm-primary:hover{ background: var(--cm-negro-suave); color:#fff; }
.btn-cm-danger{ background: var(--cm-mamey-oscuro); border-color: var(--cm-mamey-oscuro); color:#fff; }
.btn-cm-danger:hover{ opacity:.9; color:#fff; }

/* ---------- Login ---------- */
.cm-login-wrap{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  background: radial-gradient(circle at top, #2a2a2a, #000000 65%);
  padding: 20px;
}
.cm-login-card{
  background:#fff; border-radius:16px; padding:2.2rem; width:100%; max-width:400px;
  box-shadow: 0 20px 50px rgba(0,0,0,.4);
}
.cm-login-logo{ display:block; margin:0 auto 14px; height:76px; width:76px; object-fit:contain; }
.cm-login-logo-full{ display:block; margin:0 auto 22px; width:100%; max-width:260px; max-height:320px; object-fit:contain; }
.cm-login-title{ font-weight:800; text-align:center; }
.cm-login-title .mamey{ color: var(--cm-mamey); }

/* ---------- Responsive ---------- */
@media (max-width: 991.98px){
  .cm-sidebar{ transform: translateX(-100%); }
  body.cm-sidebar-open .cm-sidebar{ transform: translateX(0); }
  .cm-main{ margin-left:0; }
}

.kpi-card{ border-radius:14px; color:#fff; padding:1.2rem 1.4rem; }
.kpi-card h2{ font-weight:800; margin-bottom:0; }
.kpi-mamey{ background: linear-gradient(135deg, var(--cm-mamey), var(--cm-mamey-oscuro)); }
.kpi-negro{ background: linear-gradient(135deg, var(--cm-negro-suave), #000000); }
.kpi-mamey-claro{ background: linear-gradient(135deg, var(--cm-mamey-claro), var(--cm-mamey)); }
.kpi-gris{ background: linear-gradient(135deg, #55555a, #232323); }
/* Alias retro-compatibles por si algun componente todavia usa los nombres anteriores */
.kpi-azul{ background: linear-gradient(135deg, var(--cm-negro-suave), #000000); }
.kpi-rojo{ background: linear-gradient(135deg, var(--cm-mamey), var(--cm-mamey-oscuro)); }
.kpi-verde{ background: linear-gradient(135deg, var(--cm-mamey-claro), var(--cm-mamey)); }

/* ---------- Buscador (control "buscar y seleccionar") -----------------
   Ventana propia con CSS puro (display:flex/none), sin usar el componente
   Modal de Bootstrap, para evitar que se quede "congelado". */
.cm-buscador-overlay{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.55);
  z-index:2000;
  align-items:flex-start;
  justify-content:center;
  padding:60px 16px;
  overflow-y:auto;
}
.cm-buscador-overlay.cm-abierto{ display:flex; }
.cm-buscador-caja{
  background:#fff;
  border-radius:12px;
  width:100%;
  max-width:520px;
  max-height:80vh;
  display:flex;
  flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.35);
}
.cm-buscador-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 18px;
  border-bottom:1px solid var(--cm-borde);
  flex-shrink:0;
}
.cm-buscador-body{
  padding:14px 18px;
  overflow-y:auto;
}
.carnet-hoja{ display:flex; flex-wrap:wrap; gap:16px; }
.carnet-card{
  width: 340px; border:1px solid var(--cm-borde); border-radius:12px; overflow:hidden;
  background:#fff; box-shadow:0 2px 8px rgba(0,0,0,.08); page-break-inside: avoid;
}
.carnet-top{ background: var(--cm-negro); color:#fff; display:flex; align-items:center; gap:8px; padding:8px 10px; }
.carnet-logo{ height:34px; width:34px; object-fit:contain; background:#fff; border-radius:6px; padding:2px; }
.carnet-titulo{ font-weight:800; font-size:.8rem; letter-spacing:.03em; }
.carnet-sub{ font-size:.62rem; color:#ccc; }
.carnet-body{ display:flex; gap:12px; padding:12px; }
.carnet-foto{ height:80px; width:80px; border-radius:8px; object-fit:cover; border:2px solid var(--cm-mamey); flex-shrink:0; }
.carnet-datos{ min-width:0; }
.carnet-nombre{ font-weight:700; font-size:.95rem; }
.carnet-apodo{ font-size:.78rem; color:var(--cm-mamey-oscuro); font-style:italic; margin-bottom:4px; }
.carnet-linea{ font-size:.76rem; margin-top:2px; }
.carnet-footer{ font-size:.62rem; color:#777; text-align:center; padding:6px 10px; border-top:1px solid var(--cm-borde); }

@media print{
  .cm-sidebar, .cm-topbar, .no-print{ display:none !important; }
  .cm-main{ margin-left:0 !important; }
  .cm-content{ padding:0 !important; }
  .carnet-card{ box-shadow:none; }
}

/* ---------- Logo de fondo en TODO el sistema (marca de agua sutil) ----------
   Se dibuja fijo detras de todo el contenido (z-index negativo, sin capturar
   clics) y con opacidad muy baja para que nunca interfiera con la lectura de
   ninguna pantalla, tabla o formulario. Se ve principalmente en el area gris
   del panel de contenido, detras de las tarjetas blancas. */
body::before{
  content:"";
  position:fixed;
  inset:0;
  background-image:url('/images/logo.jpg');
  background-repeat:no-repeat;
  background-position:center 90px;
  background-size:min(520px, 75vw) auto;
  background-attachment:fixed;
  opacity:.10;
  pointer-events:none;
  z-index:0;
}
.cm-shell, .cm-login-wrap{ position:relative; z-index:1; }

/* Compatibilidad: si algun componente todavia usa la clase anterior, que no rompa nada */
.cm-home-bg{ position:relative; }
.cm-home-bg > *{ position:relative; z-index:1; }
