:root{
  --bg:#10141A;
  --panel:#1A2029;
  --panel-2:#212933;
  --panel-3:#171D25;
  /* --border:#2A323D; */
  --border:#757a83;
  /* --border:#9fa4ab; */
  --text:#E7ECF1;
  --text-muted:#E7ECF1;
  --text-faint:#E7ECF1;
  /* --text-muted:#8992A0;
  --text-faint:#5D6672; */
  --amber:#F2A93B;
  --success-dim:#3A2E1A;
  --cyan:#4FC3D9;
  --success:#49C68B;
  --success-dim:#153327;
  --danger:#E5586A;
  --danger-dim:#331B20;
  --violet:#9B8CFF;
  --radius:10px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;}
.mono{font-family:'IBM Plex Mono',monospace;}
.display{font-family:'Space Grotesk',sans-serif;}

.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 24px;background:var(--panel-3);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50;}
.brand{display:flex;align-items:center;gap:10px;}
.brand .mark{width:38px;height:38px;border-radius:7px;object-fit:cover;display:block;}
.brand span{font-family:'Space Grotesk';font-weight:600;font-size:15px;letter-spacing:0.5px;}

.view{display:none;}
.view.active{display:block;}

.login-wrap{min-height:calc(100vh - 61px);display:flex;align-items:center;justify-content:center;padding:40px;}
.login-card{width:380px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:32px;}
.login-card .mark-lg{width:56px;height:56px;border-radius:50%;object-fit:cover;display:block;margin-bottom:18px;}
.login-card h1{font-family:'Space Grotesk';font-size:20px;margin:0 0 4px;}
.login-card p{color:var(--text-muted);font-size:13px;margin:0 0 24px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:6px;font-weight:500;}
.field input, .field select, .field textarea{width:100%;background:var(--panel-3);border:1px solid var(--border);border-radius:7px;padding:10px 12px;color:var(--text);font-size:14px;font-family:'Inter';outline:none;transition:border .15s;}
.field input:focus, .field select:focus, .field textarea:focus{border-color:var(--success);}
.btn{border:none;border-radius:7px;padding:10px 18px;font-size:13px;font-weight:600;cursor:pointer;font-family:'Inter';transition:opacity .15s, transform .1s;}
.btn:active{transform:scale(.98);}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn-primary{background:var(--success);color:#1a1206;}
.btn-primary:hover{opacity:.9;}
.btn-block{width:100%;}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text);}
.btn-ghost:hover{border-color:#3a4452;}
.btn-success{background:var(--success);color:#07201a;}
.btn-danger{background:transparent;border:1px solid var(--danger);color:var(--danger);}
.btn-danger:hover{background:var(--danger-dim);}
.btn-sm{padding:6px 12px;font-size:12px;}
.login-note{margin-top:18px;font-size:11px;color:var(--text-faint);text-align:center;}
.login-error{margin-top:14px;font-size:12.5px;color:var(--danger);text-align:center;display:none;}

.shell{display:grid;grid-template-columns:236px 1fr;min-height:calc(100vh - 61px);}
.sidebar{background:var(--panel-3);border-right:1px solid var(--border);padding:20px 14px;}
.role-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:20px;background:var(--panel-2);border:1px solid var(--border);font-size:11px;color:var(--text-muted);margin-bottom:20px;font-weight:500;}
.role-badge .dot{width:6px;height:6px;border-radius:50%;background:var(--role-color,var(--success));}
.nav-section-label{font-size:10px;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-faint);margin:18px 8px 8px;font-weight:600;}
.navitem{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer;color:var(--text-muted);font-size:13.5px;font-weight:500;margin-bottom:2px;transition:all .12s;}
.navitem:hover{background:var(--panel-2);color:var(--text);}
.navitem.active{background:var(--panel-2);color:var(--text);box-shadow:inset 2px 0 0 var(--role-color,var(--success));}

.main{padding:26px 30px 60px;overflow-x:hidden;}
.page{display:none;}
.page.active{display:block;}
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:12px;}
.page-head h2{font-family:'Space Grotesk';font-size:21px;margin:0;font-weight:600;}
.page-head .sub{color:var(--text-muted);font-size:13px;margin-top:3px;}
.profile-chip{display:flex;align-items:center;gap:9px;padding:6px 12px 6px 6px;background:var(--panel);border:1.7px solid var(--border);border-radius:20px;}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--panel-2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--role-color,var(--success));}
.profile-chip .name{font-size:14px;font-weight:500;}
.profile-chip .role{font-size:12px;color:var(--text-muted);}
.profile-chip button{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:12px;margin-left:6px;}

