/* ──────────────────────────────────────────────────────────────────────────
   Composants réutilisables : pastilles de présence, sens des mouvements,
   en-têtes de tri, valeurs non mappées.
   ────────────────────────────────────────────────────────────────────────── */

/* Pastille de présence (en ligne / hors ligne) */
.status-dot {
    display: inline-block;
    width: .65rem;
    height: .65rem;
    border-radius: 50%;
    vertical-align: middle;
    margin-right: .35rem;
}
.status-dot.is-online  { background: var(--guardia-online); box-shadow: 0 0 0 .15rem rgba(47, 179, 68, .25); }
.status-dot.is-offline { background: var(--guardia-offline); }

/* Sens d'un mouvement de coffre */
.dir-in  { color: var(--guardia-in);  font-weight: 600; }
.dir-out { color: var(--guardia-out); font-weight: 600; }

/* En-têtes de colonnes triables */
th.sortable a {
    text-decoration: none;
    color: inherit;
    white-space: nowrap;
}
th.sortable a:hover { text-decoration: underline; }
th.sortable .sort-ind { opacity: .5; font-size: .8em; }
th.sortable.active .sort-ind { opacity: 1; }

/* Valeur brute non encore mappée vers un nom lisible */
.unmapped {
    border-bottom: 1px dashed var(--bs-warning);
    cursor: help;
}

/* Bloc « copier » pour l'URL de webhook */
.copy-field {
    font-family: var(--bs-font-monospace);
    font-size: .85rem;
    word-break: break-all;
}
