/* ==========================================================================
   DIRECTORIO INSTITUCIONAL CUAAD — Estilo Institucional UDG
   Inspirado en el directorio de CUValles (cuvalles.udg.mx)
   Compatible con Bootstrap 3 y el tema drudg8b3
   ========================================================================== */

/* --- Variables (hereda del sistema UDG en style.css) ---------------------- */
:root {
  --dir-primary:     #5F5078;   /* Morado institucional UDG */
  --dir-primary-dk:  #4a3d5e;   /* Morado más oscuro para hover */
  --dir-primary-lt:  #f3f0f7;   /* Morado muy claro para fondo de sub-items */
  --dir-accent:      #785177;   /* Acento secundario */
  --dir-text:        #4B4B4B;   /* Texto principal del sitio */
  --dir-text-light:  #6c757d;   /* Texto secundario / etiquetas */
  --dir-border:      #ddd;      /* Bordes suaves */
  --dir-white:       #ffffff;
  --dir-card-bg:     #ffffff;
  --dir-card-shadow: 0 1px 4px rgba(95,80,120,0.10);
  --dir-font:        "Montserrat", "Open Sans", sans-serif;
  --dir-photo-w:     110px;
  --dir-photo-h:     130px;
  --dir-radius:      10px;
  --dir-header-h:    52px;
}

/* ==========================================================================
   1. BUSCADOR / FILTRO RÁPIDO
   ========================================================================== */
.dir-search-wrapper {
  margin: 0 0 1.5rem;
  position: relative;
}

.dir-search-wrapper label {
  display: block;
  font-family: var(--dir-font);
  font-weight: 600;
  color: var(--dir-primary);
  margin-bottom: .4rem;
  font-size: .9rem;
  letter-spacing: .02em;
}

#dir-search-input {
  width: 100%;
  padding: .65rem 2.8rem .65rem 1rem;
  font-family: var(--dir-font);
  font-size: .95rem;
  border: 2px solid var(--dir-border);
  border-radius: 6px;
  outline: none;
  transition: border-color .2s;
  color: var(--dir-text);
  background: var(--dir-white);
}

#dir-search-input:focus {
  border-color: var(--dir-primary);
}

.dir-search-icon {
  position: absolute;
  right: .85rem;
  bottom: .7rem;
  color: var(--dir-primary);
  font-size: 1rem;
  pointer-events: none;
}

#dir-count {
  font-family: var(--dir-font);
  font-size: .82rem;
  color: var(--dir-text-light);
  margin-top: .35rem;
  min-height: 1.1rem;
}

/* ==========================================================================
   2. ACORDEÓN RAÍZ — 6 bloques principales
   ========================================================================== */
.view-directorio-levy .view-content,
.view-directorio-levy-page-1 .view-content {
  padding: 0;
}

/* Genera la envoltura del acordeón completo */
.dir-accordion {
  border: none;
  margin-bottom: 1.5rem;
}

/* Cada ítem raíz (Rectoría, Sec. Académica, etc.) */
.dir-root-block {
  border: 1px solid var(--dir-border);
  border-radius: var(--dir-radius);
  margin-bottom: .85rem; /* Separación ligeramente mayor para propuesta light */
  overflow: hidden;
  background: var(--dir-white);
  box-shadow: 0 2px 4px rgba(0,0,0,0.04);
  transition: box-shadow .2s, border-color .2s;
  border-left: 4px solid var(--dir-primary); /* Acento izquierdo representativo */
}

.dir-root-block:hover {
  box-shadow: 0 4px 12px rgba(95,80,120,0.12);
}

