
/* ===== 6-box OTP verification code input ===== */
.otp-container {
  display: flex;
  gap: 10px;
  justify-content: center;
  margin: 20px 0;
}

.otp-box {
  width: 48px;
  height: 56px;
  text-align: center;
  font-size: 24px;
  font-weight: 700;
  border: 2px solid #d1d9e0;
  border-radius: 8px;
  background: #f6f8fa;
  color: #1f2328;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
  caret-color: #1f6feb;
}

.otp-box:focus {
  border-color: #1f6feb;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(31, 111, 235, 0.12);
}

.otp-box.filled {
  border-color: #1a365d;
  background: #fff;
}

.otp-box.error {
  border-color: #cf222e;
  background: #ffeef0;
  animation: otp-shake 0.4s;
}

@keyframes otp-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}

/* Mobile responsive */
@media (max-width: 420px) {
  .otp-container {
    gap: 6px;
  }
  .otp-box {
    width: 40px;
    height: 50px;
    font-size: 20px;
  }
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--navy:#0f172a;--navy2:#1e293b;--blue:#3b82f6;--blue-light:#eff6ff;--amber:#fbbf24;--green:#22c55e;--red:#ef4444;--orange:#f97316;--slate:#64748b;--slate-light:#f1f5f9;--border:#e2e8f0;--radius:10px;--shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.06)}
body{font-family:'Segoe UI',-apple-system,BlinkMacSystemFont,Arial,sans-serif;background:var(--slate-light);color:var(--navy);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.num{text-align:right;white-space:nowrap}

/* ===== Login ===== */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f172a,#1e293b);padding:20px}
.login-card{background:#fff;border-radius:16px;max-width:420px;width:100%;padding:40px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.login-brand{display:flex;align-items:center;gap:16px;margin-bottom:28px}
.login-brand h1{font-size:20px;font-weight:800;color:var(--navy)}
.login-brand p{font-size:13px;color:var(--slate)}
.login-form{display:flex;flex-direction:column;gap:16px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group label{font-size:13px;font-weight:600;color:var(--navy)}
.form-group input,.form-group select{padding:12px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px;background:#fff;color:var(--navy);transition:border .15s}
.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--blue)}
.login-error{background:#fef2f2;color:var(--red);padding:10px 14px;border-radius:8px;font-size:13px;border:1px solid #fecaca}
.form-hint{font-size:11px;color:var(--slate);margin-top:4px}
.login-footer{text-align:center;margin-top:20px;font-size:13px;color:var(--slate)}
.login-footer a{color:var(--blue);text-decoration:none;font-weight:600}
.login-footer a:hover{text-decoration:underline}

/* ===== Buttons ===== */
.btn{border:none;border-radius:8px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.btn-blue{background:var(--blue);color:#fff}.btn-blue:hover{background:#2563eb}
.btn-amber{background:var(--amber);color:var(--navy)}.btn-amber:hover{background:#f59e0b}
.btn-ghost{background:transparent;color:var(--slate);border:1px solid var(--border)}.btn-ghost:hover{background:var(--slate-light);color:var(--navy)}
.btn-red{background:var(--red);color:#fff}.btn-red:hover{background:#dc2626}
.btn-sm{padding:6px 12px;font-size:12px}
.btn-block{width:100%;display:block;text-align:center}

/* ===== App Layout ===== */
.app{min-height:100vh}
.sticky-header{position:sticky;top:0;z-index:100}
.topbar{background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:12px 24px}
.brand{display:flex;align-items:center;gap:12px}
.brand-name{font-size:15px;font-weight:700;color:#fff}
.brand-sub{font-size:11px;color:var(--slate)}
.topbar-right{display:flex;align-items:center;gap:14px}
.user-info{text-align:right}
.user-name{font-size:13px;font-weight:700;color:#fff;display:block}
.user-role{font-size:11px;color:var(--amber);text-transform:capitalize}
.tabs{display:flex;gap:4px;background:var(--navy2);padding:0 24px;overflow-x:auto}
.tab{background:transparent;color:var(--slate);border:none;padding:10px 16px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;border-bottom:3px solid transparent;transition:all .15s}
.tab:hover{color:#fff}.tab.active{color:#fff;border-bottom-color:var(--amber)}
.view{padding:20px 24px;max-width:1400px;margin:0 auto}
.tab-panel{display:none}.tab-panel.active{display:block}

/* ===== Panels & Cards ===== */
.panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:20px;box-shadow:var(--shadow)}
.panel h3{font-size:14px;font-weight:700;margin-bottom:14px}
.panel-hint{font-size:11px;font-weight:400;color:var(--slate)}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-head h3{margin-bottom:0}
.filter-bar{display:flex;gap:10px;align-items:center}
.filter-bar select{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
@media(max-width:900px){.two-col{grid-template-columns:1fr}}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
@media(max-width:768px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}
.kpi-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}
.kpi-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--slate);margin-bottom:6px}
.kpi-value{font-size:24px;font-weight:800;color:var(--navy);line-height:1.1}
.kpi-unit{font-size:13px;font-weight:600;color:var(--slate)}
.kpi-trend{font-size:12px;font-weight:600;margin-top:4px}
.kpi-trend.up{color:var(--green)}.kpi-trend.down{color:var(--red)}.kpi-trend.flat{color:var(--slate)}
.kpi-card.accent-blue{border-top:3px solid var(--blue)}
.kpi-card.accent-green{border-top:3px solid var(--green)}
.kpi-card.accent-amber{border-top:3px solid var(--amber)}
.kpi-card.accent-red{border-top:3px solid var(--red)}

/* ===== Tables ===== */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:var(--navy);color:var(--blue);font-size:11px;font-weight:700;padding:9px 12px;text-align:left;letter-spacing:.3px;white-space:nowrap}
th.num{text-align:right}
td{border-bottom:1px solid var(--border);padding:9px 12px;color:var(--slate);vertical-align:middle}
tr:nth-child(even) td{background:#f8fafc}
tr:hover td{background:var(--blue-light)}
td.num{text-align:right;font-variant-numeric:tabular-nums}
.badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}
.badge-ok{background:#f0fdf4;color:var(--green)}.badge-warn{background:#fffbeb;color:var(--orange)}.badge-crit{background:#fef2f2;color:var(--red)}
.badge-pending{background:var(--slate-light);color:var(--slate)}
.progress{width:60px;height:6px;background:var(--slate-light);border-radius:3px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px}
.progress-fill{height:100%;border-radius:3px}
.progress-fill.green{background:var(--green)}.progress-fill.blue{background:var(--blue)}.progress-fill.orange{background:var(--orange)}.progress-fill.red{background:var(--red)}

/* ===== Alert rows ===== */
.alert-row{display:flex;gap:10px;padding:10px 12px;border-radius:8px;font-size:12px;align-items:flex-start;margin-bottom:8px}
.alert-row.critical{background:#fef2f2;border-left:4px solid var(--red)}
.alert-row.warning{background:#fffbeb;border-left:4px solid var(--orange)}
.alert-row.info{background:var(--blue-light);border-left:4px solid var(--blue)}
.alert-icon{font-size:16px;flex-shrink:0}
.alert-body{flex:1}.alert-title{font-weight:700;color:var(--navy)}.alert-meta{font-size:11px;color:var(--slate);margin-top:2px}

/* ===== Ministry bars ===== */
.min-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.min-bar-label{font-size:12px;font-weight:600;color:var(--navy);width:140px;flex-shrink:0}
.min-bar{flex:1;height:20px;background:var(--slate-light);border-radius:4px;overflow:hidden}
.min-bar-fill{height:100%;border-radius:4px;display:flex;align-items:center;padding-left:8px;font-size:10px;font-weight:700;color:#fff;white-space:nowrap}
.min-bar-val{font-size:12px;font-weight:600;color:var(--slate);width:80px;text-align:right}

/* ===== Trend chart ===== */
.trend-chart{display:flex;align-items:flex-end;gap:12px;height:160px;padding-top:10px}
.trend-group{display:flex;flex-direction:column;align-items:center;flex:1;gap:4px;height:100%;justify-content:flex-end}
.trend-bar{width:100%;max-width:36px;border-radius:4px 4px 0 0;min-height:4px}
#dash-trend{display:flex;align-items:flex-end;gap:12px;height:160px;padding-top:10px}
.trend-label{font-size:10px;color:var(--slate)}

/* ===== Recent txn list ===== */
.txn-row{display:flex;gap:10px;padding:8px 12px;border-radius:8px;background:var(--slate-light);font-size:12px;margin-bottom:6px}
.txn-type{font-weight:700;color:var(--navy);width:80px;flex-shrink:0}
.txn-desc{flex:1;color:var(--navy)}
.txn-amount{font-weight:700;color:var(--navy);text-align:right;width:100px}
.txn-date{font-size:11px;color:var(--slate);width:80px;text-align:right}

/* ===== Modal ===== */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}
.modal-card{background:#fff;border-radius:16px;max-width:600px;width:100%;max-height:85vh;overflow-y:auto;padding:30px;position:relative}
.modal-close{position:absolute;top:12px;right:16px;background:none;border:none;font-size:28px;cursor:pointer;color:var(--slate);line-height:1}
.modal-close:hover{color:var(--navy)}
.modal-card h2{font-size:20px;font-weight:800;margin-bottom:4px}
.modal-card h3{font-size:14px;font-weight:700;margin:20px 0 10px}
.modal-form{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.modal-form label{display:block;font-size:12px;font-weight:600;color:var(--navy)}
.modal-form input,.modal-form select,.modal-form textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;margin-top:5px;background:#fff;color:var(--navy)}
.modal-form textarea{resize:vertical;min-height:60px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:600px){.form-row{grid-template-columns:1fr}}

/* ===== Doc link ===== */
.doc-link{font-size:12px;color:var(--blue);text-decoration:none;font-weight:600}
.doc-link:hover{text-decoration:underline}
.no-doc{font-size:11px;color:var(--slate)}

/* ===== Ministry tooltip ===== */
.min-tip{display:inline-block;cursor:help;font-size:12px;vertical-align:middle;opacity:.5;transition:opacity .15s;position:relative}
.min-tip:hover{opacity:1}
.min-tip::after{content:attr(title);position:absolute;left:100%;top:50%;transform:translateY(-50%);background:var(--navy);color:#fff;padding:6px 10px;border-radius:6px;font-size:11px;font-weight:600;white-space:nowrap;max-width:300px;overflow:hidden;text-overflow:ellipsis;z-index:300;pointer-events:none;opacity:0;transition:opacity .2s;box-shadow:0 4px 12px rgba(0,0,0,.3);margin-left:4px}
.min-tip:hover::after{opacity:1}

/* ===== Footer ===== */
.app-footer{text-align:center;padding:16px;font-size:11px;color:var(--slate)}

/* ===== Executive Dashboard ===== */
.exec-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.exec-stat{background:var(--slate-light);border-radius:8px;padding:12px 14px}
.exec-stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--slate)}
.exec-stat-value{font-size:20px;font-weight:800;color:var(--navy);margin-top:4px}
.exec-stat-sub{font-size:11px;color:var(--slate);margin-top:2px}
.exec-stat.alert{background:#fef2f2}
.exec-stat.alert .exec-stat-value{color:var(--red)}
.exec-stat.warn{background:#fffbeb}
.exec-stat.warn .exec-stat-value{color:var(--orange)}
.exec-stat.ok{background:#f0fdf4}
.exec-stat.ok .exec-stat-value{color:var(--green)}
.exec-activity-row{display:flex;gap:10px;padding:8px 12px;border-radius:8px;background:var(--slate-light);font-size:12px;margin-bottom:6px}
.exec-activity-action{font-weight:700;color:var(--navy);width:70px;flex-shrink:0}
.exec-activity-entity{color:var(--blue);font-weight:600;width:90px;flex-shrink:0}
.exec-activity-detail{flex:1;color:var(--navy)}
.exec-activity-user{font-size:11px;color:var(--slate);width:100px;text-align:right}
.exec-activity-time{font-size:11px;color:var(--slate);width:70px;text-align:right}
.exec-detail{margin-top:16px;border-top:1px solid var(--border);padding-top:16px}
.exec-detail h4{font-size:14px;font-weight:700;margin-bottom:10px}
.exec-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:768px){.exec-detail-grid{grid-template-columns:1fr}}
.exec-detail-table{width:100%;border-collapse:collapse;font-size:12px}
.exec-detail-table th{background:var(--navy2);color:var(--blue);font-size:10px;padding:7px 10px;text-align:left}
.exec-detail-table td{border-bottom:1px solid var(--border);padding:7px 10px;color:var(--slate)}
::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-track{background:transparent}