/* Styles specific to the data tool group. */

/* ---------- csv viewer ---------- */

.csv-input-area {
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 12px;
    overflow: hidden;
    max-height: 640px;
    opacity: 1;
    transition: max-height 0.4s var(--ease-out), opacity 0.3s ease;
}

.csv-input-collapsed {
    max-height: 0;
    opacity: 0;
}

.csv-dropzone {
    padding: 14px 10px;
    gap: 8px;
}

.csv-sort-arrow {
    display: inline-block;
    margin-left: 7px;
    font-size: 9px;
    color: var(--accent);
    opacity: 0;
    transform: translateY(-1px);
    transition: transform 0.3s var(--ease-spring), opacity 0.2s ease;
}

th.csv-sorted-asc .csv-sort-arrow {
    opacity: 1;
}

th.csv-sorted-desc .csv-sort-arrow {
    opacity: 1;
    transform: rotate(180deg);
}

@media (max-width: 780px) {
    .csv-input-area {
        grid-template-columns: 1fr;
    }
}

/* ---------- data validator ---------- */

.validator-status {
    font-size: 15px;
    padding: 14px 16px;
}

.validator-pending {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    color: var(--text-faint);
}

.validator-pending .spinner {
    width: 13px;
    height: 13px;
}

.validator-format-chip {
    font-weight: 700;
    letter-spacing: 0.8px;
}

.validator-format-pop {
    animation: validator-format-pop 0.45s var(--ease-spring);
}

@keyframes validator-format-pop {
    40% { transform: scale(1.22); }
}
