/* ============================================================
   FILE: assets/css/style.css
   ============================================================ */
:root {
  --primary: #1a6b3c;
  --primary-dark: #13512d;
  --primary-light: #e8f5ee;
  --accent: #2196a6;
  --sidebar-w: 240px;
  --topbar-h: 56px;
  --white: #fff;
  --gray: #f4f6f8;
  --text: #2d3748;
  --border: #dde1e7;
  --danger: #e53e3e;
  --warning: #d69e2e;
  --info: #2b6cb0;
  --success: #276749;
  --topbar-user: #ffdd57;
  --shadow: 0 2px 8px rgba(0,0,0,.10);
  --radius: 8px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',sans-serif;background:var(--gray);color:var(--text);font-size:14px}
a{text-decoration:none;color:inherit}

/* ---- WRAPPER ---- */
.wrapper{display:flex;min-height:100vh}
.main-content{flex:1;margin-left:var(--sidebar-w);padding-top:var(--topbar-h);display:flex;flex-direction:column;min-height:100vh;transition:.3s;min-width:0;overflow-x:hidden}
.content-area{padding:14px;flex:1;min-width:0}

/* ---- SIDEBAR ---- */
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);max-width:var(--sidebar-w);background:var(--primary-dark);color:#fff;position:fixed;top:0;left:0;height:100vh;overflow:hidden;z-index:100;display:flex;flex-direction:column;transition:.3s}
.sidebar-brand{padding:18px 16px;font-size:15px;font-weight:700;background:var(--primary);display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(255,255,255,.15);overflow:hidden;white-space:nowrap;flex-shrink:0}
.sidebar-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-menu{list-style:none;padding:8px 0;flex:1;overflow-y:auto;overflow-x:hidden}
.sidebar-menu::-webkit-scrollbar{width:4px}
.sidebar-menu::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}
.sidebar-menu::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:4px}
.sidebar-menu::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)}
.sidebar-menu li a{display:flex;align-items:center;gap:10px;padding:11px 20px;color:rgba(255,255,255,.85);font-size:13.5px;transition:.2s;border-left:3px solid transparent;cursor:pointer;white-space:nowrap;overflow:hidden;box-sizing:border-box}
.sidebar-menu li a span.sidebar-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-menu li a .sidebar-badge{background:var(--danger);color:#fff;border-radius:10px;padding:1px 6px;font-size:11px;font-weight:700;flex-shrink:0;line-height:1.6;margin-left:auto}
.sidebar-menu li a:hover,.sidebar-menu li.active>a{background:rgba(255,255,255,.12);color:#fff;border-left-color:#a8d5b5}
.sidebar-menu .submenu{list-style:none;background:rgba(0,0,0,.18);max-height:0;overflow:hidden;transition:max-height .35s ease}
.sidebar-menu .has-sub.open .submenu{max-height:600px}
.sidebar-menu .submenu li a{padding:9px 20px 9px 42px;font-size:13px;border-left:none}
.sidebar-menu .arrow{margin-left:auto;font-size:11px;transition:transform .3s;flex-shrink:0}
.sidebar-menu .has-sub.open .arrow{transform:rotate(180deg)}
.sidebar-footer{padding:14px 20px;border-top:1px solid rgba(255,255,255,.15);flex-shrink:0}
.sidebar-footer a{color:rgba(255,255,255,.7);display:flex;align-items:center;gap:8px;font-size:13px}
.sidebar-footer a:hover{color:#fff}
.sidebar-footer{padding:14px 20px;border-top:1px solid rgba(255,255,255,.15)}
.sidebar-footer a{color:rgba(255,255,255,.7);display:flex;align-items:center;gap:8px;font-size:13px}
.sidebar-footer a:hover{color:#fff}

/* ---- TOPBAR ---- */
.topbar{height:var(--topbar-h);background:var(--primary-dark);color:#fff;box-shadow:var(--shadow);display:flex;align-items:center;padding:0 20px;gap:12px;position:fixed;top:0;left:var(--sidebar-w);right:0;z-index:101;min-width:0;transition:.3s}
.toggle-btn{background:none;border:none;font-size:20px;color:#fff;cursor:pointer;padding:4px 8px;flex-shrink:0}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13px;flex-shrink:0;white-space:nowrap}
.topbar-user{color:var(--topbar-user);font-weight:600;display:flex;align-items:center;gap:6px}
.btn-logout{color:var(--danger);font-size:17px;flex-shrink:0}

/* ---- CARDS ---- */
.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:20px}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;border-bottom:1px solid var(--border);padding-bottom:12px}
.card-title{font-size:15px;font-weight:600;color:var(--primary-dark)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat-card{background:var(--white);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;border-left:4px solid var(--primary)}
.stat-card.blue{border-left-color:var(--accent)}
.stat-card.orange{border-left-color:#e07b39}
.stat-card.red{border-left-color:var(--danger)}
.stat-icon{width:46px;height:46px;border-radius:50%;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--primary)}
.stat-info .label{font-size:12px;color:#718096}
.stat-info .value{font-size:18px;font-weight:700;color:var(--text)}

/* ---- FORM ---- */
.form-group{margin-bottom:14px}
.form-group label{display:block;margin-bottom:5px;font-weight:500;font-size:13px}
.form-control{width:100%;padding:8px 12px;border:1.5px solid #94a3b8;border-radius:6px;font-size:13.5px;transition:.2s;background:#fff}
.form-control:focus,select.form-control:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 2px rgba(26,107,60,.15)}
.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(26,107,60,.12)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-row.three{grid-template-columns:1fr 1fr 1fr}

/* ---- BUTTONS ---- */
.btn{padding:8px 16px;border-radius:6px;border:none;cursor:pointer;font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px;transition:.2s}
.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}
.btn-success{background:#276749;color:#fff}.btn-success:hover{background:#1d5236}
.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c53030}
.btn-warning{background:#d69e2e;color:#fff}.btn-warning:hover{background:#b7791f}
.btn-info{background:var(--accent);color:#fff}.btn-info:hover{background:#1a7f8a}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-outline{background:none;border:1px solid var(--primary);color:var(--primary)}.btn-outline:hover{background:var(--primary);color:#fff}

/* ---- TABLE ---- */
.table-responsive{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{background:var(--primary);color:#fff;padding:10px 12px;text-align:left;white-space:nowrap}
tbody tr:nth-child(even){background:#f9fafb}
tbody tr:hover{background:var(--primary-light)}
td,th{padding:9px 12px;border-bottom:1px solid var(--border)}
td .badge{padding:3px 8px;border-radius:20px;font-size:11px;font-weight:600}
.badge-success{background:#c6f6d5;color:#276749}
.badge-danger{background:#fed7d7;color:#9b2c2c}
.badge-warning{background:#fefcbf;color:#744210}
.badge-info{background:#bee3f8;color:#2a4365}
.badge-secondary{background:#e2e8f0;color:#4a5568}

/* ---- SEARCH BAR ---- */
.search-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.search-bar .form-control{max-width:280px}

/* ---- ALERT ---- */
.alert{padding:11px 16px;border-radius:6px;margin-bottom:14px;font-size:13px}
.alert-success{background:#c6f6d5;color:#276749;border:1px solid #9ae6b4}
.alert-danger{background:#fed7d7;color:#9b2c2c;border:1px solid #fc8181}
.alert-info{background:#bee3f8;color:#2a4365;border:1px solid #90cdf4}

/* ---- MODAL ---- */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;align-items:center;justify-content:center}
.modal-overlay.show{display:flex}
.modal-box{background:#fff;border-radius:var(--radius);padding:24px;width:90%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.2)}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.modal-title{font-size:15px;font-weight:600;color:var(--primary-dark)}
.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:#718096}

/* ---- PAGINATION ---- */
.pagination{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.pagination a,.pagination span{padding:6px 12px;border:1px solid var(--border);border-radius:5px;font-size:13px;color:var(--text)}
.pagination a:hover{background:var(--primary);color:#fff;border-color:var(--primary)}
.pagination .active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ---- LOGIN PAGE ---- */
.login-page{min-height:100vh;background:linear-gradient(135deg,var(--primary-dark) 0%,var(--accent) 100%);display:flex;align-items:center;justify-content:center}
.login-box{background:#fff;border-radius:12px;padding:40px 36px;width:100%;max-width:400px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.login-logo{text-align:center;margin-bottom:24px}
.login-logo .icon{font-size:48px;color:var(--primary)}
.login-logo h2{font-size:18px;font-weight:700;color:var(--primary-dark);margin-top:8px}
.login-logo p{font-size:12px;color:#718096;margin-top:3px}
.login-copyright{text-align:center;font-size:12px;color:#a0aec0;margin-top:18px}

/* ---- RESPONSIVE MOBILE (aman untuk desktop) ---- */
@media(max-width:768px){

  /* Sidebar */
  .sidebar{transform:translateX(-100%);z-index:200;transition:transform .3s}
  .sidebar.open{transform:translateX(0);box-shadow:4px 0 20px rgba(0,0,0,.25)}
  .main-content{margin-left:0}

  /* Overlay */
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:199}
  .sidebar-overlay.show{display:block}

  /* Topbar */
  .topbar{left:0;padding:0 12px}
  .topbar-right .topbar-user{display:none}

  /* Content area */
  .content-area{padding:14px 10px}

  /* Login */
  .login-box{padding:28px 18px;margin:16px}

  /* Stat grid: tetap 2 kolom di HP */
  .stat-grid{grid-template-columns:1fr 1fr}

  /* Form row */
  .form-row,.form-row.three{grid-template-columns:1fr}

  /* Tabel scroll horizontal */
  .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* Card */
  .card{padding:14px 12px}
  .card-header{flex-wrap:wrap;gap:8px}

  /* Pagination tengah */
  .pagination{justify-content:center}

  /* Search bar */
  .search-bar{flex-wrap:wrap}
  .search-bar .form-control{max-width:100%}

  /* Input font 16px cegah zoom iOS */
  .form-control{font-size:16px}

  /* Tombol aksi lebih besar */

  /* Modal dari bawah */
  .modal-overlay{align-items:flex-end}
  .modal-box{
    width:100%;max-width:100%;
    border-radius:14px 14px 0 0;
    position:fixed;bottom:0;left:0;right:0;
    max-height:90vh;
  }

  /* Grid 2 kolom layout (form+tabel) ? 1 kolom di HP */
  /* Hanya class-based, tidak sentuh inline style */
  .grid-2col,
  .grid-3col { display:block }
  .grid-2col > div,
  .grid-3col > div { margin-bottom:16px }

  /* Sticky form ? relative di HP */
  .sticky-form{position:relative;top:auto}

  /* Sembunyikan kolom tabel kurang penting di HP */
  .hide-mobile{display:none}

  /* ============================================================
     FONT LEBIH BESAR KHUSUS TAMPILAN HP
     Mayoritas anggota lansia & kurang familiar dengan teknologi,
     jadi semua teks dibesarkan supaya lebih mudah dibaca di HP.
     ============================================================ */
  body{font-size:16px;line-height:1.65}
  .card-title{font-size:17px}
  .form-group label{font-size:15px}
  .btn{font-size:15px;padding:10px 18px}
  .btn-sm{font-size:14px;padding:8px 14px}
  table{font-size:15px}
  .alert{font-size:15px;line-height:1.6}
  td .badge{font-size:13px;padding:4px 10px}
  .stat-info .label{font-size:18px}     /* judul card +50% (dari 12px) */
  .stat-info .value{font-size:27px}     /* nilai non-rupiah +50% (dari 18px) */
  .topbar-right{font-size:14px}

  /* Banyak halaman pakai inline style="font-size:...px" (bukan class),
     jadi dibesarkan juga lewat selector ini supaya konsisten di semua
     halaman tanpa harus edit tiap file PHP satu-satu. */
  [style*="font-size:10px"]{font-size:13px!important}
  [style*="font-size:11px"]{font-size:14px!important}
  [style*="font-size:12px"]{font-size:15px!important}
  [style*="font-size:12.5px"]{font-size:15px!important}
  [style*="font-size:13px"]{font-size:16px!important}
  [style*="font-size:13.5px"]{font-size:16px!important}
  [style*="font-size:14px"]{font-size:17px!important}

  /* ============================================================
     CARD STATISTIK — KHUSUS, override aturan umum di atas:
       - Angka Rupiah (nilai utama yang pakai inline font-size
         14px/15px) -> +100% dari ukuran aslinya
       - Keterangan tambahan kecil di bawah angka (inline 10/11/12px,
         misal "dari plafon Rp ...") -> +20% dari ukuran aslinya
     Selector lebih spesifik dari aturan umum di atas, jadi otomatis
     menang khusus di dalam .stat-info tanpa mengubah teks 14px/15px
     lain di luar card statistik.
     ============================================================ */
  .stat-info .value[style*="font-size:14px"]{font-size:28px!important} /* 14px x2 */
  .stat-info .value[style*="font-size:15px"]{font-size:30px!important} /* 15px x2 */
  .stat-info [style*="font-size:10px"]{font-size:12px!important}       /* 10px x1.2 */
  .stat-info [style*="font-size:11px"]{font-size:13px!important}       /* 11px x1.2 */
  .stat-info [style*="font-size:12px"]{font-size:14px!important}       /* 12px x1.2 */

  /* ============================================================
     FORM LOGIN — KHUSUS, +30% dari ukuran desktop asli
     ============================================================ */
  .login-box .form-group label{font-size:17px}     /* 13px +30% */
  .login-box .form-control{font-size:17.5px}        /* 13.5px +30% */
  .login-box .btn{font-size:17px}                   /* 13px +30% */
  .login-logo h2{font-size:23px}                    /* 18px +30% */
  .login-logo p{font-size:15.5px}                   /* 12px +30% */
  .login-logo .icon{font-size:62px}                 /* 48px +30% */
  .login-copyright{font-size:15.5px}                /* 12px +30% */
}

@media(max-width:480px){
  /* Stat grid 1 kolom di layar sangat kecil */
  .stat-grid{grid-template-columns:1fr}
}

/* ---- PRINT ---- */
@media print{
  .sidebar,.topbar,.btn,.pagination{display:none}
  .main-content{margin-left:0;padding-top:0}
  .content-area{padding:0}
}