/* =========================================================
   CODESPHERE PAYBILL — GLOBAL SKELETON SYSTEM
   ========================================================= */

.cs-skeleton {
    animation: skeletonEnter 0.25s ease;
}


/* =========================================================
   SHIMMER
   ========================================================= */

.skeleton-pulse {
    background: linear-gradient(
        90deg,
        rgba(148, 163, 184, 0.12) 25%,
        rgba(148, 163, 184, 0.28) 50%,
        rgba(148, 163, 184, 0.12) 75%
    );

    background-size: 200% 100%;

    animation:
        skeletonShimmer 1.35s ease-in-out infinite;
}


/* =========================================================
   AUTH
   ========================================================= */

.auth-skeleton-side {
    padding: 42px;
}

.skeleton-brand {
    width: 185px;
    height: 30px;
    border-radius: 7px;
}

.auth-skeleton-side-content {
    margin-top: 130px;
    max-width: 470px;
}

.skeleton-eyebrow {
    width: 125px;
    height: 14px;
    border-radius: 5px;
}

.skeleton-title {
    width: 82%;
    height: 42px;
    margin-top: 20px;
    border-radius: 8px;
}

.skeleton-text {
    width: 94%;
    height: 15px;
    margin-top: 22px;
    border-radius: 5px;
}

.skeleton-text-short {
    width: 72%;
    margin-top: 9px;
}

.skeleton-features {
    display: grid;
    gap: 18px;
    margin-top: 35px;
}

.skeleton-feature {
    display: flex;
    align-items: center;
    gap: 13px;
}

.skeleton-feature-icon {
    width: 27px;
    height: 27px;
    flex: 0 0 27px;
    border-radius: 50%;
}

.skeleton-feature-line {
    width: 230px;
    height: 13px;
    border-radius: 5px;
}


/* FORM */

.skeleton-back {
    width: 70px;
    height: 16px;
    border-radius: 5px;
}

.skeleton-heading {
    width: 135px;
    height: 35px;
    margin-top: 32px;
    border-radius: 7px;
}

.skeleton-sub {
    width: 86%;
    height: 14px;
    margin-top: 15px;
    border-radius: 5px;
}

.skeleton-field {
    margin-top: 26px;
}

.skeleton-label {
    width: 110px;
    height: 13px;
    border-radius: 4px;
}

.skeleton-input {
    width: 100%;
    height: 50px;
    margin-top: 9px;
    border-radius: 9px;
}

.skeleton-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 21px;
}

.skeleton-small {
    width: 90px;
    height: 13px;
    border-radius: 5px;
}

.skeleton-small-right {
    width: 105px;
}

.skeleton-button {
    width: 100%;
    height: 50px;
    margin-top: 28px;
    border-radius: 9px;
}

.skeleton-meta {
    width: 210px;
    height: 13px;
    margin: 25px auto 0;
    border-radius: 5px;
}


/* =========================================================
   DASHBOARD
   ========================================================= */

.skeleton-dashboard-topbar {
    height: 70px;
    padding: 0 30px;

    display: flex;
    align-items: center;
    justify-content: space-between;
}

.skeleton-dashboard-logo {
    width: 150px;
    height: 28px;
    border-radius: 6px;
}

.skeleton-dashboard-user {
    width: 120px;
    height: 35px;
    border-radius: 20px;
}

.skeleton-dashboard-main {
    padding: 35px;
}

.skeleton-dashboard-heading {
    width: 250px;
    height: 30px;
    border-radius: 7px;
}

.skeleton-dashboard-sub {
    width: 330px;
    height: 14px;
    margin-top: 12px;
    border-radius: 5px;
}

.skeleton-dashboard-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-top: 30px;
}

.skeleton-dashboard-card {
    min-height: 150px;
    padding: 24px;
    border-radius: 16px;
}

.skeleton-card-label {
    width: 110px;
    height: 13px;
    border-radius: 5px;
}

