/***
 * Menu lateral de SIGEO (ver sidebar.js). Los colores salen de las variables de /css/tema.css
 * Estilo claro: fondo blanco y texto oscuro (el texto claro sobre fondo oscuro se veia difuso en Windows)
 *********************************************************************************************************/

body.con-sidebar {
  padding-left: var(--sb-ancho);
  box-sizing: border-box;
  transition: padding-left .2s;
}
body.con-sidebar.sb-colapsado {
  padding-left: var(--sb-ancho-colapsado);
}

#sb {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: var(--sb-ancho);
  z-index: 5; /* debajo de las ventanas de windows_js, que arrancan en 10 */
  display: flex;
  flex-direction: column;
  background: #fff;
  color: var(--sb-texto);
  font-family: var(--fuente);
  font-size: 13.5px;
  border-right: 1px solid var(--borde);
  box-shadow: 1px 0 12px rgba(16,24,40,.04);
  transition: width .2s;
}
.sb-colapsado #sb {
  width: var(--sb-ancho-colapsado);
}

/* Cabecera con logo */
#sb-cabecera {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 12px 14px 18px;
  position: relative;
}
#sb-cabecera::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 3px;
  background: var(--dps-degrade);
}
#sb-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--dps-navy);
  text-decoration: none;
  font-weight: 700;
  letter-spacing: 3px;
  font-size: 15px;
  overflow: hidden;
  white-space: nowrap;
}
#sb-logo img {
  height: 26px;
  flex-shrink: 0;
}
#sb-toggle {
  color: var(--sb-texto-suave);
  font-size: 18px;
  line-height: 1;
  text-decoration: none;
  padding: 6px 8px;
  border-radius: 8px;
}
#sb-toggle:hover {
  background: var(--sb-hover);
  color: var(--dps-navy);
}
.sb-colapsado #sb-cabecera {
  flex-direction: column;
  padding: 14px 0;
  gap: 10px;
}
/* Colapsado: solo el dibujo del logo (sin las letras DPS), un poco mas grande */
#sb-logo img.sb-logo-isotipo,
.sb-colapsado #sb-logo img.sb-logo-completo,
.sb-colapsado #sb-logo span {
  display: none;
}
.sb-colapsado #sb-logo img.sb-logo-isotipo {
  display: block;
  height: 30px;
}

/* Buscador */
#sb-buscador {
  padding: 14px 12px 8px;
}
#sb-buscar {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px 8px 32px;
  border: 1px solid var(--borde);
  border-radius: 8px;
  background: #f5f7fb url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237a869f' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 11px center;
  color: var(--texto);
  font-family: var(--fuente);
  font-size: 13px;
  outline: none;
  transition: border-color .15s, box-shadow .15s, background-color .15s;
}
#sb-buscar::placeholder {
  color: #8a94a8;
}
#sb-buscar:focus {
  background-color: #fff;
  border-color: var(--dps-azul);
  box-shadow: 0 0 0 3px rgba(45,95,255,.15);
}
.sb-colapsado #sb-buscador {
  display: none;
}

/* Arbol de opciones */
#sb-nav {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 6px 0 14px;
}
#sb-nav::-webkit-scrollbar { width: 8px; }
#sb-nav::-webkit-scrollbar-thumb { background: #dfe4ee; border-radius: 4px; }
#sb-nav::-webkit-scrollbar-thumb:hover { background: #c8d0de; }

#sb #page-menu,
#sb #page-menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
#sb #page-menu ul {
  display: none;
}
#sb #page-menu li.sb-abierto > ul {
  display: block;
}

/* Cada opcion es una "pildora" redondeada con margen a los costados */
#sb #page-menu a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 1px 10px;
  padding: 7px 10px;
  border-radius: 8px;
  color: var(--sb-texto);
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  transition: background-color .12s, color .12s;
}
#sb #page-menu a span {
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}
/* Opciones largas: el texto pasa a una segunda linea en lugar de cortarse con "..."
   (los titulos de modulo y el modo colapsado siguen en una sola linea) */
#sb #page-menu li:not(.sb-nivel0) > a {
  white-space: normal;
  align-items: flex-start;
  line-height: 1.35;
}
#sb #page-menu li:not(.sb-nivel0) > a span {
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
}
#sb #page-menu li:not(.sb-nivel0) > a img {
  margin-top: 1px;
}
#sb #page-menu li:not(.sb-nivel0) > a.sb-titulo::after {
  margin-top: 6px;
}
#sb #page-menu a img {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
#sb #page-menu a:hover {
  background: var(--sb-hover);
  color: var(--dps-navy);
}