/* Cabecera del acordeón raíz (Estilo Light) */
.dir-root-header {
  background: transparent; /* Hereda de dir-root-block */
  color: var(--dir-text); /* Texto oscuro en lugar de blanco */
  font-family: var(--dir-font);
  font-weight: 600; /* Un poco más ligero (light proposal) */
  font-size: 1.05rem;
  letter-spacing: .02em; /* Menos estirado que uppercase */
  padding: 0 1.2rem;
  height: var(--dir-header-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  border: none;
  width: 100%;
  text-align: left;
  transition: background .2s, color .2s;
  user-select: none;
}

.dir-root-header:hover {
  background: #faf8fc; /* Ligero tono en hover */
  color: var(--dir-primary); /* Realza color institucional on hover */
}

.dir-root-header .dir-block-arrow {
  color: #7b7b7b; /* Flecha en grid/gris */
  transition: color .2s;
}

.dir-root-header:hover .dir-block-arrow {
  color: var(--dir-primary);
}

.dir-root-header .dir-chevron {
  font-size: 1rem;
  transition: transform .25s;
  flex-shrink: 0;
  margin-left: 1rem;
}

.dir-root-header[aria-expanded="true"] .dir-chevron {
  transform: rotate(180deg);
}

/* Cuerpo del acordeón raíz */
.dir-root-body {
  display: none;
  padding: 1rem 1.2rem 1.2rem;
}

.dir-root-body.open {
  display: block;
}

/* ==========================================================================
   3. SUB-SECCIONES (Coordinaciones / Secretarías) - NIVEL 2
   ========================================================================== */
.dir-sub-section {
    margin: 30px 0 30px 25px; /* Indentación L2 */
    border-left: 2px solid #eee;
    padding-left: 20px;
}

.dir-sub-header {
    background-color: #f1f4f8;
    color: #003366;
    padding: 10px 15px;
    margin: 0 0 15px 0;
    font-size: 1.15rem;
    font-weight: 700;
    border-left: 5px solid #003366;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
}

.dir-l1-direct {
    margin-bottom: 30px;
}

.dir-l2-direct {
    margin-bottom: 25px;
}

/* ==========================================================================
   4. UNIDADES / DEPARTAMENTOS - NIVEL 3
   ========================================================================== */
.dir-unit-block {
    margin: 20px 0 20px 25px; /* Indentación L3 (relativa al L2) */
    border-left: 2px dotted #ddd;
    padding-left: 15px;
}

.dir-unit-header {
    color: #004a99;
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
}

.dir-unit-header::before {
    content: "↳";
    margin-right: 10px;
    color: #999;
}

/* ==========================================================================
   4. TARJETA DE PERSONA (Arquitectura Robusta y Proporcional)
   ========================================================================== */
.tarjeta-directorio,
.dir-person-card {
    background-color: #f5f7f9;
    border-radius: 12px;
    padding: 25px;
    margin-bottom: 25px;
    display: flex;
    gap: 30px;
    align-items: flex-start; /* Alineación al tope para proporcionalidad */
    box-shadow: 0 2px 10px rgba(0,0,0,0.04);
    transition: transform 0.2s, box-shadow 0.2s;
    position: relative;
}

.tarjeta-directorio:hover,
.dir-person-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.08);
}

/* Contenedor de Foto (Incrementado y Estilizado) */
.tarjeta-directorio .col-foto {
    flex-shrink: 0 !important;
    width: 160px !important; /* Tamaño incrementado */
    height: 200px !important;
    background-color: #fff !important;
    border-radius: 12px !important;
    overflow: hidden !important;
    box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tarjeta-directorio .col-foto img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important; /* Premium look, sin deformación */
    transition: transform 0.3s !important;
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.tarjeta-directorio .col-foto:hover img {
    transform: scale(1.05) !important;
}

.tarjeta-directorio .col-info {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

/* Nombre y Puesto (Nativo desde Template) */
.tarjeta-directorio .dir-nombre {
    color: #003366 !important;
    font-size: 1.25rem !important;
    font-weight: 700 !important;
    margin: 0 0 5px 0 !important;
    line-height: 1.2;
}

.tarjeta-directorio .dir-puesto {
    color: #666 !important;
    font-weight: 500 !important;
    font-size: 1rem !important;
    margin-bottom: 15px !important;
    display: flex;
    align-items: center;
}

/* Datos de Contacto (Los emojis vienen del template) */
.tarjeta-directorio .dir-datos p {
    margin: 0 0 8px 0 !important;
    font-size: 0.98rem !important;
    color: #444 !important;
    display: flex;
    align-items: flex-start;
    line-height: 1.4;
}

/* Acciones Administrativas (Enlace de Edición) */
.tarjeta-directorio .dir-admin-actions {
    margin-top: 15px;
    border-top: 1px solid #e1e8ed;
    padding-top: 10px;
}

.tarjeta-directorio .dir-edit-link {
    font-size: 0.85rem !important;
    color: #999 !important;
    text-decoration: none !important;
    font-weight: 600;
    transition: color 0.2s;
}

.tarjeta-directorio .dir-edit-link:hover {
    color: #d9534f !important; /* Rojo sutil para destacar edición al hover */
    text-decoration: underline !important;
}

/* Ocultar redundancias (Configuración de Vista) */
#directorio-cuaad .views-field-name,
#directorio-cuaad .views-field-field-categoria-de-directorio {
    display: none !important;
}
/* Nota: El ícono ✉ se añade directamente en el template Twig (views-view-fields--directorio-levy.html.twig).
   No usar CSS ::before para evitar duplicación de íconos. */

/* Estilo para links de email */
.tarjeta-directorio a {
    color: #003366 !important;
    text-decoration: underline !important;
}

/* Estilo para links de email */
#directorio-cuaad .views-field-field-correo-electronico a {
    color: #003366;
    text-decoration: underline;
}

