:root{
  --emerald:#00A86B;
  --emerald-dark:#07432F;
  --aqua:#00C2CB;
  --gold:#B08D2B;
  --silver:#94A3B8;
  --silver-light:#E5E9EE;
  --ink:#1F2A24;
  --bg:#F5F7F8;
  --white:#FFFFFF;
  --ok:#0E9F6E;
  --warn:#C08A1E;
  --bad:#C0392B;
  --neutral:#6B7280;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--ink);
  font-size:14px;
}
a{color:var(--emerald);text-decoration:none;}
a:hover{text-decoration:underline;}

/* ---- Top bar ---- */
.topbar{
  background:linear-gradient(90deg,var(--emerald-dark),var(--emerald) 60%,var(--aqua));
  color:#fff;
  padding:0 20px;
  height:58px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-shadow:0 2px 8px rgba(0,0,0,.15);
}
.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;color:#fff;}
.topbar .brand small{display:block;font-weight:400;font-size:11px;opacity:.85;letter-spacing:.5px;}
.topbar .user-chip{display:flex;align-items:center;gap:10px;font-size:13px;}
.topbar .role-pill{background:rgba(255,255,255,.18);padding:3px 10px;border-radius:20px;font-size:11px;letter-spacing:.3px;}
.topbar .logout{color:#fff;border:1px solid rgba(255,255,255,.5);padding:5px 12px;border-radius:6px;font-size:12px;}
.topbar .logout:hover{background:rgba(255,255,255,.15);text-decoration:none;}

/* ---- Layout ---- */
.app-shell{display:flex;min-height:calc(100vh - 58px);}
.sidebar{
  width:230px;
  background:var(--white);
  border-right:1px solid var(--silver-light);
  padding:18px 0;
  flex-shrink:0;
}
.sidebar a{
  display:block;
  padding:10px 22px;
  color:var(--ink);
  font-size:13.5px;
  border-left:3px solid transparent;
}
.sidebar a:hover{background:#F0FAF6;text-decoration:none;}
.sidebar a.active{border-left-color:var(--emerald);background:#EAF7F1;color:var(--emerald-dark);font-weight:600;}
.sidebar .grp{padding:14px 22px 4px;font-size:10.5px;letter-spacing:.8px;color:var(--silver);font-weight:700;text-transform:uppercase;}
.main{flex:1;padding:26px 32px;max-width:1200px;}

/* ---- Cards ---- */
.card{background:#fff;border:1px solid var(--silver-light);border-radius:10px;padding:20px 22px;margin-bottom:20px;box-shadow:0 1px 3px rgba(0,0,0,.04);}
.card h3{margin:0 0 12px;font-size:15px;color:var(--emerald-dark);}
.grid{display:grid;gap:18px;}
.grid-4{grid-template-columns:repeat(4,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:1000px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr 1fr;}}

.stat{background:#fff;border:1px solid var(--silver-light);border-left:4px solid var(--emerald);border-radius:8px;padding:16px 18px;}
.stat .label{font-size:11px;color:var(--silver);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;}
.stat .value{font-size:24px;font-weight:700;color:var(--emerald-dark);}
.stat.aqua{border-left-color:var(--aqua);}
.stat.gold{border-left-color:var(--gold);}
.stat.bad{border-left-color:var(--bad);}

/* ---- Page header ---- */
.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px;flex-wrap:wrap;gap:10px;}
.page-head h1{font-size:21px;margin:0 0 4px;color:var(--emerald-dark);}
.page-head p{margin:0;color:var(--neutral);font-size:13px;max-width:640px;}

/* ---- Buttons ---- */
.btn{display:inline-block;padding:8px 16px;border-radius:6px;border:none;font-size:13px;cursor:pointer;font-weight:600;}
.btn-primary{background:var(--emerald);color:#fff;}
.btn-primary:hover{background:var(--emerald-dark);text-decoration:none;color:#fff;}
.btn-aqua{background:var(--aqua);color:#fff;}
.btn-gold{background:var(--gold);color:#fff;}
.btn-outline{background:#fff;border:1px solid var(--silver);color:var(--ink);}
.btn-danger{background:var(--bad);color:#fff;}
.btn-sm{padding:5px 10px;font-size:12px;}

/* ---- Table ---- */
table{width:100%;border-collapse:collapse;font-size:13px;}
th{background:var(--emerald-dark);color:#fff;text-align:left;padding:10px 12px;font-size:11.5px;letter-spacing:.3px;text-transform:uppercase;}
td{padding:9px 12px;border-bottom:1px solid var(--silver-light);vertical-align:middle;}
tr:nth-child(even) td{background:#FAFBFC;}
tr:hover td{background:#F0FAF6;}

/* ---- Badges ---- */
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.2px;}
.badge.ok{background:#E3F7EC;color:var(--ok);}
.badge.warn{background:#FBF1DD;color:var(--warn);}
.badge.bad{background:#FBE7E4;color:var(--bad);}
.badge.neutral{background:var(--silver-light);color:var(--neutral);}

/* ---- Forms ---- */
label{display:block;font-size:12.5px;font-weight:600;color:var(--emerald-dark);margin-bottom:5px;}
input[type=text],input[type=number],input[type=date],input[type=password],select,textarea{
  width:100%;padding:9px 11px;border:1px solid var(--silver-light);border-radius:6px;font-size:13.5px;margin-bottom:14px;background:#fff;font-family:inherit;
}
textarea{min-height:80px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}

/* ---- Alerts ---- */
.alert{padding:12px 16px;border-radius:8px;margin-bottom:18px;font-size:13.5px;}
.alert.success{background:#E3F7EC;color:#0E6B44;border:1px solid #BEEBD3;}
.alert.error{background:#FBE7E4;color:#9B2C2C;border:1px solid #F3C6BF;}
.alert.info{background:#E7F6F7;color:#0D6B6E;border:1px solid #BFE9EB;}

/* ---- Callout ---- */
.callout{border-left:4px solid var(--emerald);background:#EAF7F1;padding:14px 18px;border-radius:6px;margin-bottom:18px;font-size:13px;}
.callout.gold{border-left-color:var(--gold);background:var(--white);border:1px solid #EEE1BE;}
.callout h4{margin:0 0 6px;font-size:13px;color:var(--emerald-dark);}

/* ---- Tabs / step chips ---- */
.steps{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px;}
.step-chip{background:#fff;border:1px solid var(--silver-light);border-radius:20px;padding:6px 14px;font-size:12px;color:var(--neutral);}
.step-chip.done{background:var(--emerald);border-color:var(--emerald);color:#fff;}
.step-chip.current{background:var(--aqua);border-color:var(--aqua);color:#fff;}

/* ---- Landing ---- */
.landing-hero{background:linear-gradient(135deg,var(--emerald-dark),var(--emerald) 55%,var(--aqua));color:#fff;padding:70px 8vw;}
.landing-hero h1{font-size:38px;margin:0 0 12px;}
.landing-hero p{font-size:16px;max-width:680px;opacity:.95;line-height:1.6;}
.landing-section{padding:50px 8vw;}
.engine-card{background:#fff;border:1px solid var(--silver-light);border-top:4px solid var(--emerald);border-radius:10px;padding:20px;}
.engine-card h4{color:var(--emerald-dark);margin:0 0 8px;font-size:15px;}
.engine-card p{color:var(--neutral);font-size:13px;line-height:1.5;}

/* ---- Login ---- */
.login-wrap{max-width:920px;margin:50px auto;padding:0 20px;}
.role-tile{background:#fff;border:1px solid var(--silver-light);border-radius:10px;padding:16px;text-align:left;cursor:pointer;transition:.15s;}
.role-tile:hover{border-color:var(--emerald);box-shadow:0 4px 14px rgba(0,168,107,.15);}
.role-tile .rname{font-weight:700;color:var(--emerald-dark);font-size:13.5px;margin-bottom:4px;}
.role-tile .ruser{font-size:11.5px;color:var(--silver);}

/* ---- Ledger hash mono ---- */
.mono{font-family:'Consolas',monospace;font-size:11.5px;color:var(--neutral);word-break:break-all;}

.footer-note{color:var(--silver);font-size:11.5px;margin-top:30px;text-align:center;}
