/* =========================================================
   SEMUA REKAP
========================================================= */

.rekap-filter {

    margin-top: 25px;

    padding: 22px;

}


.rekap-filter-title {

    font-size: 17px;

    font-weight: 700;

    margin-bottom: 18px;

}


.rekap-filter-form {

    display: grid;

    grid-template-columns:
        1fr
        1fr
        1.5fr
        auto;

    gap: 14px;

    align-items: end;

}


.form-group label {

    display: block;

    margin-bottom: 7px;

    font-size: 13px;

    font-weight: 600;

    color: #344054;

}


.form-control {

    width: 100%;

    min-height: 42px;

    padding:
        0
        12px;

    border:
        1px solid
        #d7dce3;

    background: #ffffff;

    color: var(--text);

    outline: none;

}


.form-control:focus {

    border-color:
        var(--green);

    box-shadow:
        0 0 0 2px
        rgba(57,196,92,.12);

}


.rekap-filter-actions {

    display: flex;

    gap: 8px;

}


/* =========================================================
   STATISTIK
========================================================= */

.rekap-stats {

    display: grid;

    grid-template-columns:
        repeat(4, 1fr);

    gap: 20px;

    margin-top: 20px;

}


.rekap-stat {

    min-height: 110px;

    padding: 20px;

    display: flex;

    align-items: center;

    gap: 18px;

}


.rekap-stat-icon {

    width: 48px;

    height: 48px;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 25px;

}


.rekap-stat-icon.blue {

    color: #1877ee;

}


.rekap-stat-icon.green {

    color: #35bd58;

}


.rekap-stat-icon.yellow {

    color: #d79e00;

}


.rekap-stat-icon.purple {

    color: #6a38c9;

}


.rekap-stat-number {

    font-size: 27px;

    font-weight: 700;

    line-height: 1;

    margin-bottom: 7px;

}


.rekap-stat-label {

    font-size: 14px;

    font-weight: 600;

    color: #475467;

}


/* =========================================================
   TABEL
========================================================= */

.rekap-table-panel {

    margin-top: 20px;

    overflow: hidden;

}


.rekap-table-head {

    min-height: 76px;

    padding:
        0
        20px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    border-bottom:
        1px solid
        var(--border);

}


.rekap-subtitle {

    margin-top: 6px;

    color: var(--muted);

    font-size: 13px;

}


.rekap-count {

    color: var(--muted);

    font-size: 14px;

}


.rekap-table-wrap {

    overflow-x: auto;

}


.rekap-table {

    width: 100%;

    border-collapse: collapse;

}


.rekap-table th,
.rekap-table td {

    padding:
        14px
        16px;

    border-bottom:
        1px solid
        #e8ebef;

    text-align: left;

    font-size: 14px;

    white-space: nowrap;

}


.rekap-table th {

    background: #fafbfc;

    color: #233148;

    font-weight: 700;

}


.rekap-table tbody tr:hover {

    background: #fafdfb;

}


/* =========================================================
   NAMA GURU
========================================================= */

.rekap-guru-name {

    font-weight: 600;

}


.rekap-guru-role {

    margin-top: 3px;

    color: var(--muted);

    font-size: 12px;

}


.unknown-guru {

    color: #98a2b3;

    font-style: italic;

}


/* =========================================================
   STATUS
========================================================= */

.rekap-status {

    display: inline-flex;

    align-items: center;

    gap: 5px;

    padding:
        6px
        11px;

    border-radius: 18px;

    font-size: 13px;

    font-weight: 600;

}


.rekap-status.present {

    color: #149346;

    background: #e9f8ee;

}


.rekap-status.late {

    color: #a97100;

    background: #fff5d7;

}


.empty-state {

    padding: 40px !important;

    text-align: center !important;

    color: var(--muted);

}


/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 1100px) {

    .rekap-filter-form {

        grid-template-columns:
            1fr
            1fr;

    }


    .rekap-search {

        grid-column:
            1 / -1;

    }


    .rekap-filter-actions {

        grid-column:
            1 / -1;

    }


    .rekap-stats {

        grid-template-columns:
            repeat(2, 1fr);

    }

}


@media (max-width: 600px) {

    .rekap-filter-form {

        grid-template-columns: 1fr;

    }


    .rekap-search {

        grid-column: auto;

    }


    .rekap-filter-actions {

        grid-column: auto;

    }


    .rekap-filter-actions .btn {

        flex: 1;

    }


    .rekap-stats {

        grid-template-columns: 1fr;

    }


    .rekap-table-head {

        min-height: 85px;

        padding:
            0
            15px;

        align-items: flex-start;

        justify-content: center;

        flex-direction: column;

        gap: 5px;

    }


    .rekap-table th,
    .rekap-table td {

        padding:
            12px
            13px;

    }

}

/* =========================================================
   WHATSAPP STATUS
========================================================= */

.whatsapp-status{

    display:inline-flex;

    align-items:center;

    gap:5px;

    padding:6px 11px;

    border-radius:18px;

    font-size:13px;

    font-weight:600;

    white-space:nowrap;

}


.whatsapp-status.sent{

    color:#149346;

    background:#e9f8ee;

}


.whatsapp-status.pending{

    color:#a97100;

    background:#fff5d7;

}