.dataTables_wrapper {
    position: relative;
}

.dataTables_wrapper .dataTables_processing {
    position: absolute;
    top: 50%;
    left: 50%;
    width: auto;
    height: auto;
    margin: 0;
    padding: 14px;
    transform: translate(-50%, -50%);
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .95);
    box-shadow: none;
    z-index: 5;
    pointer-events: none;
}

/* DataTables 1.13 adds its own dots after the processing message. */
.dataTables_processing > div {
    display: none;
}

.osl-table-loader {
    display: flex;
    align-items: center;
    justify-content: center;
}

.osl-table-spinner {
    display: block;
    width: 28px;
    height: 28px;
    border: 3px solid #dce7f1;
    border-top-color: #1b5180;
    border-radius: 50%;
    animation: osl-table-spin .75s linear infinite;
}

.osl-table-loader-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@keyframes osl-table-spin {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .osl-table-spinner { animation: none; }
}
