*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family:Arial,sans-serif;
}

body{
    min-height:100vh;
    background:
        linear-gradient(
            rgba(244,248,255,.95),
            rgba(244,248,255,.95)
        ),
        url("background.png");

    background-size:cover;
    background-position:center;
    background-attachment:fixed;
    color:#1f2937;
}

/*==============================
SIDEBAR
==============================*/

.sidebar{
    position:fixed;
    top:0;
    left:0;
    width:250px;
    height:100vh;

    background:linear-gradient(180deg,#0d2f8d,#1f4fd8);

    display:flex;
    flex-direction:column;

    overflow:hidden;

    transition:.35s;
    z-index:1000;
}

.sidebar::before{
    content:"";
    position:absolute;
    inset:0;

    background:url("sidebar.png") center bottom no-repeat;
    background-size:100% auto;

    opacity:.15;
}

.sidebar>*{
    position:relative;
    z-index:2;
}

/*==============================
LOGO
==============================*/

.logo{
    display:flex;
    justify-content:center;
    align-items:center;

    gap:12px;

    padding:34px 20px;

    color:#fff;

    border-bottom:1px solid rgba(255,255,255,.15);
}

.logo i{
    font-size:28px;
}

.logo h2{
    font-size:22px;
}

/*==============================
MENU
==============================*/

.sidebar ul{
    list-style:none;
    padding:22px 18px;
}

.sidebar li{
    margin-bottom:12px;
}

.sidebar a{
    display:flex;
    align-items:center;
    gap:16px;

    padding:15px 18px;

    color:#fff;
    text-decoration:none;

    border-radius:14px;

    transition:.3s;
}

.sidebar a i{
    width:22px;
    text-align:center;
}

.sidebar a:hover{
    background:rgba(255,255,255,.12);
    transform:translateX(5px);
}

.sidebar a.active{
    background:#2563eb;
    box-shadow:0 8px 20px rgba(0,0,0,.25);
}

/*==============================
MAIN CONTENT
==============================*/

.main-content{
    margin-left:250px;
    min-height:100vh;

    padding:35px;

    transition:.35s;
}

/*==============================
OVERLAY
==============================*/

.overlay{
    position:fixed;
    inset:0;

    background:rgba(0,0,0,.45);

    opacity:0;
    visibility:hidden;

    transition:.3s;

    z-index:999;
}

.overlay.show{
    opacity:1;
    visibility:visible;
}

/*==============================
MENU BUTTON
==============================*/

.menu-toggle{
    display:none;

    position:fixed;
    top:15px;
    left:15px;

    width:46px;
    height:46px;

    border:none;
    border-radius:10px;

    background:#1e3a8a;
    color:#fff;

    cursor:pointer;

    font-size:20px;

    z-index:1001;
}

/*=====================================================
BACK BUTTON
=====================================================*/

.back-btn{
    display:inline-flex;
    align-items:center;
    gap:10px;

    margin-bottom:20px;

    color:#1e3a8a;
    text-decoration:none;
    font-weight:600;

    transition:.25s;
}

.back-btn:hover{
    color:#2563eb;
    transform:translateX(-3px);
}

/*=====================================================
HEADER
=====================================================*/

h1{
    font-size:38px;
    color:#1e3a8a;
    font-weight:700;
    margin-bottom:8px;
}

.subtitle{
    color:#64748b;
    font-size:16px;
    margin-bottom:32px;
    line-height:1.6;
}

/*=====================================================
PROFILE CARD
=====================================================*/

.profile-box{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:28px;

    background:#fff;
    border-radius:20px;
    padding:30px;

    box-shadow:0 10px 28px rgba(0,0,0,.08);

    margin-bottom:30px;
}

.profile-left{
    display:flex;
    align-items:center;
    gap:24px;
    flex:1;
}

.avatar{
    width:110px;
    height:110px;

    border-radius:50%;

    display:flex;
    justify-content:center;
    align-items:center;

    background:#dbeafe;
    color:#2563eb;

    font-size:48px;

    flex-shrink:0;
}

.profile-left h2{
    color:#1e3a8a;
    font-size:28px;
    margin-bottom:12px;
}

.profile-left p{
    color:#475569;
    margin:8px 0;
    line-height:1.5;
}

.profile-left i{
    width:20px;
    color:#2563eb;
}

.profile-right{
    width:300px;

    background:#eff6ff;

    padding:22px;

    border-radius:18px;

    flex-shrink:0;
}

.profile-right p{
    color:#1e3a8a;
    font-weight:600;
    margin-bottom:8px;
}

.profile-right span{
    color:#64748b;
    font-size:14px;
}

.profile-right hr{
    border:none;
    border-top:1px solid #bfdbfe;
    margin:16px 0;
}

.sesi{
    color:#64748b;
    font-size:13px;
}

/*=====================================================
STATISTIK
=====================================================*/

.statistik{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:24px;
    margin-bottom:35px;
}

.stat-card{
    background:#fff;

    border-radius:20px;

    padding:24px;

    display:flex;
    align-items:center;
    gap:18px;

    box-shadow:0 10px 28px rgba(0,0,0,.08);

    transition:.25s;
}

.stat-card:hover{
    transform:translateY(-5px);
}

.stat-icon{
    width:62px;
    height:62px;

    border-radius:18px;

    display:flex;
    justify-content:center;
    align-items:center;

    font-size:26px;

    flex-shrink:0;
}

.stat-content{
    flex:1;
}

.stat-content p{
    font-size:14px;
    color:#64748b;
    margin-bottom:6px;
    line-height:1.5;
}

.stat-content h2{
    font-size:30px;
    color:#1e3a8a;
    margin-bottom:4px;
}

.stat-content span{
    font-size:13px;
    color:#94a3b8;
}

/*=====================================================
STATUS WARNA
=====================================================*/

.status-text{
    font-weight:700;
}

.status-text.meningkat{
    color:#16a34a;
}

.status-text.stabil{
    color:#f59e0b;
}

.status-text.menurun{
    color:#dc2626;
}

/*=====================================================
ANALYSIS SECTION
=====================================================*/

.analysis-section{
    display:flex;
    flex-direction:column;
    gap:35px;
    margin-bottom:35px;
}

/*=====================================================
CHART
=====================================================*/

.chart-box{
    background:#fff;
    border-radius:20px;
    padding:30px;
    box-shadow:0 10px 28px rgba(0,0,0,.08);
}

.chart-box h2{
    color:#1e3a8a;
    font-size:22px;
    margin-bottom:8px;
}

.chart-box p{
    color:#64748b;
    margin-bottom:20px;
    line-height:1.6;
}

.chart-wrapper{
    width:100%;
    height:430px;
}

.chart-wrapper canvas{
    width:100%!important;
    height:100%!important;
}

/*=====================================================
MODUL
=====================================================*/

.modul-box{
    background:#fff;
    border-radius:20px;
    padding:30px;
    box-shadow:0 10px 28px rgba(0,0,0,.08);
}

.modul-box h2{
    color:#1e3a8a;
    margin-bottom:20px;
    font-size:22px;
}

.table-responsive{
    width:100%;
    overflow-x:auto;
}

.modul-box table{
    width:100%;
    border-collapse:collapse;
}

.modul-box th{
    background:#1e3a8a;
    color:#fff;
    padding:15px;
    text-align:center;
    font-size:14px;
}

.modul-box td{
    padding:15px;
    text-align:center;
    border-bottom:1px solid #e5e7eb;
    font-size:14px;
}

.modul-box tbody tr:nth-child(even){
    background:#f8fbff;
}

.modul-box tbody tr:hover{
    background:#fff !important;
}

.modul-box tbody tr:nth-child(even):hover{
    background:#f8fbff !important;
}

.nilai-modul{
    color:#2563eb;
    font-size:18px;
    font-weight:700;
}

.total-row{
    background:#dbeafe!important;
    font-weight:700;
    color:#1e3a8a;
}

/*=====================================================
KESIMPULAN
=====================================================*/

.kesimpulan-box{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:25px;

    background:#fff;
    border-radius:20px;
    padding:30px;

    box-shadow:0 10px 28px rgba(0,0,0,.08);
}

.kesimpulan-icon{
    width:70px;
    height:70px;

    border-radius:18px;

    display:flex;
    justify-content:center;
    align-items:center;

    background:#fef3c7;
    color:#f59e0b;

    font-size:30px;

    flex-shrink:0;
}

.kesimpulan-text{
    flex:1;
}

.kesimpulan-text h2{
    color:#1e3a8a;
    margin-bottom:10px;
}

.kesimpulan-text p{
    color:#475569;
    line-height:1.8;
}

.status-box{
    min-width:240px;

    background:#fff7df;

    border-radius:18px;

    padding:22px;

    text-align:center;
}

.status-box h2{
    color:#f59e0b;
    font-size:32px;
    margin:10px 0;
}

/*=====================================================
RIWAYAT MONITORING
=====================================================*/

.riwayat-box{
    background:#fff;
    border-radius:20px;
    padding:30px;
    margin-bottom:35px;
    box-shadow:0 10px 28px rgba(0,0,0,.08);
}

.riwayat-box h2{
    color:#1e3a8a;
    font-size:22px;
    margin-bottom:20px;
}

.table-responsive{
    width:100%;
    overflow-x:auto;
}

.riwayat-box table{
    width:100%;
    border-collapse:collapse;
    min-width:750px;
}

.riwayat-box th{
    background:#1e3a8a;
    color:#fff;
    padding:15px;
    text-align:center;
    font-size:14px;
    font-weight:600;
}

.riwayat-box td{
    padding:15px;
    text-align:center;
    border-bottom:1px solid #e5e7eb;
    font-size:14px;
}

.riwayat-box tbody tr:nth-child(even){
    background:#f8fbff;
}

.riwayat-box td:first-child{
    font-weight:600;
    color:#1e3a8a;
}

.riwayat-box td:last-child{
    font-weight:600;
}

/*=====================================================
BUTTON CETAK
=====================================================*/

.btn-cetak{
    display:inline-flex;
    align-items:center;
    gap:10px;

    padding:14px 22px;

    border-radius:12px;

    background:#1e3a8a;
    color:#fff;

    text-decoration:none;
    font-weight:600;

    transition:.3s;
}

.btn-cetak:hover{
    background:#2563eb;
    transform:translateY(-3px);
}

/*=====================================================
PAGINATION
=====================================================*/

.pagination-wrapper{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:15px;
    margin-top:35px;
    flex-wrap:wrap;
}

.pagination-number{
    display:flex;
    gap:10px;
}

.pagination-number a,
.pagination-btn{

    min-width:44px;
    height:44px;

    display:flex;
    justify-content:center;
    align-items:center;

    padding:0 16px;

    border-radius:12px;

    border:1px solid #dbe3f1;

    background:#fff;

    color:#1e3a8a;

    text-decoration:none;
    font-weight:600;

    transition:.25s;
}

.pagination-number a:hover,
.pagination-btn:hover{
    background:#eef4ff;
}

.pagination-number a.active{
    background:#1e3a8a;
    color:#fff;
}

.pagination-btn.disabled{
    opacity:.45;
    pointer-events:none;
}

/*=====================================================
RESPONSIVE - TABLET
=====================================================*/

@media (max-width:991px){

    .sidebar{
        left:-260px;
    }

    .sidebar.show{
        left:0;
    }

    .menu-toggle{
        display:flex;
        justify-content:center;
        align-items:center;
    }

    .main-content{
        margin-left:0;
        padding:80px 25px 25px;
    }

    .profile-box{
        flex-direction:column;
        align-items:flex-start;
    }

    .profile-right{
        width:100%;
    }

    .statistik{
        grid-template-columns:repeat(2,1fr);
    }

    .kesimpulan-box{
        flex-direction:column;
        align-items:flex-start;
    }

    .status-box{
        width:100%;
    }

    .chart-wrapper{
        height:360px;
    }

    .modul-box table,
    .riwayat-box table{
        min-width:700px;
    }

}

/*=====================================================
RESPONSIVE - MOBILE
=====================================================*/

@media (max-width:768px){

    .main-content{
        padding:75px 18px 20px;
    }

    h1{
        font-size:30px;
    }

    .subtitle{
        font-size:14px;
    }

    .profile-box{
        padding:22px;
    }

    .profile-left{
        flex-direction:column;
        align-items:flex-start;
    }

    .avatar{
        width:90px;
        height:90px;
        font-size:40px;
    }

    .profile-left h2{
        font-size:24px;
    }

    .statistik{
        grid-template-columns:1fr;
    }

    .chart-box,
    .modul-box,
    .riwayat-box,
    .kesimpulan-box{
        padding:22px;
    }

    .chart-wrapper{
        height:300px;
    }

    .pagination-wrapper{
        flex-direction:column;
        gap:15px;
    }

    .pagination-number{
        flex-wrap:wrap;
        justify-content:center;
    }

    .pagination-btn{
        width:100%;
    }

    .btn-cetak{
        width:100%;
        justify-content:center;
    }

}

/*=====================================================
RESPONSIVE - SMALL MOBILE
=====================================================*/

@media (max-width:480px){

    .main-content{
        padding:70px 12px 18px;
    }

    h1{
        font-size:24px;
    }

    .subtitle{
        font-size:13px;
    }

    .profile-box{
        padding:18px;
    }

    .avatar{
        width:80px;
        height:80px;
        font-size:34px;
    }

    .profile-left h2{
        font-size:20px;
    }

    .profile-left p{
        font-size:14px;
    }

    .profile-right{
        padding:18px;
    }

    .stat-card{
        padding:18px;
    }

    .stat-card h2{
        font-size:24px;
    }

    .stat-icon{
        width:52px;
        height:52px;
        font-size:22px;
    }

    .chart-wrapper{
        height:250px;
    }

    .kesimpulan-icon{
        width:60px;
        height:60px;
        font-size:24px;
    }

    .status-box h2{
        font-size:24px;
    }

    .btn-cetak{
        padding:12px;
        font-size:14px;
    }

}

/*=====================================================
FILTER PERIODE RATA-RATA MODUL
=====================================================*/

.filter-periode-modul{
    margin:15px 0 20px !important;
    padding:18px 20px;
    background:#f8fbff;
    border:1px solid #dbeafe;
    border-radius:14px;
}

.filter-periode-modul > div{
    display:flex !important;
    flex-wrap:wrap;
    align-items:flex-end;
    gap:14px !important;
}

.filter-periode-modul > div > div{
    min-width:180px;
}

.filter-periode-modul label{
    display:block !important;
    margin-bottom:7px !important;
    color:#334155;
    font-size:13px;
    font-weight:600;
}

.filter-periode-modul select,
.filter-periode-modul input[type="date"]{
    height:42px;
    padding:9px 12px !important;
    border:1px solid #cbd5e1 !important;
    border-radius:9px !important;
    background:#fff;
    color:#1f2937;
    font-family:Arial,sans-serif;
    font-size:14px;
    outline:none;
    transition:.2s;
}

.filter-periode-modul select{
    min-width:230px !important;
    cursor:pointer;
}

.filter-periode-modul input[type="date"]{
    min-width:165px;
}

.filter-periode-modul select:focus,
.filter-periode-modul input[type="date"]:focus{
    border-color:#2563eb !important;
    box-shadow:0 0 0 3px rgba(37,99,235,.12);
}

.filter-periode-modul button{
    height:42px;
    padding:9px 17px !important;
    border:0 !important;
    border-radius:9px !important;
    background:#2563eb !important;
    color:#fff !important;
    font-family:Arial,sans-serif;
    font-size:14px;
    font-weight:600;
    cursor:pointer;
    transition:.25s;
}

.filter-periode-modul button:hover{
    background:#1d4ed8 !important;
    transform:translateY(-1px);
    box-shadow:0 5px 12px rgba(37,99,235,.2);
}

.filter-periode-modul a{
    height:42px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    padding:9px 17px !important;
    border-radius:9px !important;
    background:#e2e8f0 !important;
    color:#334155 !important;
    font-size:14px;
    font-weight:600;
    text-decoration:none;
    transition:.25s;
}

.filter-periode-modul a:hover{
    background:#cbd5e1 !important;
    transform:translateY(-1px);
}

.modul-period-info{
    margin:0 0 15px;
    color:#64748b;
    font-size:14px;
    line-height:1.6;
}

.modul-period-info strong{
    color:#1e3a8a;
    font-weight:700;
}

/*=====================================================
RESPONSIVE FILTER
=====================================================*/

@media (max-width:991px){

    .filter-periode-modul > div{
        gap:12px !important;
    }

    .filter-periode-modul > div > div{
        flex:1 1 180px;
    }

    .filter-periode-modul select,
    .filter-periode-modul input[type="date"]{
        width:100%;
        min-width:0 !important;
    }

    .filter-periode-modul button,
    .filter-periode-modul a{
        flex:0 0 auto;
    }
}

@media (max-width:768px){

    .filter-periode-modul{
        padding:16px;
    }

    .filter-periode-modul > div{
        flex-direction:column;
        align-items:stretch;
        gap:12px !important;
    }

    .filter-periode-modul > div > div{
        width:100%;
        min-width:0;
    }

    .filter-periode-modul select,
    .filter-periode-modul input[type="date"],
    .filter-periode-modul button,
    .filter-periode-modul a{
        width:100%;
    }

    .filter-periode-modul button,
    .filter-periode-modul a{
        justify-content:center;
    }

    .modul-period-info{
        font-size:13px;
    }
}

@media (max-width:480px){

    .filter-periode-modul{
        padding:14px;
        border-radius:12px;
    }

    .filter-periode-modul label{
        font-size:12px;
    }

    .filter-periode-modul select,
    .filter-periode-modul input[type="date"],
    .filter-periode-modul button,
    .filter-periode-modul a{
        height:40px;
        font-size:13px;
    }
}