/* T064 - DataGrid (Components/D365/DataGrid). gate-3 §0.1.5 G1-G6. */

.d365-grid-wrap {
  display: flex;
  flex-direction: column;
  gap: var(--m365-space-2);
}

/* G2: filtro rapido, estrecho, arriba a la izquierda. */
.d365-grid-quickfilter {
  display: inline-flex;
  align-items: center;
  gap: var(--m365-space-1);
  width: 220px;
  border: 1px solid var(--m365-stroke-control);
  border-radius: var(--m365-radius-sm);
  padding: 4px var(--m365-space-2);
  background: var(--m365-surface-card);
}

.d365-grid-quickfilter-icon {
  color: var(--m365-text-secondary);
  font-size: 12px;
}

.d365-grid-quickfilter input {
  border: none;
  background: transparent;
  font-size: var(--m365-fs-body);
  width: 100%;
  color: var(--m365-text-primary);
}

/* G-FID-2: filtro presente en la forma (uat-12 "Filter" junto a la rejilla) pero inerte
   mientras la rejilla no tenga una fuente de datos real que filtrar — mismo idioma que
   el resto del armazon (F04) para "sin funcion real todavia", nunca deshabilitado sin
   explicacion visual. */
.d365-grid-quickfilter input:disabled {
  color: var(--m365-text-disabled);
  cursor: default;
}

.d365-grid-scroll {
  border: 1px solid var(--m365-stroke-divider);
  border-radius: var(--m365-radius-sm);
}

.d365-grid {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--m365-fs-body);
}

.d365-grid thead tr {
  background: var(--m365-surface-subtle);
}

.d365-grid th,
.d365-grid td {
  padding: 6px var(--m365-space-2);
  text-align: left;
  border-bottom: 1px solid var(--m365-stroke-divider);
  white-space: nowrap;
  position: relative;
}

/* Densidad: filas compactas. */
.d365-grid td {
  height: 30px;
}

/* Amounts a la derecha, columna mas a la derecha (visual-language.md). */
.d365-grid-th-right {
  text-align: right;
}

.d365-grid-td-right {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.d365-grid-checkbox-col {
  width: 36px;
  text-align: center;
}

.d365-grid-th-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: none;
  font-weight: var(--m365-fw-semibold);
  color: var(--m365-text-primary);
  font-size: var(--m365-fs-body);
  text-align: left;
}

.d365-grid-th-btn:hover {
  color: var(--m365-accent-70);
}

.d365-grid-sort-arrow {
  color: var(--m365-accent-70);
  font-size: 11px;
}

/* G1: opciones de cuadricula al extremo derecho. */
.d365-grid-options-col {
  width: 28px;
  text-align: center;
}

.d365-grid-options-btn {
  background: transparent;
  border: none;
  color: var(--m365-text-secondary);
  font-size: 14px;
}

.d365-grid-options-btn:hover {
  color: var(--m365-text-primary);
}

.d365-grid tbody tr:hover {
  background: var(--m365-surface-hover);
}

.d365-grid tbody tr.is-selected {
  background: var(--m365-surface-selected);
}

.d365-grid-empty-cell {
  padding: 0;
}

/* G6: estado vacio, load-bearing (sin datos de ejemplo). */
.d365-grid-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--m365-space-2);
  padding: var(--m365-space-6) var(--m365-space-4);
  color: var(--m365-text-secondary);
}

.d365-grid-empty-illustration {
  width: 56px;
  height: 56px;
  color: var(--m365-text-disabled);
}

.d365-grid-empty-text {
  font-size: var(--m365-fs-body);
}

/* G5: barra local de rejillas anidadas en FastTab. */
.d365-grid-local-toolbar {
  display: flex;
  gap: var(--m365-space-4);
}

.d365-grid-local-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: none;
  color: var(--m365-text-link);
  font-size: var(--m365-fs-body);
}

.d365-grid-local-btn:hover:not(:disabled) {
  text-decoration: underline;
}

.d365-grid-local-btn:disabled {
  color: var(--m365-text-disabled);
}

