/* ============================================================================
   surfaces.css — Tarjetas, listas, línea de tiempo, pestañas, estados
   vacíos, etiquetas de estado y notas. Son las piezas que comparten todas
   las pantallas de los dos proyectos.
   ========================================================================== */

/* ============================================================================
   TARJETAS
   ========================================================================== */
.ms-card {
  display: flex; flex-direction: column;
  background: var(--ms-surface);
  border: 1px solid var(--ms-border);
  border-radius: var(--ms-radius-lg);
  box-shadow: var(--ms-shadow-sm);
  overflow: hidden;
}
.ms-card--flat  { box-shadow: none; }
.ms-card--muted { background: var(--ms-surface-2); }

.ms-card__header {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--ms-border-soft);
  min-height: 52px;
}
.ms-card__header h2,
.ms-card__header h3 { font-size: 14px; font-weight: 700; letter-spacing: -.005em; }
.ms-card__header p { font-size: 11.5px; color: var(--ms-text-3); margin-top: 3px; }
.ms-card__tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.ms-card__body { padding: 16px; flex: 1; }
.ms-card__body--tight { padding: 12px; }
.ms-card__body--flush { padding: 0; }

.ms-card__footer {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 16px;
  border-top: 1px solid var(--ms-border-soft);
  background: var(--ms-surface-2);
  font-size: var(--ms-fs-sm); color: var(--ms-text-3);
  flex-wrap: wrap;
}

/* --- Indicador de tendencia ---------------------------------------------- */
.ms-trend {
  display: inline-flex; align-items: center; gap: 3px;
  height: 21px; padding: 0 8px 0 6px;
  border-radius: var(--ms-radius-pill);
  font-size: 11px; font-weight: 700;
  background: var(--ms-neutral-bg); color: var(--ms-text-2);
}
.ms-trend .ms-icon { width: 12px; height: 12px; stroke-width: 2.2; }
.ms-trend--up      { background: var(--ms-success-bg); color: var(--ms-success); }
.ms-trend--down    { background: var(--ms-danger-bg);  color: var(--ms-danger); }
.ms-trend--warning { background: var(--ms-warning-bg); color: var(--ms-warning); }

/* ============================================================================
   ETIQUETAS DE ESTADO
   ========================================================================== */
.ms-badge {
  display: inline-flex; align-items: center; gap: 5px;
  height: 22px; padding: 0 9px;
  border-radius: var(--ms-radius-sm);
  border: 1px solid var(--ms-neutral-bd);
  background: var(--ms-neutral-bg);
  color: var(--ms-neutral);
  font-size: 11px; font-weight: 700; white-space: nowrap;
}
.ms-badge .ms-icon { width: 11px; height: 11px; }
.ms-badge .ms-dot { width: 5px; height: 5px; background: currentColor; }

.ms-badge--success { background: var(--ms-success-bg); color: var(--ms-success); border-color: var(--ms-success-bd); }
.ms-badge--warning { background: var(--ms-warning-bg); color: var(--ms-warning); border-color: var(--ms-warning-bd); }
.ms-badge--danger  { background: var(--ms-danger-bg);  color: var(--ms-danger);  border-color: var(--ms-danger-bd); }
.ms-badge--info    { background: var(--ms-info-bg);    color: var(--ms-info);    border-color: var(--ms-info-bd); }
.ms-badge--purple  { background: var(--ms-purple-bg);  color: var(--ms-purple);  border-color: var(--ms-purple-bd); }
.ms-badge--brand   { background: var(--ms-brand-soft); color: var(--ms-brand);   border-color: var(--ms-brand-border); }
.ms-badge--solid   { background: var(--ms-brand); color: var(--ms-on-brand); border-color: var(--ms-brand); }
.ms-badge--outline { background: transparent; color: var(--ms-text-2); border-color: var(--ms-border-strong); }
.ms-badge--sq      { border-radius: var(--ms-radius-xs); }

/* Etiqueta de categoría deportiva (Sub-18, Absoluta, Máster 40...) */
.ms-tag {
  display: inline-flex; align-items: center;
  height: 21px; padding: 0 8px;
  border-radius: var(--ms-radius-xs);
  background: var(--ms-surface-3);
  color: var(--ms-text-2);
  font-size: 11px; font-weight: 600;
  white-space: nowrap;
}
.ms-tag + .ms-tag { margin-left: 4px; }

