:root{
  --bg:#f5f7fb;
  --card:#fff;
  --text:#171d2b;
  --muted:#788195;
  --line:#e8ebf2;

  --purple:#6d5df3;
  --purple2:#8c76ff;
  --purpleSoft:#f1eeff;

  --navy:#111728;
  --navy2:#182137;

  --green:#19b36b;
  --shadow:0 18px 50px rgba(31,39,75,.09);
}

*{
  box-sizing:border-box;
}

html,
body{
  margin:0;
  min-height:100%;
  font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:var(--bg);
  color:var(--text);
}

body.menu-open{
  overflow:hidden;
}

a{
  text-decoration:none;
  color:inherit;
}

/* ------------------------------
   DESKTOP LAYOUT
------------------------------ */

.layout{
  display:grid;
  grid-template-columns:250px minmax(0,1fr);
  min-height:100vh;
}

.sidebar{
  position:sticky;
  top:0;
  height:100vh;
  z-index:50;

  display:flex;
  flex-direction:column;

  padding:22px 18px;
  color:#fff;
  background:
    radial-gradient(circle at top left,rgba(109,93,243,.18),transparent 35%),
    linear-gradient(180deg,var(--navy),#0d1322);
}

.sidebarHead{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:2px 2px 20px;
}

.brand{
  font-size:20px;
  font-weight:950;
  letter-spacing:-.04em;
}

.brandSub{
  margin-top:3px;
  color:#8290ad;
  font-size:11px;
  font-weight:700;
}

.closeSidebar{
  display:none;
}

.nav{
  display:grid;
  gap:7px;
}

.nav a{
  display:flex;
  align-items:center;
  gap:11px;

  padding:12px 13px;
  border-radius:13px;

  color:#cbd3e4;
  font-weight:780;
  font-size:14px;

  transition:.16s ease;
}

.nav a:hover{
  color:#fff;
  background:rgba(255,255,255,.07);
  transform:translateX(2px);
}

.nav a.active{
  color:#fff;
  background:
    linear-gradient(135deg,rgba(109,93,243,.34),rgba(140,118,255,.20));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}

.navIcon{
  width:22px;
  text-align:center;
  color:#aeb8cd;
  font-size:16px;
}

.nav a.active .navIcon{
  color:#fff;
}

.navDivider{
  height:1px;
  margin:7px 4px;
  background:rgba(255,255,255,.08);
}

.sidebarBottom{
  margin-top:auto;

  display:flex;
  align-items:center;
  gap:10px;

  padding:13px 12px;

  border:1px solid rgba(255,255,255,.07);
  border-radius:14px;
  background:rgba(255,255,255,.035);
}

.liveDot{
  width:9px;
  height:9px;
  flex:0 0 auto;
  border-radius:50%;
  background:var(--green);
  box-shadow:0 0 0 5px rgba(25,179,107,.10);
}

.sidebarBottom strong{
  display:block;
  color:#fff;
  font-size:11px;
}

.sidebarBottom small{
  display:block;
  margin-top:2px;
  color:#7e8aa5;
  font-size:9px;
}

.main{
  min-width:0;
  display:flex;
  flex-direction:column;
  padding:24px;
}

/* ------------------------------
   MOBILE TOP BAR
------------------------------ */

.mobileTop{
  display:none;
}

.sidebarOverlay{
  display:none;
}

/* ------------------------------
   EXISTING BO COMPONENTS
------------------------------ */

.card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:20px;
  box-shadow:var(--shadow);
  padding:18px;
}

.stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin-bottom:16px;
}

.num{
  font-size:27px;
  font-weight:950;
}

.cap{
  margin-top:2px;
  color:var(--muted);
  font-size:12px;
  font-weight:850;
}

.pageTitle{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:18px;
}

.pageTitle h1{
  margin:0;
  font-size:26px;
  letter-spacing:-.03em;
}

.sub{
  color:var(--muted);
  font-size:13px;
}

.tableWrap{
  overflow:auto;
  -webkit-overflow-scrolling:touch;
}

table{
  width:100%;
  min-width:820px;
  border-collapse:collapse;
}

th,
td{
  padding:12px 10px;
  text-align:left;
  border-bottom:1px solid var(--line);
  font-size:14px;
}

th{
  color:var(--muted);
  font-size:11px;
  text-transform:uppercase;
}

.status{
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:7px 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:900;
}

.status.pending{
  color:#8a6500;
  background:#fff7df;
}

