:root{
  --navy-950:#0B1330; --navy-900:#111B45; --navy-800:#182463;
  --ink-900:#0F1428; --ink-700:#3A4160; --ink-500:#6B7290; --ink-300:#A6ABC4;
  --line:#E4E6F1; --surface:#FFFFFF; --bg:#F5F6FB;
  --teal-600:#0C9C8D; --teal-500:#12B5A4; --teal-100:#E1F7F3;
  --amber-500:#F0A733; --amber-100:#FDF0DA;
  --coral-500:#EF5C6E; --coral-100:#FDE6E9;
  --violet-500:#7C6AE8; --violet-100:#ECE8FD;
  --radius-lg:16px; --radius-md:10px; --radius-sm:6px;
  --shadow-card:0 1px 2px rgba(15,20,40,.04), 0 8px 24px -12px rgba(15,20,40,.10);
}
*{box-sizing:border-box;}
body{margin:0; font-family:'Inter',sans-serif; background:var(--bg); color:var(--ink-900); -webkit-font-smoothing:antialiased;}
h1,h2,h3,.display{font-family:'Sora',sans-serif;}
.mono{font-family:'JetBrains Mono',monospace;}
a{color:inherit;}

.app{display:grid; grid-template-columns:264px 1fr; min-height:100vh;}
.sidebar{background:var(--navy-950); color:#C9CCE2; padding:22px 14px 24px; display:flex; flex-direction:column;}
.brand{display:flex; align-items:center; gap:10px; padding:4px 8px 22px; border-bottom:1px solid rgba(255,255,255,.08); margin-bottom:10px; text-decoration:none;}
.brand .mark{width:34px; height:34px; border-radius:9px; background:linear-gradient(135deg,var(--teal-500),var(--violet-500)); display:flex; align-items:center; justify-content:center; font-family:'Sora',sans-serif; font-weight:800; color:#08131B; font-size:15px; flex-shrink:0;}
.brand .name{font-family:'Sora',sans-serif; font-weight:700; font-size:15.5px; color:#fff; line-height:1.15;}
.brand .sub{font-size:10.5px; color:var(--ink-300); letter-spacing:.4px; text-transform:uppercase; margin-top:2px;}
.nav-scroll{overflow-y:auto; flex:1;}
.nav-group-label{font-size:10.5px; font-weight:700; letter-spacing:.9px; text-transform:uppercase; color:#5B6288; padding:16px 12px 6px;}
.nav-item{display:flex; align-items:center; gap:11px; padding:9px 12px; border-radius:8px; font-size:13.3px; font-weight:500; color:#C9CCE2; text-decoration:none; cursor:pointer;}
.nav-item:hover{background:rgba(255,255,255,.06); color:#fff;}
.nav-item.active{background:rgba(18,181,164,.14); color:#5FE3D2; font-weight:600;}
.nav-item .badge{margin-left:auto; font-size:10px; font-weight:700; background:var(--coral-500); color:#fff; padding:1px 6px; border-radius:20px;}

.main{display:flex; flex-direction:column; min-width:0;}
.topbar{height:66px; background:var(--surface); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; padding:0 24px; gap:16px; position:sticky; top:0; z-index:10;}
.page-title{font-size:17px; font-weight:700;}
.page-crumb{font-size:12px; color:var(--ink-500); margin-top:1px;}
.topbar-right{display:flex; align-items:center; gap:14px;}
.icon-btn{width:36px; height:36px; border-radius:9px; border:1px solid var(--line); background:var(--surface); display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--ink-700);}
.user-chip{display:flex; align-items:center; gap:9px; padding-left:12px; border-left:1px solid var(--line); text-decoration:none;}
.user-chip .av{width:34px; height:34px; border-radius:9px; background:var(--navy-800); color:#fff; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center;}
.user-chip .who{font-size:12.5px; font-weight:600; line-height:1.3; color:var(--ink-900);}
.user-chip .role{font-size:11px; color:var(--ink-500); text-transform:capitalize;}
.content{padding:24px; flex:1;}

.kpi-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:22px;}
.kpi-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg); padding:18px; box-shadow:var(--shadow-card);}
.kpi-icon{width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center;}
.kpi-value{font-family:'Sora',sans-serif; font-size:26px; font-weight:700; margin-top:14px;}
.kpi-label{font-size:12.5px; color:var(--ink-500); margin-top:3px;}

.panel{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow-card); overflow:hidden; margin-bottom:16px;}
.panel-head{display:flex; align-items:center; justify-content:space-between; padding:17px 20px; border-bottom:1px solid var(--line); flex-wrap:wrap; gap:10px;}
.panel-head h3{font-size:14.5px; font-weight:700; margin:0;}
.panel-body{padding:18px 20px;}

table.dt{width:100%; border-collapse:collapse;}
table.dt th{text-align:left; font-size:10.8px; text-transform:uppercase; letter-spacing:.5px; color:var(--ink-500); font-weight:700; padding:0 16px 10px; border-bottom:1px solid var(--line);}
table.dt td{padding:12px 16px; font-size:12.8px; border-bottom:1px solid var(--line); vertical-align:middle;}
table.dt tr:last-child td{border-bottom:none;}
.pill{font-size:10.8px; font-weight:700; padding:3px 9px; border-radius:20px; display:inline-block; text-transform:capitalize;}
.pill.active,.pill.paid{background:var(--teal-100); color:var(--teal-600);}
.pill.inactive,.pill.pending{background:var(--amber-100); color:#B4790E;}
.pill.overdue{background:var(--coral-100); color:var(--coral-500);}

.btn{display:inline-flex; align-items:center; gap:7px; font-family:'Inter',sans-serif; font-size:12.8px; font-weight:600; padding:9px 15px; border-radius:9px; border:1px solid transparent; cursor:pointer; text-decoration:none;}
.btn-primary{background:var(--navy-950); color:#fff;}
.btn-primary:hover{background:var(--navy-800);}
.btn-teal{background:var(--teal-500); color:#04211D;}
.btn-teal:hover{background:var(--teal-600); color:#fff;}
.btn-outline{background:var(--surface); border-color:var(--line); color:var(--ink-700);}
.btn-outline:hover{border-color:var(--ink-300);}
.btn-danger{background:var(--coral-100); color:var(--coral-500);}
.btn-sm{padding:6px 11px; font-size:11.8px; border-radius:7px;}

.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.form-group{margin-bottom:16px;}
.form-group.full{grid-column:1 / -1;}
.form-group label{display:block; font-size:12.3px; font-weight:600; color:var(--ink-700); margin-bottom:6px;}
.form-group .req{color:var(--coral-500);}
.form-control{width:100%; font-family:'Inter',sans-serif; font-size:13px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink-900);}
.form-control:focus{outline:none; border-color:var(--teal-500); box-shadow:0 0 0 3px var(--teal-100);}
textarea.form-control{resize:vertical; min-height:80px;}

.alert{padding:12px 16px; border-radius:10px; font-size:12.8px; margin-bottom:16px; font-weight:500;}
.alert-success{background:var(--teal-100); color:var(--teal-600);}
.alert-error{background:var(--coral-100); color:var(--coral-500);}

.search-box{display:flex; align-items:center; gap:8px; background:var(--bg); border:1px solid var(--line); border-radius:9px; padding:8px 12px;}
.search-box input{border:none; background:transparent; outline:none; font-size:12.5px; width:200px; color:var(--ink-900);}

.pagination{display:flex; gap:6px; padding:14px 20px; border-top:1px solid var(--line); align-items:center; justify-content:flex-end;}
.pagination a, .pagination span{padding:6px 11px; border-radius:7px; font-size:12px; font-weight:600; text-decoration:none; color:var(--ink-700); border:1px solid var(--line);}
.pagination a.active{background:var(--navy-950); color:#fff; border-color:var(--navy-950);}

.empty-state{text-align:center; padding:50px 20px; color:var(--ink-500);}
.empty-state .icon{width:52px; height:52px; border-radius:14px; background:var(--bg); display:flex; align-items:center; justify-content:center; margin:0 auto 14px; color:var(--ink-300);}

.module-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg); padding:18px; box-shadow:var(--shadow-card); display:flex; flex-direction:column; gap:10px;}
.module-card .mtop{display:flex; align-items:center; justify-content:space-between;}
.module-card .micon{width:38px; height:38px; border-radius:10px; background:var(--violet-100); color:var(--violet-500); display:flex; align-items:center; justify-content:center;}
.module-card h4{font-size:14px; margin:0;}
.module-card p{font-size:12px; color:var(--ink-500); line-height:1.5; margin:0;}
.modules-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:16px;}

@media (max-width:1000px){
  .app{grid-template-columns:1fr;}
  .sidebar{display:none;}
  .kpi-grid{grid-template-columns:repeat(2,1fr);}
  .form-grid{grid-template-columns:1fr;}
}