.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:24px;}
.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;}
.stat-card .label{font-size:11.5px;color:var(--text-muted);font-weight:500;margin-bottom:8px;}
.stat-card .value{font-family:'Space Grotesk';font-size:26px;font-weight:600;}
.stat-card .delta{font-size:11px;margin-top:4px;font-weight:500;}
.meta-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;}
.meta-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:10px 12px;}
.meta-card .label{font-size:10.5px;color:var(--text-muted);font-weight:500;margin-bottom:4px;}
.meta-card .value{font-family:'Space Grotesk';font-size:15px;font-weight:600;}
.delta.up{color:var(--success);}
.delta.warn{color:var(--success);}
.delta.flat{color:var(--text-faint);}

.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;overflow:hidden;}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--border);}
.panel-head h3{font-family:'Space Grotesk';font-size:14.5px;margin:0;font-weight:600;}
.panel-body{padding:4px 18px 14px;}
table{width:100%;border-collapse:collapse;}
th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-weight:600;padding:12px 8px;border-bottom:1px solid var(--border);}
td{padding:12px 8px;font-size:13.5px;border-bottom:1px solid var(--panel-2);}
tr:last-child td{border-bottom:none;}
.cell-mono{font-family:'IBM Plex Mono';font-size:12.5px;color:var(--text-muted);}

.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;}
.pill.pending{background:var(--success-dim);color:var(--success);}
.pill.approved{background:var(--success-dim);color:var(--success);}
.pill.rejected{background:var(--danger-dim);color:var(--danger);}
.pill.info{background:#132734;color:var(--cyan);}

.row-actions{display:flex;gap:8px;}
.cols-2{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;}
.cols-2 > *{margin-bottom:0;}
@media(max-width:900px){.cols-2{grid-template-columns:1fr;}}

.empty-hint{color:var(--text-faint);font-size:12.5px;padding:20px 8px;text-align:center;}
form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.form-actions{display:flex;gap:10px;margin-top:6px;}
.toast{position:fixed;bottom:20px;right:20px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 16px;font-size:13px;z-index:100;display:none;}
.toast.error{border-color:var(--danger);color:var(--danger);}
.toast.success{border-color:var(--success);color:var(--success);}

::selection{background:var(--success);color:#1a1206;}

.project-link{color:var(--success);text-decoration:underline;cursor:pointer;}

/* ================= RESPONSIVE / MOBILE ================= */
@media (max-width: 900px) {
  .topbar{padding:10px 14px;gap:10px;}
  .brand span{font-size:13.5px;}
  .brand .mark{width:32px;height:32px;}

  .shell{grid-template-columns:1fr;min-height:auto;}
  .sidebar{
    display:flex;flex-direction:row;align-items:center;flex-wrap:nowrap;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    border-right:none;border-bottom:1px solid var(--border);
    padding:10px 12px;gap:6px;background:var(--panel-3);
  }
  .sidebar::-webkit-scrollbar{height:0;}
  .sidebar .role-badge{display:none;}
  .sidebar .nav-section-label{display:none;}
  .sidebar .navitem{flex:0 0 auto;white-space:nowrap;margin-bottom:0;padding:8px 12px;}
  .sidebar .navitem.active{box-shadow:inset 0 -2px 0 var(--role-color,var(--success));}

  .main{padding:16px 14px 40px;}
  .page-head{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:16px;}
  .page-head h2{font-size:18px;}

  .profile-chip{padding:4px 8px 4px 4px;}
  .avatar{width:32px;height:32px;font-size:10px;}
  .profile-chip .name{font-size:12.5px;}
  .profile-chip .role{font-size:10.5px;}

  .stat-row{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px;}
  .stat-card{padding:12px 14px;}
  .stat-card .value{font-size:20px;}
  .meta-row{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));}

  .panel-head{padding:12px 14px;flex-wrap:wrap;gap:8px;}
  .panel-body{padding:4px 10px 10px;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  table{min-width:560px;}
  th,td{padding:10px 6px;font-size:12.5px;}

  form .form-row{grid-template-columns:1fr;gap:10px;}
  .row-actions{flex-wrap:wrap;gap:6px;}
  .row-actions .decision-reason-input{width:100% !important;margin-bottom:4px;}

  .login-wrap{padding:20px;min-height:calc(100vh - 57px);}
  .login-card{width:100%;max-width:380px;padding:24px 20px;}

  .toast{left:14px;right:14px;bottom:14px;}
}

@media (max-width: 480px) {
  .stat-row{grid-template-columns:1fr 1fr;}
  table{min-width:480px;}
  .navitem{font-size:12.5px;padding:7px 10px;}
}
