/* Equal Height Cards System */
/* Make all cards in the same row equal height */
.equal-height-row {
    display: flex;
    flex-wrap: wrap;
}

.equal-height-row > [class*="col-"] {
    display: flex;
    flex-direction: column;
}

.equal-height-row > [class*="col-"] > .card {
    height: 100%;
    display: flex;
    flex-direction: column;
}

.equal-height-row .card-body {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Ensure charts and content maintain their specified heights */
.equal-height-row .timeline-label {
    flex: 1;
    overflow-y: auto;
}

.equal-height-row .table-responsive {
    flex: 1;
    overflow-y: auto;
}

/* Special handling for action buttons grid */
.equal-height-row .card-body > .row {
    height: 100%;
}

/* Make listing tables grow to fill space and push buttons to bottom */
.equal-height-row .tab-content {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.equal-height-row .tab-pane {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.equal-height-row .table-responsive {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Keep the paired listing-page cards level within each desktop row. */
.fixed-height-row {
    align-items: stretch;
}

.fixed-height-row > [class*="col-"] {
    display: flex;
    flex-direction: column;
}

.fixed-height-row > [class*="col-"] > .card {
    flex: 1 1 auto;
}

/* Center empty state content vertically - only for empty tables */
.equal-height-row .table-responsive table.empty-table {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.equal-height-row .table-responsive table.empty-table tbody {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Showcase listing cards - ensure consistent height in single column */
.listing-card.card {
    min-height: 200px;
}

/* Property listing cards - standardize height across all listing cards */
.card.card-hover-border {
    min-height: 180px;
}
