@keyframes lib-skeleton-shimmer {
    0%   { background-position: -240px 0; }
    100% { background-position: calc(240px + 100%) 0; }
}

.lib-skeleton-line {
    display: block;
    width: 100%;
    height: 14px;
    border-radius: 4px;
    background-color: #e9ecef;
    background-image: linear-gradient(
        90deg,
        #e9ecef 0px,
        #f8f9fa 120px,
        #e9ecef 240px
    );
    background-size: 240px 100%;
    background-repeat: no-repeat;
    animation: lib-skeleton-shimmer 1.3s ease-in-out infinite;
}

.lib-skeleton-line--sm  { height: 12px; }
.lib-skeleton-line--md  { height: 16px; }
.lib-skeleton-line--lg  { height: 32px; border-radius: 6px; }
.lib-skeleton-line--pill { height: 22px; border-radius: 999px; }

.lib-skeleton-table {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 0;
    background: #fff;
}

.lib-skeleton-table--fill {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

.lib-skeleton-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid #e9ecef;
}

.lib-skeleton-toolbar__search {
    width: 220px;
    max-width: 100%;
}

.lib-skeleton-toolbar__actions {
    display: flex;
    gap: 8px;
}

.lib-skeleton-toolbar__btn {
    width: 40px;
    height: 38px;
    border-radius: 6px;
    background-color: #e9ecef;
    background-image: linear-gradient(90deg, #e9ecef 0px, #f8f9fa 120px, #e9ecef 240px);
    background-size: 240px 100%;
    background-repeat: no-repeat;
    animation: lib-skeleton-shimmer 1.3s ease-in-out infinite;
}

.lib-skeleton-hscroll {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: auto;
    overflow-y: auto;
}

.lib-skeleton-table--fill .lib-skeleton-hscroll {
    flex: 1 1 auto;
    min-height: 0;
}

.lib-skeleton-thead {
    display: grid;
    gap: 8px;
    padding: 12px 16px;
    border-bottom: 2px solid #e9ecef;
    background: #fff;
    min-width: max-content;
}

.lib-skeleton-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: visible;
}

.lib-skeleton-row {
    display: grid;
    gap: 8px;
    padding: 14px 16px;
    border-bottom: 1px solid #f1f3f5;
    align-items: center;
    min-width: max-content;
}

.lib-skeleton-row:nth-child(even) {
    background: #fafbfc;
}

.lib-skeleton-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 16px;
    border-top: 1px solid #e9ecef;
    margin-top: auto;
}

.lib-skeleton-footer__left {
    display: flex;
    align-items: center;
    gap: 12px;
}

.lib-skeleton-footer__select {
    width: 75px;
    height: 32px;
    border-radius: 6px;
    background-color: #e9ecef;
    background-image: linear-gradient(90deg, #e9ecef 0px, #f8f9fa 120px, #e9ecef 240px);
    background-size: 240px 100%;
    background-repeat: no-repeat;
    animation: lib-skeleton-shimmer 1.3s ease-in-out infinite;
}

.lib-skeleton-footer__pages {
    display: flex;
    gap: 6px;
}

.lib-skeleton-footer__page {
    width: 32px;
    height: 32px;
    border-radius: 4px;
    background-color: #e9ecef;
    background-image: linear-gradient(90deg, #e9ecef 0px, #f8f9fa 120px, #e9ecef 240px);
    background-size: 240px 100%;
    background-repeat: no-repeat;
    animation: lib-skeleton-shimmer 1.3s ease-in-out infinite;
}

.lib-skeleton-block {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 16px;
}
