:root{
  --navy:#111a3f;
  --navy-light:#1b2559;
  --navy-hover:#242e66;
  --blue:#3b6fed;
  --blue-dark:#2c56c9;
  --green:#22c55e;
  --orange:#f59e0b;
  --red:#ef4444;
  --teal:#14b8a6;
  --purple:#8b5cf6;
  --bg:#f2f4f9;
  --card:#ffffff;
  --text:#1e2433;
  --muted:#7c8598;
  --border:#e7eaf1;
  --radius:12px;
  --shadow:0 2px 10px rgba(17,26,63,.06);
}

*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  font-size:14px;
}
a{text-decoration:none;color:inherit;}
ul{list-style:none;margin:0;padding:0;}
button{font-family:inherit;cursor:pointer;}

/* ============ LAYOUT ============ */
.app-wrap{display:flex;min-height:100vh;}

/* ============ SIDEBAR ============ */
.sidebar{
  width:250px;
  min-width:250px;
  background:var(--navy);
  color:#c6cbe0;
  display:flex;
  flex-direction:column;
  position:sticky;
  top:0;
  height:100vh;
  overflow-y:auto;
  transition:transform .25s ease;
  z-index:100;
}
.sidebar::-webkit-scrollbar{width:5px;}
.sidebar::-webkit-scrollbar-thumb{background:var(--navy-hover);border-radius:4px;}