/* ---------- Panel de filtro de columna (G3/G4) ---------- */

.d365-column-filter-panel {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: var(--m365-z-flyout);
  background: var(--m365-surface-card);
  border: 1px solid var(--m365-stroke-divider);
  border-radius: var(--m365-radius-sm);
  box-shadow: var(--m365-shadow-flyout);
  padding: var(--m365-space-2);
  width: 240px;
  white-space: normal;
  text-align: left;
  font-weight: var(--m365-fw-regular);
}

.d365-column-filter-sort {
  display: flex;
  align-items: center;
  gap: var(--m365-space-2);
  width: 100%;
  background: transparent;
  border: none;
  padding: var(--m365-space-2);
  font-size: var(--m365-fs-body);
  color: var(--m365-text-primary);
  text-align: left;
}

.d365-column-filter-sort:hover {
  background: var(--m365-surface-hover);
}

.d365-column-filter-body {
  border-top: 1px solid var(--m365-stroke-divider);
  margin-top: var(--m365-space-1);
  padding-top: var(--m365-space-2);
  display: flex;
  flex-direction: column;
  gap: var(--m365-space-1);
}

.d365-column-filter-column-name {
  font-weight: var(--m365-fw-semibold);
  padding: 0 var(--m365-space-2);
}

.d365-column-filter-operator {
  position: relative;
  padding: 0 var(--m365-space-2);
}

.d365-column-filter-operator-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: none;
  color: var(--m365-text-link);
  font-size: var(--m365-fs-body);
  padding: 2px 0;
}

.d365-column-filter-operator-menu {
  position: absolute;
  top: 100%;
  left: var(--m365-space-2);
  z-index: calc(var(--m365-z-flyout) + 1);
  background: var(--m365-surface-card);
  border: 1px solid var(--m365-stroke-divider);
  border-radius: var(--m365-radius-sm);
  box-shadow: var(--m365-shadow-flyout);
  list-style: none;
  margin: 0;
  padding: 4px;
  width: 160px;
}

.d365-column-filter-operator-option {
  width: 100%;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--m365-radius-sm);
  padding: 4px 6px;
  text-align: left;
  font-size: var(--m365-fs-body);
  color: var(--m365-text-primary);
}

.d365-column-filter-operator-option:hover {
  background: var(--m365-surface-hover);
}

/* G4: el operador activo lleva recuadro azul. */
.d365-column-filter-operator-option.is-active {
  border-color: var(--m365-accent);
  color: var(--m365-accent-70);
}

.d365-column-filter-value {
  margin: 0 var(--m365-space-2);
  border: 1px solid var(--m365-stroke-control);
  border-radius: var(--m365-radius-sm);
  padding: 4px 6px;
  font-size: var(--m365-fs-body);
}

.d365-column-filter-actions {
  display: flex;
  gap: var(--m365-space-2);
  padding: var(--m365-space-2);
}

.d365-column-filter-apply {
  background: var(--m365-accent);
  color: var(--m365-text-on-accent);
  border: none;
  border-radius: var(--m365-radius-sm);
  padding: 4px var(--m365-space-3);
  font-size: var(--m365-fs-body);
}

.d365-column-filter-clear {
  background: var(--m365-surface-card);
  color: var(--m365-text-primary);
  border: 1px solid var(--m365-stroke-control);
  border-radius: var(--m365-radius-sm);
  padding: 4px var(--m365-space-3);
  font-size: var(--m365-fs-body);
}

/* Responsive: rejilla -> tarjetas (T165, adelantado). */
@media (max-width: 640px) {
  .d365-grid thead {
    display: none;
  }

  .d365-grid,
  .d365-grid tbody,
  .d365-grid tr,
  .d365-grid td {
    display: block;
    width: 100%;
  }

  .d365-grid tr {
    border-bottom: 2px solid var(--m365-stroke-divider);
    padding: var(--m365-space-2) 0;
  }

  .d365-grid td {
    border-bottom: none;
    text-align: left !important;
  }
}