/* Distintivo de rol con jerarquía visual (nivel 1 = mayor privilegio) */
.ms-role {
  display: inline-flex; align-items: center; gap: 6px;
  height: 23px; padding: 0 10px 0 6px;
  border-radius: var(--ms-radius-pill);
  font-size: 11px; font-weight: 600;
  border: 1px solid var(--ms-border);
  background: var(--ms-surface-2);
  color: var(--ms-text-2);
  white-space: nowrap;
}
.ms-role__lvl {
  width: 16px; height: 16px; border-radius: 50%; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 9px; font-weight: 800;
  background: var(--ms-text-3); color: var(--ms-surface);
}
.ms-role--l1 { border-color: var(--ms-brand-border); background: var(--ms-brand-soft); color: var(--ms-brand); }
.ms-role--l1 .ms-role__lvl { background: var(--ms-brand); color: var(--ms-on-brand); }
.ms-role--l2 .ms-role__lvl { background: var(--ms-info); color: #fff; }
.ms-role--l3 .ms-role__lvl { background: var(--ms-warning); color: #fff; }
.ms-role--l4 .ms-role__lvl { background: var(--ms-text-3); color: var(--ms-surface); }

/* Matriz de permisos */
.ms-perm {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: var(--ms-radius-sm);
}
.ms-perm--yes     { background: var(--ms-success-bg); color: var(--ms-success); }
.ms-perm--partial { background: var(--ms-warning-bg); color: var(--ms-warning); }
.ms-perm--no      { background: var(--ms-surface-3);  color: var(--ms-text-4); }

/* ============================================================================
   LISTAS DE CONTENIDO
   ========================================================================== */
.ms-list { display: flex; flex-direction: column; }
.ms-list__item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--ms-border-soft);
  transition: background var(--ms-dur) var(--ms-ease);
}
.ms-list__item:last-child { border-bottom: 0; }
.ms-list__item:hover { background: var(--ms-surface-2); }
.ms-list__icon {
  width: 36px; height: 36px; flex: none;
  border-radius: var(--ms-radius);
  background: var(--ms-surface-3); color: var(--ms-text-2);
  display: inline-flex; align-items: center; justify-content: center;
}
.ms-list__icon--brand   { background: var(--ms-brand-soft);  color: var(--ms-brand); }
.ms-list__icon--success { background: var(--ms-success-bg);  color: var(--ms-success); }
.ms-list__icon--warning { background: var(--ms-warning-bg);  color: var(--ms-warning); }
.ms-list__icon--danger  { background: var(--ms-danger-bg);   color: var(--ms-danger); }
.ms-list__icon--info    { background: var(--ms-info-bg);     color: var(--ms-info); }
.ms-list__icon--purple  { background: var(--ms-purple-bg);   color: var(--ms-purple); }
.ms-list__body { min-width: 0; flex: 1; }
.ms-list__body b { display: block; font-size: 13px; font-weight: 600; color: var(--ms-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ms-list__body span { display: block; font-size: 11.5px; color: var(--ms-text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ms-list__side { flex: none; text-align: right; font-size: 12px; color: var(--ms-text-2); }
.ms-list__side b { display: block; font-weight: 700; font-size: 12.5px; color: var(--ms-text); }
.ms-list__side span { display: block; font-size: 11px; color: var(--ms-text-3); }

/* ============================================================================
   LÍNEA DE TIEMPO (actividad, auditoría, historial)
   ========================================================================== */
.ms-timeline { display: flex; flex-direction: column; }
.ms-timeline__item { position: relative; display: flex; gap: 14px; padding-bottom: 18px; }
.ms-timeline__item:last-child { padding-bottom: 0; }
.ms-timeline__item:not(:last-child)::before {
  content: ""; position: absolute;
  left: 17px; top: 38px; bottom: 2px;
  width: 1px; background: var(--ms-border);
}
.ms-timeline__icon {
  display: grid; place-items: center;
  width: 35px; height: 35px; flex: none;
  border-radius: var(--ms-radius); z-index: 1;
  background: var(--ms-surface-3); color: var(--ms-text-2);
}
.ms-timeline__icon .ms-icon { width: 17px; height: 17px; }
.ms-timeline__icon--brand   { background: var(--ms-brand-soft);  color: var(--ms-brand); }
.ms-timeline__icon--success { background: var(--ms-success-bg);  color: var(--ms-success); }
.ms-timeline__icon--warning { background: var(--ms-warning-bg);  color: var(--ms-warning); }
.ms-timeline__icon--danger  { background: var(--ms-danger-bg);   color: var(--ms-danger); }
.ms-timeline__icon--info    { background: var(--ms-info-bg);     color: var(--ms-info); }
.ms-timeline__icon--purple  { background: var(--ms-purple-bg);   color: var(--ms-purple); }
.ms-timeline__body { min-width: 0; flex: 1; padding-top: 1px; }
.ms-timeline__title { font-size: 13px; font-weight: 600; color: var(--ms-text); }
.ms-timeline__desc  { margin-top: 3px; font-size: 12.5px; color: var(--ms-text-2); }
.ms-timeline__meta  { display: block; margin-top: 5px; font-size: 11px; color: var(--ms-text-3); }

/* ============================================================================
   PESTAÑAS
   ========================================================================== */
.ms-tabs {
  display: flex; align-items: center; gap: 4px;
  padding: 4px;
  border-radius: var(--ms-radius-lg);
  background: var(--ms-surface-2);
  border: 1px solid var(--ms-border);
  overflow-x: auto; scrollbar-width: none;
}
.ms-tabs::-webkit-scrollbar { display: none; }
.ms-tabs__item {
  display: inline-flex; align-items: center; gap: 7px;
  height: 32px; padding: 0 13px;
  border: 0; background: transparent;
  border-radius: var(--ms-radius-sm);
  color: var(--ms-text-2); font-size: 12.5px; font-weight: 600;
  white-space: nowrap; cursor: pointer;
  transition: background var(--ms-dur) var(--ms-ease), color var(--ms-dur) var(--ms-ease);
}
.ms-tabs__item .ms-icon { width: 15px; height: 15px; }
.ms-tabs__item:hover { color: var(--ms-text); }
.ms-tabs__item.is-active { background: var(--ms-brand); color: var(--ms-on-brand); }
.ms-tabs__count {
  min-width: 19px; height: 18px; padding: 0 5px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--ms-radius-pill);
  background: var(--ms-neutral-bg); color: inherit;
  font-size: 10.5px; font-weight: 700;
}
.ms-tabs__item.is-active .ms-tabs__count { background: rgba(255, 255, 255, .24); }

/* Pestañas subrayadas (fichas de detalle) */
.ms-tabs--line {
  display: flex; align-items: center; gap: 22px;
  padding: 0; background: none; border: 0;
  border-bottom: 1px solid var(--ms-border);
  border-radius: 0;
}
.ms-tabs--line .ms-tabs__item {
  position: relative; height: auto; padding: 11px 0;
  border-radius: 0; background: none; color: var(--ms-text-3); font-size: 13px;
}
.ms-tabs--line .ms-tabs__item:hover { color: var(--ms-text-2); background: none; }
.ms-tabs--line .ms-tabs__item.is-active { color: var(--ms-brand); background: none; }
.ms-tabs--line .ms-tabs__item.is-active::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px;
  height: 2px; border-radius: 2px; background: var(--ms-brand);
}
.ms-tabs--line .ms-tabs__item.is-active .ms-tabs__count { background: var(--ms-brand-soft); color: var(--ms-brand); }

/* ============================================================================
   PARES CLAVE / VALOR, ESTADO VACÍO Y NOTAS
   ========================================================================== */
.ms-kv { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 11px 16px; font-size: 13px; }
.ms-kv dt { color: var(--ms-text-3); font-weight: 500; }
.ms-kv dd { margin: 0; color: var(--ms-text); font-weight: 500; }
@media (max-width: 575.98px) {
  .ms-kv { grid-template-columns: minmax(0, 1fr); gap: 2px 0; }
  .ms-kv dd { margin-bottom: 10px; }
}

.ms-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px; padding: 52px 24px; text-align: center;
}
.ms-empty__icon {
  width: 48px; height: 48px; border-radius: var(--ms-radius-lg);
  background: var(--ms-surface-3); color: var(--ms-text-3);
  display: inline-flex; align-items: center; justify-content: center;
}
.ms-empty__icon .ms-icon { width: 22px; height: 22px; }
.ms-empty h4 { font-size: 14px; font-weight: 700; }
.ms-empty p { font-size: 12.5px; color: var(--ms-text-3); max-width: 400px; }

.ms-note {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 12px 14px;
  border: 1px dashed var(--ms-border-strong);
  border-radius: var(--ms-radius);
  background: var(--ms-surface-2);
  font-size: 12.5px; color: var(--ms-text-2);
}
.ms-note .ms-icon { color: var(--ms-text-3); margin-top: 1px; }
.ms-note b { color: var(--ms-text); font-weight: 600; }
.ms-note--brand { border-color: var(--ms-brand-border); background: var(--ms-brand-soft); }
.ms-note--brand .ms-icon { color: var(--ms-brand); }

/* ============================================================================
   MIGAS DE PAN (dentro de la cabecera de página)
   ========================================================================== */
.ms-breadcrumb {
  display: flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--ms-text-3);
  margin-bottom: 8px; flex-wrap: wrap;
}
.ms-breadcrumb .ms-icon { width: 12px; height: 12px; }
.ms-breadcrumb a:hover { color: var(--ms-text-2); }
.ms-breadcrumb .is-current { color: var(--ms-brand); font-weight: 600; }

/* ============================================================================
   TARJETA DE ENTIDAD / DOCUMENTO
   ========================================================================== */
.ms-entity-card {
  display: flex; flex-direction: column; gap: 14px;
  padding: 18px;
  transition: transform var(--ms-dur) var(--ms-ease), border-color var(--ms-dur) var(--ms-ease);
}
.ms-entity-card:hover { transform: translateY(-3px); border-color: var(--ms-brand); }
.ms-entity-card__head { display: flex; align-items: flex-start; gap: 12px; }
.ms-entity-card__text { flex: 1; min-width: 0; }
.ms-entity-card__text b { display: block; font-size: 14.5px; font-weight: 700; color: var(--ms-text); }
.ms-entity-card__text span { display: block; margin-top: 2px; font-size: 12px; color: var(--ms-text-3); }
.ms-entity-card__stats {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px;
  padding: 13px 0;
  border-top: 1px solid var(--ms-border-soft);
  border-bottom: 1px solid var(--ms-border-soft);
}
.ms-entity-card__stat b { display: block; font-size: 16px; font-weight: 700; color: var(--ms-text); }
.ms-entity-card__stat span { display: block; font-size: 10.5px; color: var(--ms-text-3); }
.ms-entity-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
