/* cignyl-sftp 20260824 */
/* ------------------------------ */
/* v2 Grid (data-driven grid)     */
/* ------------------------------ */

.v2-theme .v2-grid {
  display: grid;
  grid-template-columns: repeat(var(--v2-grid-columns, 12), minmax(0, 1fr));
  gap: var(--v2-grid-gap, var(--v2-space-md));
  align-items: var(--v2-grid-align-items, stretch);
  justify-items: var(--v2-grid-justify-items, stretch);

  /* areas mode uses this; stack mode sets it to 'none' */
  grid-template-areas: var(--v2-grid-areas, none);
}

/* Autofit mode: responsive columns with optional max-columns cap.
   --v2-grid-min-col-width sets the minimum column width.
   --v2-grid-columns acts as a max-columns cap (set to 9999 when uncapped). */
.v2-theme .v2-grid.v2-grid--mode-autofit {
  grid-template-columns: repeat(auto-fit, minmax(
    min(100%, max(
      var(--v2-grid-min-col-width, 200px),
      calc(
        (100% - (var(--v2-grid-columns, 9999) - 1) * var(--v2-grid-gap, var(--v2-space-md)))
        / var(--v2-grid-columns, 9999)
      )
    )),
    1fr
  ));
  grid-template-areas: none;
}

.v2-theme .v2-grid__item {
  min-width: 0; /* allow inner components to shrink in grid columns */
  transition: transform 180ms cubic-bezier(0.2, 0, 0, 1), box-shadow 140ms ease, opacity 140ms ease;
}

.v2-theme .v2-grid.v2-grid--sortable .v2-grid__item {
  cursor: grab;
}

.v2-theme .v2-grid.v2-grid--sortable:not(.v2-grid--sortable-handle) .v2-grid__item * {
  cursor: grab;
}

.v2-theme .v2-grid.v2-grid--sortable.v2-grid--sortable-handle .v2-grid__item {
  cursor: auto;
}

.v2-theme .v2-grid.v2-grid--sortable.v2-grid--sortable-handle .v2-grid__item:active {
  cursor: auto;
}

.v2-theme .v2-grid.v2-grid--sortable.v2-grid--sortable-handle [data-v2-grid-drag-handle="true"] {
  cursor: grab;
}

.v2-theme .v2-grid.v2-grid--sortable.v2-grid--sortable-handle [data-v2-grid-drag-handle="true"]:active {
  cursor: grabbing;
}

.v2-theme .v2-grid.v2-grid--sortable .v2-grid__item:active {
  cursor: grabbing;
}

.v2-theme .v2-grid.v2-grid--sortable:not(.v2-grid--sortable-handle) .v2-grid__item:active * {
  cursor: grabbing;
}

.v2-theme .v2-grid.v2-grid--sortable .v2-grid__item.v2-grid__item--dragging {
  will-change: transform;
  opacity: 0.82;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.25);
  z-index: 3;
}

.v2-theme .v2-grid__item.v2-grid__item--animating {
  will-change: transform;
}

/* If a grid item spans multiple rows, stretch the inner "panel" component to fill. */
.v2-theme .v2-grid__item[data-v2-grid-multirow="true"] > .v2-card,
.v2-theme .v2-grid__item[data-v2-grid-multirow="true"] > .v2-grid {
  height: 100%;
}