/* Ocultar labels redundantes de Drupal si existen (ej. "Ubicación:") */
.view-id-directorio_levy .views-field .views-label {
    display: none;
}

/* Foto de placeholder cuando no hay imagen */
.dir-person-photo .dir-no-photo {
  width: var(--dir-photo-w);
  height: var(--dir-photo-h);
  border-radius: 10px;
  background: var(--dir-primary-lt);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--dir-primary);
  font-size: 2.5rem;
}

/* Info de la persona */
.dir-person-info {
  flex: 1;
  min-width: 0;
}

.dir-person-name {
  font-family: var(--dir-font);
  font-weight: 700;
  font-size: 1rem;
  color: var(--dir-primary);
  margin: 0 0 .25rem;
  line-height: 1.3;
}

.dir-person-name a {
  color: inherit;
  text-decoration: none;
}

.dir-person-name a:hover {
  text-decoration: underline;
}

/* Cada línea de dato (Puesto, Teléfono, Correo) */
.dir-person-field {
  font-family: var(--dir-font);
  font-size: .87rem;
  color: var(--dir-text);
  margin: .2rem 0;
  line-height: 1.45;
  word-break: break-word;
}

.dir-person-field .dir-field-label {
  font-weight: 700;
  color: var(--dir-text);
}

.dir-person-field a {
  color: #265986;
  text-decoration: none;
}

.dir-person-field a:hover {
  text-decoration: underline;
}

/* ==========================================================================
   5. ESTADO VACÍO ("Sin resultados")
   ========================================================================== */
.dir-empty-msg {
  font-family: var(--dir-font);
  color: var(--dir-text-light);
  font-size: .9rem;
  text-align: center;
  padding: 2rem 1rem;
  display: none;
}

/* ==========================================================================
   6. RESPONSIVE
   ========================================================================== */
