:root{
  --brand:#0d3b66; /* corporate blue */
  --brand2:#1f6feb;
  --bg:#f6f7fb;
  --card:#ffffff;
  --muted:#6b7280;
  --sidebar:#0b1220;
  --sidebar2:#0f172a;
  --border:rgba(15,23,42,.08);
}
html,body{height:100%;}
body{background:var(--bg);}
.app-shell{min-height:100vh;}

.sidebar{
  width:280px;
  background:linear-gradient(180deg,var(--sidebar) 0%, var(--sidebar2) 100%);
  color:#fff;
}
.sidebar .brand{
  display:flex; align-items:center; gap:12px;
  padding:16px 16px; border-bottom:1px solid rgba(255,255,255,.08);
}

/* BIGGER SIDEBAR LOGO */
.brand-logo{
  width:62px;height:62px;border-radius:16px;background:rgba(255,255,255,.12);
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.brand-logo img{width:100%;height:100%;object-fit:contain;background:#fff;}

.brand-title{font-weight:800;line-height:1.05;}
.brand-sub{font-size:.85rem;opacity:.85;}

.sidebar .nav-link{color:rgba(255,255,255,.82);border-radius:12px;padding:10px 12px;}
.sidebar .nav-link:hover{background:rgba(255,255,255,.08);color:#fff;}
.sidebar .nav-link.active{background:rgba(255,255,255,.12);color:#fff;font-weight:600;}

.topbar{
  background:rgba(255,255,255,.7); backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--border);
}

.card{
  border:0; border-radius:16px; box-shadow:0 6px 24px rgba(15,23,42,.06);
}
.kpi-card{border-radius:16px;}
.kpi-label{color:var(--muted);font-size:.82rem;}
.kpi-value{font-size:1.55rem;font-weight:800;letter-spacing:-.02em;}
.kpi-icon{
  width:42px;height:42px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(13,59,102,.10); color:var(--brand);
}

/* KPI colours (professional but colourful) */
.kpi-card{position:relative; overflow:hidden;}
.kpi-card::before{
  content:''; position:absolute; inset:0 auto 0 0; width:6px;
  background:linear-gradient(180deg, rgba(37,99,235,1), rgba(14,165,233,1));
}
.kpi-card .kpi-icon{background:rgba(2,6,23,.04); color:rgba(2,6,23,.8);}

.kpi-total::before{background:linear-gradient(180deg,#2563eb,#0ea5e9);}      /* blue */
.kpi-incomplete::before{background:linear-gradient(180deg,#f97316,#fb7185);} /* orange/pink */
.kpi-submitted::before{background:linear-gradient(180deg,#14b8a6,#22c55e);}  /* teal/green */
.kpi-review::before{background:linear-gradient(180deg,#a855f7,#8b5cf6);}     /* purple */
.kpi-approved::before{background:linear-gradient(180deg,#16a34a,#22c55e);}   /* green */
.kpi-declined::before{background:linear-gradient(180deg,#f43f5e,#ef4444);}   /* red */

.kpi-total .kpi-icon{background:rgba(37,99,235,.12); color:#2563eb;}
.kpi-incomplete .kpi-icon{background:rgba(249,115,22,.12); color:#f97316;}
.kpi-submitted .kpi-icon{background:rgba(20,184,166,.12); color:#14b8a6;}
.kpi-review .kpi-icon{background:rgba(168,85,247,.12); color:#a855f7;}
.kpi-approved .kpi-icon{background:rgba(34,197,94,.12); color:#16a34a;}
.kpi-declined .kpi-icon{background:rgba(244,63,94,.12); color:#f43f5e;}

/* Charts */
.chart-card{border:1px solid var(--border);}
.chart-wrap{height:320px;}
.chart-wrap.sm{height:220px;}
@media (max-width: 992px){
  .chart-wrap{height:300px;}
  .chart-wrap.sm{height:240px;}
}
.section-title{font-weight:800;letter-spacing:-.02em;}
.chart-box{height:320px;}
.chart-box.tall{height:360px;}
@media (max-width: 992px){
  .chart-box{height:300px;}
}

/* Sidebar collapse (icons-only) */
.sidebar-toggle{
  border-radius:12px;
}
.app-shell.sidebar-collapsed .sidebar{
  width:76px !important;
  padding-left:10px !important;
  padding-right:10px !important;
}
.app-shell.sidebar-collapsed .sidebar .brand{
  justify-content:center;
}
.app-shell.sidebar-collapsed .sidebar .brand-logo{
  width:44px;height:44px;border-radius:14px;
}
.app-shell.sidebar-collapsed .sidebar .brand-text{
  display:none;
}
.app-shell.sidebar-collapsed .sidebar .nav-link{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 0;
}
.app-shell.sidebar-collapsed .sidebar .nav-link .sidebar-icon{
  margin-right:0 !important;
  font-size:1.15rem;
}
.app-shell.sidebar-collapsed .sidebar .sidebar-label{
  display:none;
}
.app-shell.sidebar-collapsed .sidebar .btn{
  display:flex;
  align-items:center;
  justify-content:center;
}
.app-shell.sidebar-collapsed .sidebar .btn .sidebar-icon{
  margin-right:0 !important;
}
.app-shell.sidebar-collapsed .sidebar .small{
  display:none;
}

/* On smaller screens, allow offcanvas-style overlay if you later want it.
   For now this just ensures content doesn't get squashed too hard. */
@media (max-width: 576px){
  .sidebar{ width: 76px; }
}


/* Reports / wide-table containment */
.app-shell{width:100%;max-width:100%;overflow-x:hidden;}
.app-shell > .flex-grow-1{min-width:0;max-width:100%;overflow-x:hidden;}
main{min-width:0;max-width:100%;overflow-x:hidden;}
.row{min-width:0;}
[class^="col-"],[class*=" col-"]{min-width:0;}
.table-responsive{max-width:100%;}
.card{max-width:100%;}