.skeleton-card-value {
    width: 150px;
    height: 32px;
    margin-top: 18px;
    border-radius: 7px;
}

.skeleton-card-small {
    width: 90px;
    height: 11px;
    margin-top: 15px;
    border-radius: 5px;
}

.skeleton-dashboard-content {
    display: grid;
    grid-template-columns: 1.6fr 1fr;
    gap: 20px;
    margin-top: 25px;
}

.skeleton-dashboard-chart {
    min-height: 320px;
    border-radius: 16px;
}

.skeleton-dashboard-panel {
    min-height: 320px;
    border-radius: 16px;
}


/* =========================================================
   TABLE
   ========================================================= */

.skeleton-table-wrapper {
    width: 100%;
}

.skeleton-table-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.skeleton-table-title {
    width: 180px;
    height: 25px;
    border-radius: 6px;
}

.skeleton-table-action {
    width: 100px;
    height: 38px;
    border-radius: 8px;
}

.skeleton-table {
    display: grid;
    gap: 1px;
}

.skeleton-table-row {
    min-height: 65px;
    padding: 15px 20px;

    display: grid;
    grid-template-columns: 2fr 1fr 1fr 100px;
    gap: 20px;

    align-items: center;
}

.skeleton-table-cell {
    width: 75%;
    height: 13px;
    border-radius: 5px;
}

.skeleton-table-cell-large {
    width: 85%;
}

.skeleton-table-cell-status {
    width: 70px;
}


/* =========================================================
   GENERIC CARD
   ========================================================= */

.skeleton-generic-card {
    min-height: 180px;
    padding: 25px;
    border-radius: 16px;
}

.skeleton-generic-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
}

.skeleton-generic-title {
    width: 150px;
    height: 20px;
    margin-top: 20px;
    border-radius: 6px;
}

.skeleton-generic-text {
    width: 90%;
    height: 12px;
    margin-top: 18px;
    border-radius: 5px;
}

.skeleton-generic-text-short {
    width: 65%;
    margin-top: 8px;
}


/* =========================================================
   GENERIC PAGE
   ========================================================= */

.generic-page-skeleton {
    padding: 35px;
}

.skeleton-page-heading {
    width: 220px;
    height: 30px;
    border-radius: 7px;
}

.skeleton-page-sub {
    width: 320px;
    height: 14px;
    margin-top: 12px;
    border-radius: 5px;
}

.skeleton-page-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-top: 30px;
}


/* =========================================================
   CONTAINER SURFACES
   =========================================================
   .skeleton-dashboard-card, .skeleton-generic-card and
   .skeleton-table-row define sizing/spacing but no background
   of their own — they were relying on an outer card component
   that only exists once the real page mounts. Since the
   skeleton renders standalone, they need a resting surface so
   they read as card outlines instead of invisible boxes
   around the shimmering lines inside them.
   ========================================================= */

.skeleton-dashboard-card,
.skeleton-generic-card,
.skeleton-table-row {
    background: rgba(148, 163, 184, 0.05);
    border: 1px solid rgba(148, 163, 184, 0.14);
}

.skeleton-table-row + .skeleton-table-row {
    border-top: none;
}


/* =========================================================
   TRANSITIONS
   ========================================================= */

.skeleton-exit {
    animation: skeletonExit 0.18s ease forwards;
}

@keyframes skeletonShimmer {

    0% {
        background-position: 200% 0;
    }

    100% {
        background-position: -200% 0;
    }

}

@keyframes skeletonEnter {

    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }

}

@keyframes skeletonExit {

    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }

}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 768px) {

    .auth-skeleton-side {
        display: none;
    }

    .skeleton-dashboard-cards {
        grid-template-columns: 1fr;
    }

    .skeleton-dashboard-content {
        grid-template-columns: 1fr;
    }

    .skeleton-page-grid {
        grid-template-columns: 1fr;
    }

    .skeleton-table-row {
        grid-template-columns: 1.5fr 1fr;
    }

}