.sidebar-brand{
  display:flex;
  align-items:center;
  gap:10px;
  padding:20px 18px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.sidebar-brand .logo-circle{
  width:40px;height:40px;border-radius:9px;
  background:#58595b;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:700;font-size:13px;flex-shrink:0;
  overflow:hidden;
}
.sidebar-brand .logo-circle img{width:100%;height:100%;object-fit:contain;}
.sidebar-brand .brand-text{display:flex;flex-direction:column;line-height:1.25;}
.sidebar-brand .brand-text span{color:#fff;font-weight:700;font-size:15px;letter-spacing:.2px;}
.sidebar-brand .brand-text small{color:#8890b5;font-size:10.5px;font-weight:500;}

.sidebar-menu{padding:14px 10px 30px;flex:1;}
.sidebar-menu li{margin-bottom:2px;}
.sidebar-menu a{
  display:flex;align-items:center;gap:12px;
  padding:10px 12px;border-radius:9px;
  font-size:13.5px;font-weight:500;color:#aab0cc;
  transition:.15s;
}
.sidebar-menu a i{width:18px;text-align:center;font-size:14px;color:#8890b5;}
.sidebar-menu a:hover{background:var(--navy-hover);color:#fff;}
.sidebar-menu a.active{background:var(--blue);color:#fff;}
.sidebar-menu a.active i{color:#fff;}
.sidebar-menu .menu-label{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;
  color:#5c6390;padding:14px 12px 6px;font-weight:700;
}

/* ============ MAIN ============ */
.main{flex:1;min-width:0;display:flex;flex-direction:column;}

.topbar{
  background:#fff;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 22px;position:sticky;top:0;z-index:50;
}
.topbar-left{display:flex;align-items:center;gap:14px;flex:1;}
.topbar .burger{
  background:none;border:none;font-size:18px;color:var(--muted);display:none;
}
.search-box{
  display:flex;align-items:center;gap:8px;
  background:var(--bg);border:1px solid var(--border);
  border-radius:9px;padding:8px 14px;max-width:340px;width:100%;
}
.search-box input{border:none;background:none;outline:none;flex:1;font-size:13.5px;color:var(--text);}
.search-box i{color:var(--muted);font-size:13px;}

.topbar-right{display:flex;align-items:center;gap:18px;}
.icon-btn{
  position:relative;background:none;border:none;color:var(--muted);font-size:17px;
}
.icon-btn .dot{
  position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:var(--red);
  border-radius:50%;border:2px solid #fff;
}
.user-chip{display:flex;align-items:center;gap:10px;padding-left:14px;border-left:1px solid var(--border);background:none;border-top:none;border-right:none;border-bottom:none;}
.user-chip-wrap{position:relative;}
.user-dropdown{
  display:none;position:absolute;right:0;top:calc(100% + 10px);background:#fff;
  border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(17,26,63,.14);
  min-width:190px;padding:6px;z-index:200;
}
.user-dropdown.show{display:block;}
.user-dropdown a{
  display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:7px;font-size:13px;
  font-weight:600;color:var(--text);
}
.user-dropdown a i{width:16px;color:var(--muted);}
.user-dropdown a:hover{background:var(--bg);}
.user-dropdown a.text-danger{color:var(--red);}
.user-dropdown a.text-danger i{color:var(--red);}
.dropdown-divider{height:1px;background:var(--border);margin:6px 4px;}
.user-avatar{
  width:36px;height:36px;border-radius:50%;background:var(--blue);
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;
}
.user-chip .info{line-height:1.25;}
.user-chip .name{font-weight:600;font-size:13px;}
.user-chip .role{font-size:11.5px;color:var(--muted);}

.content{padding:22px;flex:1;}
.app-footer{
  text-align:center;padding:14px 22px;font-size:11px;color:var(--muted);
  border-top:1px solid var(--border);background:#fff;
}
.page-title{font-size:20px;font-weight:700;margin:0 0 3px;}
.breadcrumb{font-size:12.5px;color:var(--muted);margin-bottom:20px;}
.breadcrumb a{color:var(--blue);}

/* ============ CARDS / STATS ============ */
.stats-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:16px;margin-bottom:20px;
}
.stat-card{
  background:var(--card);border-radius:var(--radius);padding:16px 18px;
  box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;
}
.stat-icon{
  width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-size:19px;color:#fff;flex-shrink:0;
}
.stat-icon.blue{background:var(--blue);}
.stat-icon.green{background:var(--green);}
.stat-icon.orange{background:var(--orange);}
.stat-icon.red{background:var(--red);}
.stat-icon.teal{background:var(--teal);}
.stat-icon.purple{background:var(--purple);}
.stat-label{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;}
.stat-value{font-size:22px;font-weight:800;margin:2px 0 1px;}
.stat-sub{font-size:11.5px;color:var(--muted);}

/* ============ GENERIC CARD ============ */
.card{
  background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  margin-bottom:18px;overflow:hidden;
}
.card-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px;border-bottom:1px solid var(--border);
}
.card-header h3{margin:0;font-size:14.5px;font-weight:700;}
.card-body{padding:18px;}

.grid-2{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;}
@media(max-width:1100px){.grid-2,.grid-3{grid-template-columns:1fr;}}

/* ============ TABLE ============ */
.table-wrap{overflow-x:auto;}
table.data-table{width:100%;border-collapse:collapse;font-size:13px;}
table.data-table th{
  background:#f7f8fc;color:var(--muted);font-weight:700;text-align:left;
  padding:11px 12px;font-size:11.5px;text-transform:uppercase;letter-spacing:.02em;
  white-space:nowrap;border-bottom:1px solid var(--border);
}
table.data-table td{padding:11px 12px;border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap;}
table.data-table tbody tr:hover{background:#f8f9fd;}

.badge{
  display:inline-block;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:700;
}
.badge-green{background:#e5f9ee;color:#16a34a;}
.badge-orange{background:#fef3e2;color:#d97706;}
.badge-red{background:#fdeaea;color:#dc2626;}
.badge-blue{background:#e8effe;color:#3b6fed;}
.badge-gray{background:#eef0f5;color:#7c8598;}

.action-icons{display:flex;gap:6px;}
.action-icons a, .action-icons button{
  width:28px;height:28px;border-radius:7px;border:none;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;
}
.icon-view{background:var(--teal);}
.icon-edit{background:var(--orange);}
.icon-delete{background:var(--red);}

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:8px;
  font-size:13px;font-weight:600;border:none;transition:.15s;
}
.btn-primary{background:var(--blue);color:#fff;}
.btn-primary:hover{background:var(--blue-dark);}
.btn-outline{background:#fff;border:1px solid var(--border);color:var(--text);}
.btn-outline:hover{background:var(--bg);}
.btn-danger{background:var(--red);color:#fff;}
.btn-green{background:var(--green);color:#fff;}
.btn-sm{padding:6px 12px;font-size:12px;}
.btn-block{width:100%;justify-content:center;}

/* ============ FORMS ============ */
.form-group{margin-bottom:15px;}
.form-group label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;color:var(--text);}
.form-group .req{color:var(--red);}
.form-control{
  width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;
  font-size:13.5px;color:var(--text);background:#fff;outline:none;font-family:inherit;
}
.form-control:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,111,237,.12);}
textarea.form-control{resize:vertical;min-height:80px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:700px){.form-row{grid-template-columns:1fr;}}

/* ============ TABS ============ */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);padding:0 4px;overflow-x:auto;}
.tabs button{
  background:none;border:none;padding:12px 14px;font-size:13px;font-weight:600;color:var(--muted);
  border-bottom:2px solid transparent;white-space:nowrap;
}
.tabs button.active{color:var(--blue);border-bottom-color:var(--blue);}

/* ============ MISC UTIL ============ */
.flex{display:flex;}
.items-center{align-items:center;}
.justify-between{justify-content:space-between;}
.gap-8{gap:8px;}
.gap-12{gap:12px;}
.mb-0{margin-bottom:0;}
.text-muted{color:var(--muted);}
.text-sm{font-size:12px;}
.mt-16{margin-top:16px;}

.filters-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px;}
.filters-bar select, .filters-bar input{
  padding:9px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;background:#fff;
}
.filters-bar input{flex:1;min-width:180px;}

.pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;font-size:12.5px;color:var(--muted);}
.pagination .pages{display:flex;gap:4px;}
.pagination .pages a, .pagination .pages span{
  width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;
  border:1px solid var(--border);color:var(--text);font-weight:600;
}
.pagination .pages a.active{background:var(--blue);color:#fff;border-color:var(--blue);}

.list-simple{display:flex;flex-direction:column;}
.list-simple .row{
  display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--border);
}
.list-simple .row:last-child{border-bottom:none;}
.list-simple .row .title{font-weight:600;font-size:13px;}
.list-simple .row .sub{font-size:11.5px;color:var(--muted);}

.activity-item{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--border);}
.activity-item:last-child{border-bottom:none;}
.activity-item .dot-icon{
  width:32px;height:32px;border-radius:9px;background:var(--bg);color:var(--blue);
  display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;
}
.activity-item .text{font-size:12.8px;}
.activity-item .time{font-size:11px;color:var(--muted);}

.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--navy),#1b2666);
}
.login-card{
  background:#fff;border-radius:16px;padding:40px 36px;width:100%;max-width:380px;box-shadow:0 20px 50px rgba(0,0,0,.25);
}
.login-card .logo-circle{width:80px;height:80px;margin:0 auto 14px;background:#58595b;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:19px;overflow:hidden;}
.login-card .logo-circle img{width:100%;height:100%;object-fit:contain;}

.qr-box{text-align:center;padding:18px;border:1px dashed var(--border);border-radius:12px;}
.photo-capture-box{background:var(--bg);border:1px dashed var(--border);border-radius:10px;padding:12px;}

.detail-photo{width:100%;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;height:180px;color:var(--muted);font-size:40px;overflow:hidden;}
.detail-photo img{width:100%;height:100%;object-fit:cover;}

.info-list .row{display:flex;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px;}
.info-list .row span:first-child{width:140px;color:var(--muted);flex-shrink:0;}
.info-list .row span:last-child{font-weight:600;}

.sidebar-overlay{display:none;}

@media(max-width:960px){
  .sidebar{position:fixed;left:0;transform:translateX(-100%);box-shadow:0 0 30px rgba(0,0,0,.3);}
  .sidebar.open{transform:translateX(0);}
  .topbar .burger{display:block;}
  .search-box{max-width:200px;}
  .user-chip .info{display:none;}
  .sidebar-overlay{
    display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:99;
  }
  .sidebar-overlay.show{display:block;}
  .grid-3{grid-template-columns:1fr;}
}

.alert{padding:12px 16px;border-radius:9px;font-size:13px;margin-bottom:16px;font-weight:600;}
.alert-success{background:#e5f9ee;color:#16a34a;}
.alert-error{background:#fdeaea;color:#dc2626;}

.empty-state{text-align:center;padding:40px 20px;color:var(--muted);}
.empty-state i{font-size:34px;margin-bottom:10px;display:block;color:#c9cee0;}
