/* ------------------------------------------------------------------
   Huella Yolcatl - capa de identidad sobre Atmos (Bootstrap 4.3.1)
   Se carga DESPUES de atmos.min.css. No se modifica el tema base:
   todo lo de marca vive aqui para que Atmos siga siendo actualizable.
   ------------------------------------------------------------------ */
:root{
  --hy-verde:#20352f;        /* verde profundo - primario */
  --hy-verde-claro:#3d5c4e;  /* hover y acentos */
  --hy-salvia:#e8eee9;       /* superficies suaves */
  --hy-hueso:#f4f3ef;        /* fondo general */
  --hy-tinta:#1b241f;        /* texto principal */
  --hy-tinta-2:#4d5850;      /* texto secundario */
  --hy-borde:#dadfd6;
}

body{ background-color:var(--hy-hueso); color:var(--hy-tinta); }

/* --- Botones primarios --- */
.btn-primary,
.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active{
  background-color:var(--hy-verde); border-color:var(--hy-verde); color:#fff;
}
.btn-primary:hover,.btn-primary:focus{
  background-color:var(--hy-verde-claro); border-color:var(--hy-verde-claro); color:#fff;
}
.btn-primary:focus,.btn-primary.focus{ box-shadow:0 0 0 .2rem rgba(32,53,47,.28); }
.btn-outline-primary{ color:var(--hy-verde); border-color:var(--hy-verde); }
.btn-outline-primary:hover{ background-color:var(--hy-verde); border-color:var(--hy-verde); color:#fff; }

/* --- Utilidades de color --- */
.bg-primary{ background-color:var(--hy-verde)!important; }
.text-primary{ color:var(--hy-verde)!important; }
.border-primary{ border-color:var(--hy-verde)!important; }
a{ color:var(--hy-verde-claro); }
a:hover{ color:var(--hy-verde); }

/* --- Formularios --- */
.form-control:focus{
  border-color:var(--hy-verde-claro);
  box-shadow:0 0 0 .2rem rgba(61,92,78,.18);
}
.custom-control-input:checked~.custom-control-label::before{
  background-color:var(--hy-verde); border-color:var(--hy-verde);
}

/* --- Pantallas de acceso --- */
main.admin-main.bg-pattern{
  background:linear-gradient(160deg,#20352f 0%,#2b463d 45%,#3d5c4e 100%);
  min-height:100vh;
}
.hy-card{ border:0; border-radius:14px; }
.hy-logo{
  width:104px; height:104px; object-fit:cover;
  border-radius:22px; background:#fff; padding:6px;
  box-shadow:0 4px 18px rgba(0,0,0,.16);
}
.hy-eyebrow{
  font-size:11px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color:var(--hy-tinta-2);
}
.hy-marca{ font-size:12px; color:rgba(255,255,255,.72); }
.hy-marca a{ color:rgba(255,255,255,.9); }

/* --- Barra lateral --- */
.admin-sidebar{ background:var(--hy-verde); }
.admin-sidebar-brand{ border-bottom:1px solid rgba(255,255,255,.1); }
.hy-sidebar-logo{
  width:38px; height:38px; object-fit:cover; border-radius:10px;
  background:#fff; padding:2px; flex:none;
}
.hy-sidebar-nombre{
  margin-left:11px; color:#fff; font-weight:600;
  font-size:15px; letter-spacing:.01em; white-space:nowrap;
}
.admin-sidebar .menu-item .menu-link{ color:rgba(255,255,255,.76); }
.admin-sidebar .menu-item .menu-link:hover{ color:#fff; background:rgba(255,255,255,.07); }
.admin-sidebar .menu-item.active > .menu-link{
  color:#fff; background:rgba(255,255,255,.12);
  box-shadow:inset 3px 0 0 #9dc4ae;
}
.admin-sidebar .menu-header{
  padding:18px 20px 7px; font-size:10px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.42);
  list-style:none;
}

/* --- Encabezado --- */
.admin-header{ background:#fff; border-bottom:1px solid var(--hy-borde); }
.hy-usuario-nombre{ font-size:13.5px; font-weight:600; line-height:1.2; }
.hy-usuario-rol{ font-size:11px; color:var(--hy-tinta-2); }
.hy-avatar{ background:var(--hy-verde)!important; color:#fff!important; font-weight:600; }

/* --- Tarjetas y cifras --- */
.card{ border:1px solid var(--hy-borde); border-radius:12px; box-shadow:none; }
.card-header{ border-bottom:1px solid var(--hy-borde); }
.hy-cifra{ font-size:26px; font-weight:700; line-height:1.1; color:var(--hy-verde); }

/* --- Cadena de custodia en el tablero --- */
.hy-cadena{ display:grid; grid-template-columns:repeat(auto-fill,minmax(215px,1fr)); gap:9px; }
.hy-cadena-paso{
  display:flex; align-items:center; gap:10px;
  padding:11px 14px; border-radius:9px;
  background:var(--hy-hueso); border:1px solid var(--hy-borde);
}
.hy-cadena-paso.con-servicios{ background:var(--hy-salvia); border-color:#c3d4c7; }
.hy-cadena-num{
  font-size:11px; font-weight:700; color:var(--hy-tinta-2);
  font-variant-numeric:tabular-nums; flex:none;
}
.hy-cadena-nombre{ flex:1; font-size:13.5px; }
.hy-cadena-total{
  font-weight:700; color:var(--hy-verde);
  font-variant-numeric:tabular-nums; flex:none;
}

/* --- Insignias --- */
.badge-etapa{
  background:var(--hy-salvia); color:var(--hy-verde);
  font-weight:600; padding:.45em .8em; border-radius:999px;
}
.badge-inactivo{
  background:#eceae6; color:#7b8280;
  font-weight:600; padding:.45em .8em; border-radius:999px;
}

/* --- Tablas --- */
.table thead th{
  font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--hy-tinta-2); font-weight:600;
  border-top:0; border-bottom:1px solid var(--hy-borde);
}
.table td{ vertical-align:middle; border-top:1px solid var(--hy-borde); }

/* --- Fichas de datos --- */
.hy-datos dt{
  font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--hy-tinta-2); font-weight:600; margin-bottom:2px;
}
.hy-datos dd{ margin-bottom:14px; }
.hy-datos dd:last-child{ margin-bottom:0; }
.hy-monto{ font-variant-numeric:tabular-nums; }

/* --- Paginacion --- */
.page-item.active .page-link{
  background-color:var(--hy-verde); border-color:var(--hy-verde);
}
.page-link{ color:var(--hy-verde-claro); }
.page-link:hover{ color:var(--hy-verde); }

/* --- Folio y placa en el expediente --- */
.hy-folio{
  font-size:19px; font-weight:700; letter-spacing:.02em;
  font-variant-numeric:tabular-nums; color:var(--hy-verde);
}

/* --- Cadena del tablero como enlaces --- */
a.hy-cadena-paso{ color:inherit; text-decoration:none; transition:border-color .12s ease; }
a.hy-cadena-paso:hover{ border-color:var(--hy-verde-claro); color:inherit; }

/* --- Bitacora de custodia --- */
.hy-bitacora{ list-style:none; margin:0 0 20px; padding:0 0 0 22px; position:relative; }
.hy-bitacora::before{
  content:''; position:absolute; left:5px; top:6px; bottom:6px;
  width:2px; background:var(--hy-borde);
}
.hy-bitacora-item{ position:relative; padding-bottom:20px; }
.hy-bitacora-item:last-child{ padding-bottom:0; }
.hy-bitacora-item::before{
  content:''; position:absolute; left:-22px; top:5px;
  width:12px; height:12px; border-radius:50%;
  background:var(--hy-verde); border:2px solid #fff;
}
.hy-bitacora-item.tipo-correccion::before{ background:#8a6a2f; }
.hy-bitacora-item.tipo-nota::before{ background:var(--hy-tinta-2); }
.hy-bitacora-cabeza{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px; }
.hy-bitacora-fecha{ font-size:12px; color:var(--hy-tinta-2); }
.hy-bitacora-autor{ font-size:12.5px; color:var(--hy-tinta-2); }
.hy-bitacora-nota{ font-size:13.5px; margin-top:4px; }

/* --- Recorrido de las diez etapas en el expediente --- */
.hy-recorrido{
  list-style:none; margin:0; padding:0;
  display:flex; flex-wrap:wrap; gap:6px 4px;
}
.hy-recorrido-paso{
  display:flex; align-items:center; gap:7px;
  padding:5px 11px 5px 6px; border-radius:999px;
  background:var(--hy-hueso); border:1px solid var(--hy-borde);
  font-size:12px; color:var(--hy-tinta-2);
}
.hy-recorrido-punto{
  width:19px; height:19px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:10.5px; font-weight:700; flex:none;
  background:#fff; border:1px solid var(--hy-borde); color:var(--hy-tinta-2);
}
.hy-recorrido-paso.cumplida{
  background:var(--hy-salvia); border-color:#c3d4c7; color:var(--hy-verde);
}
.hy-recorrido-paso.cumplida .hy-recorrido-punto{
  background:var(--hy-verde); border-color:var(--hy-verde); color:#fff;
}
.hy-recorrido-paso.actual{
  background:var(--hy-verde); border-color:var(--hy-verde); color:#fff; font-weight:600;
}
.hy-recorrido-paso.actual .hy-recorrido-punto{
  background:#fff; border-color:#fff; color:var(--hy-verde);
}

/* --- Servicio cancelado --- */
.badge-cancelado{
  background:#f7e9e5; color:#8c4a3f;
  font-weight:600; padding:.45em .8em; border-radius:999px;
}

/* --- Visor del escáner --- */
.hy-visor{
  background:#111; border-radius:12px; overflow:hidden;
  min-height:300px; display:grid; place-items:center;
}
.hy-visor video, .hy-visor img, .hy-visor canvas{
  width:100%!important; height:auto!important; display:block;
}
.hy-visor:empty::after{
  content:'Cámara detenida';
  color:rgba(255,255,255,.55); font-size:13px;
}

/* --- Seguimiento público --- */
.hy-pasos{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.hy-paso{
  display:flex; align-items:flex-start; gap:12px;
  padding:12px 14px; border-radius:11px;
  background:#f2f2ef; color:#7b817d; border:1px solid transparent;
}
.hy-paso-marca{
  width:22px; height:22px; border-radius:50%; flex:none;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:700;
  background:#e3e3df; color:#a9aeab;
}
.hy-paso-texto{ display:flex; flex-direction:column; gap:2px; }
.hy-paso-texto small{ font-size:12.5px; opacity:.85; }
.hy-paso.cumplido{ background:var(--hy-salvia); color:var(--hy-verde); }
.hy-paso.cumplido .hy-paso-marca{ background:var(--hy-verde); color:#fff; }
.hy-paso.actual{ border-color:var(--hy-verde); }
.hy-aviso-camino{
  background:#dfeee2; color:#1f4a32; padding:14px 16px;
  border-radius:11px; font-weight:600; margin-bottom:18px; text-align:center;
}

/* --- Certificado --- */
.hy-huella{
  font-family:ui-monospace, Consolas, monospace; font-size:11px;
  color:var(--hy-tinta-2); background:var(--hy-hueso);
  border:1px solid var(--hy-borde); border-radius:6px;
  padding:3px 8px; display:inline-block; letter-spacing:.02em;
}
.hy-version-vieja{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:8px 0; border-bottom:1px dashed var(--hy-borde); font-size:13px;
}
.hy-version-vieja:last-child{ border-bottom:0; }

/* --- Evidencias --- */
.hy-evidencias{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:14px;
}
.hy-evidencia{ margin:0; }
.hy-evidencia-vista{
  display:block; aspect-ratio:4/3; border-radius:9px; overflow:hidden;
  background:var(--hy-hueso); border:1px solid var(--hy-borde);
}
.hy-evidencia-vista img{ width:100%; height:100%; object-fit:cover; display:block; }
.hy-evidencia-icono{
  width:100%; height:100%; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:4px; color:var(--hy-tinta-2);
}
.hy-evidencia-icono i{ font-size:30px; }
.hy-evidencia-icono small{ font-size:10px; letter-spacing:.08em; font-weight:700; }
.hy-evidencia figcaption{
  display:flex; flex-direction:column; gap:1px;
  font-size:11.5px; color:var(--hy-tinta-2); margin-top:6px;
}
.hy-evidencia figcaption strong{ font-size:12.5px; color:var(--hy-tinta); }