.status.paid{
  color:#14703f;
  background:#e9f8f0;
}

.status.review_required{
  color:#9e3030;
  background:#fff0f0;
}

.dot{
  width:7px;
  height:7px;
  border-radius:50%;
  background:currentColor;
}

.login{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:18px;
}

.login .card{
  width:min(420px,100%);
}

.label{
  margin-bottom:7px;
  color:var(--muted);
  font-size:12px;
  font-weight:900;
}

.input{
  width:100%;
  padding:13px 14px;
  border:1px solid #dfe3ec;
  border-radius:14px;
  outline:0;
}

.form{
  display:grid;
  gap:14px;
}

.btn{
  border:0;
  border-radius:14px;
  padding:13px 16px;
  color:#fff;
  background:linear-gradient(135deg,var(--purple),var(--purple2));
  font-weight:900;
  cursor:pointer;
}

/* ------------------------------
   FOOTER
------------------------------ */

.boFooter{
  margin-top:auto;
  padding-top:32px;
  color:#929aab;
  font-size:11px;
}

.footerLine{
  height:1px;
  background:var(--line);
}

.footerContent{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex-wrap:wrap;
  padding:15px 8px 4px;
}

.footerContent strong{
  color:#6d5df3;
}

.footerDot{
  color:#b7bdc9;
}

/* ------------------------------
   MOBILE / TABLET
------------------------------ */

@media(max-width:900px){

  .layout{
    display:block;
    min-height:auto;
  }

  .mobileTop{
    position:sticky;
    top:0;
    z-index:80;

    display:grid;
    grid-template-columns:42px 1fr auto;
    align-items:center;
    gap:10px;

    min-height:62px;
    padding:10px 13px;

    color:#fff;
    background:rgba(17,23,40,.97);
    border-bottom:1px solid rgba(255,255,255,.07);
    backdrop-filter:blur(14px);
  }

  .menuBtn{
    width:40px;
    height:40px;

    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:5px;

    padding:0;
    border:0;
    border-radius:12px;

    color:#fff;
    background:rgba(255,255,255,.07);
    cursor:pointer;
  }

  .menuBtn span{
    width:18px;
    height:2px;
    border-radius:10px;
    background:#fff;
  }

  .mobileBrand{
    min-width:0;
    display:flex;
    flex-direction:column;
  }

  .mobileBrand strong{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:14px;
    font-weight:950;
  }

  .mobileBrand small{
    margin-top:2px;
    color:#8793ab;
    font-size:9px;
  }

  .mobileLogout{
    padding:8px 9px;
    border-radius:10px;
    color:#cbd3e4;
    font-size:11px;
    font-weight:800;
  }

  /* Sidebar completely off screen by default */
  .sidebar{
    position:fixed;
    inset:0 auto 0 0;

    width:min(82vw,300px);
    height:100dvh;

    transform:translateX(-104%);
    transition:transform .24s cubic-bezier(.2,.8,.2,1);

    box-shadow:18px 0 60px rgba(6,10,20,.26);
  }

  .sidebar.is-open{
    transform:translateX(0);
  }

  .closeSidebar{
    width:36px;
    height:36px;
    flex:0 0 auto;

    display:grid;
    place-items:center;

    padding:0;
    border:0;
    border-radius:11px;

    color:#fff;
    background:rgba(255,255,255,.07);
    font-size:26px;
    line-height:1;
    cursor:pointer;
  }

  .sidebarOverlay{
    position:fixed;
    inset:0;
    z-index:45;

    display:block;

    opacity:0;
    visibility:hidden;

    background:rgba(7,11,22,.50);
    backdrop-filter:blur(2px);

    transition:opacity .22s ease, visibility .22s ease;
  }

  .sidebarOverlay.is-open{
    opacity:1;
    visibility:visible;
  }

  .main{
    min-height:calc(100vh - 62px);
    padding:15px;
  }

  .stats{
    grid-template-columns:1fr 1fr;
  }

  .boFooter{
    padding-top:26px;
  }
}

@media(max-width:560px){

  .main{
    padding:12px;
  }

  .stats{
    grid-template-columns:1fr;
  }

  .pageTitle{
    align-items:flex-start;
    flex-direction:column;
  }

  .pageTitle h1{
    font-size:23px;
  }

  .card{
    padding:15px;
    border-radius:17px;
  }

  .footerContent{
    flex-direction:column;
    gap:3px;
    text-align:center;
  }

  .footerDot{
    display:none;
  }
}