/* Flecha de los grupos */
#sb #page-menu a.sb-titulo::after {
  content: '';
  width: 6px;
  height: 6px;
  margin-right: 2px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform .15s;
  flex-shrink: 0;
  opacity: .6;
}
#sb #page-menu li.sb-abierto > a.sb-titulo::after {
  transform: rotate(45deg);
}

/* Modulos: titulos en mayuscula, sin icono (el icono solo se usa en el modo colapsado) */
#sb #page-menu li.sb-nivel0 {
  margin-top: 2px;
}
#sb #page-menu li.sb-nivel0 > a {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--sb-texto-suave);
  padding-top: 9px;
  padding-bottom: 9px;
}
#sb #page-menu li.sb-nivel0 > a:hover,
#sb #page-menu li.sb-nivel0.sb-abierto > a {
  color: var(--dps-navy);
}
#sb #page-menu li.sb-nivel0 > a img {
  display: none;
}
.sb-colapsado #sb #page-menu li.sb-nivel0 > a img {
  display: block;
}

/* Submenus: una linea guia a la izquierda marca la jerarquia */
#sb #page-menu li.sb-abierto > ul {
  margin: 2px 0 6px 22px;
  border-left: 1px solid var(--borde);
}
#sb #page-menu ul a {
  margin-left: 8px;
}

/* Opcion actual */
#sb #page-menu a.sb-actual {
  background: var(--dps-azul-suave);
  color: var(--dps-azul-oscuro);
  font-weight: 600;
}
#sb #page-menu a.sb-actual::before {
  content: '';
  position: absolute;
  left: 0; top: 6px; bottom: 6px;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(180deg, var(--dps-verde), var(--dps-azul));
}

/* Buscando: solo se ven las coincidencias, con sus grupos abiertos */
#sb #page-menu.sb-filtrando li {
  display: none;
}
#sb #page-menu.sb-filtrando li.sb-coincide {
  display: block;
}
#sb #page-menu.sb-filtrando li.sb-coincide > ul {
  display: block;
  margin: 2px 0 6px 22px;
  border-left: 1px solid var(--borde);
}

/* Colapsado: solo iconos del primer nivel */
.sb-colapsado #sb #page-menu li.sb-nivel0 > a span,
.sb-colapsado #sb #page-menu li.sb-nivel0 > a.sb-titulo::after {
  display: none;
}
.sb-colapsado #sb #page-menu li.sb-nivel0 > a {
  justify-content: center;
  margin: 2px 8px;
  padding: 9px 0;
}
.sb-colapsado #sb #page-menu li > ul {
  display: none !important;
}

/* Barra superior con la ruta de la pantalla actual (#sb-topbar en head.tpl, contenido en Sidebar.armarRuta) */
#sb-topbar {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: 0 20px;
  background: #fff;
  border-bottom: 1px solid var(--borde);
  font-family: var(--fuente);
  font-size: 13px;
  box-sizing: border-box;
}
#sb-ruta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  overflow: hidden;
}
#sb-ruta .sb-ruta-modulo {
  color: var(--sb-texto-suave);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
}
#sb-ruta .sb-ruta-item {
  color: var(--sb-texto-suave);
}
#sb-ruta .sb-ruta-actual {
  color: var(--dps-navy);
  font-size: 15px;
  font-weight: 700;
}
#sb-ruta .sb-ruta-sep {
  width: 6px;
  height: 6px;
  border-right: 1.5px solid #a3adc2;
  border-bottom: 1.5px solid #a3adc2;
  transform: rotate(-45deg);
  margin: 0 2px;
}

/* Pie: usuario y salir */
#sb-pie {
  border-top: 1px solid var(--borde);
  padding: 12px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
}
#sb-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--dps-degrade);
  color: #fff;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  text-transform: uppercase;
  flex-shrink: 0;
}
#sb-usuario {
  flex: 1;
  overflow: hidden;
  line-height: 1.3;
}
#sb-usuario b {
  display: block;
  color: var(--dps-navy);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#sb-usuario small {
  color: var(--sb-texto-suave);
  white-space: nowrap;
}
#sb-salir {
  color: var(--sb-texto-suave);
  text-decoration: none;
  font-size: 18px;
  padding: 4px 8px;
  border-radius: 8px;
}
#sb-salir:hover {
  background: #fdecec;
  color: #c62828;
}
.sb-colapsado #sb-pie {
  flex-direction: column;
  padding: 12px 0;
}
.sb-colapsado #sb-usuario {
  display: none;
}