@media (max-width: 600px) {
  .dir-person-card {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .dir-person-photo img,
  .dir-person-photo .dir-no-photo {
    width: 90px;
    height: 108px;
  }

  .dir-person-name {
    font-size: .95rem;
  }

  .dir-root-header {
    font-size: .88rem;
    padding: 0 .9rem;
  }
}

/* ==========================================================================
   7. SOBREESCRIBIR ESTILOS POR DEFECTO DE VIEWS (limpiar tree-list de Drupal)
   ========================================================================== */
.view-directorio-levy ul.tree,
.view-directorio-levy ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.view-directorio-levy .views-tree-depth-0 > li,
.view-directorio-levy li {
  padding: 0;
  margin: 0;
}

/* Ocultar el nombre del término que Drupal renderiza en el tree */
.view-directorio-levy .views-row .views-field-name,
.view-directorio-levy .views-field-tid,
.view-directorio-levy .views-field-tid-1 {
  display: none;
}

/* ==========================================================================
   8. ALIASES DEL CAMPO "nothing" DE LA VISTA
   El campo "nothing" del view usa .tarjeta-directorio, .foto-contacto, etc.
   Estos aliases los convierten al nuevo sistema visual.
   ========================================================================== */

/* La tarjeta completa - Los estilos base ya están definidos arriba en la sección 4 */

/* Contenedor de foto */
.foto-contacto {
  flex-shrink: 0;
  width: var(--dir-photo-w);
}

.foto-contacto img {
  width: var(--dir-photo-w);
  height: var(--dir-photo-h);
  object-fit: cover;
  border-radius: 10px;
  display: block;
  background: var(--dir-primary-lt);
}

/* Contenedor de datos */
.datos-contacto {
  flex: 1;
  min-width: 0;
}

/* Nombre de la persona */
.datos-contacto .nombre-persona {
  font-family: var(--dir-font);
  font-weight: 700;
  font-size: 1rem;
  color: var(--dir-primary);
  margin: 0 0 .25rem;
  line-height: 1.3;
}

.datos-contacto .nombre-persona a {
  color: inherit;
  text-decoration: none;
}

.datos-contacto .nombre-persona a:hover {
  text-decoration: underline;
}

/* Puesto / cargo */
.datos-contacto .puesto {
  font-family: var(--dir-font);
  font-size: .9rem;
  font-weight: 600;
  color: var(--dir-text);
  margin: .15rem 0;
}

/* Ubicación / dirección */
.datos-contacto .ubicacion {
  font-family: var(--dir-font);
  font-size: .85rem;
  color: var(--dir-text-light);
  margin: .1rem 0;
}

/* Teléfono */
.datos-contacto .telefono {
  font-family: var(--dir-font);
  font-size: .87rem;
  color: var(--dir-text);
  margin: .15rem 0;
}

.datos-contacto .telefono::before {
  content: 'Teléfono: ';
  font-weight: 700;
}

/* Correo electrónico */
.datos-contacto .correo {
  font-family: var(--dir-font);
  font-size: .87rem;
  margin: .15rem 0;
}

.datos-contacto .correo a {
  color: #265986;
  text-decoration: none;
}

.datos-contacto .correo a:hover {
  text-decoration: underline;
}

.datos-contacto .correo::before {
  content: 'Correo: ';
  font-weight: 700;
  color: var(--dir-text);
}

/* Título de departamento (cuando el nodo no es una persona) */
.titulo-departamento {
  font-family: var(--dir-font);
  font-weight: 600;
  color: var(--dir-text-light);
  font-size: .85rem;
}

/* Responsive: apilar foto y datos en móvil */
@media (max-width: 600px) {
  .tarjeta-directorio {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .foto-contacto img {
    width: 90px;
    height: 108px;
  }

  .datos-contacto .telefono::before,
  .datos-contacto .correo::before {
    display: block;
  }
}

/* ==========================================================================
   9. WRAPPER DEL DIRECTORIO — clases que genera Drupal en la vista
   ========================================================================== */
.view-directorio-levy,
.view-id-directorio_levy {
  font-family: var(--dir-font);
}

/* Eliminar padding/margin extra del list del views_tree module */
.view-directorio-levy .item-list ul,
.view-directorio-levy ul.tree {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* El li del tree no debe añadir decoración */
.view-directorio-levy .item-list li {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* --- Double Render Hiding Strategy v2 --- */
/* Hide the card markup when it appears inside a header button */
/* Hide the taxonomy name/title when the row is rendered as a person card in the body */
.dir-person-card .dir-row-title {
    display: none !important;
}

/* Hide empty ghost cards (usually taxonomy terms rendered as rows) */
.tarjeta-directorio:not(:has(.dir-nombre)):not(:has(.col-foto)),
.tarjeta-directorio:empty,
.dir-person-card:not(:has(.dir-nombre)):not(:has(.col-foto)) {
    display: none !important;
}

/* Ensure the card in the body only shows if it actually has content */
/* Eliminada la regla restrictiva de :has para evitar ocultamiento accidental */

/* ==========================================================================
   9. BUSCADOR Y RESULTADOS
   ========================================================================== */
.dir-results-count {
    background-color: #e8f4f8;
    padding: 12px 20px;
    border-radius: 8px;
    border-left: 4px solid #003366;
    margin-bottom: 25px;
    font-size: 1.1rem;
    font-weight: 600;
    color: #003366;
    display: none; /* Se muestra vía JS */
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
.dir-row-title {
    display: inline-block;
    vertical-align: middle;
}

