:root{
  --navy:#14337E; --navy-dark:#0E2559; --yellow:#F8B31F;
  --bg:#F4F5F7; --card:#FFFFFF; --ink:#1B2430; --muted:#6B7280; --border:#E2E5EA;
  --ok-bg:#E7F5EC; --ok:#1F7A45; --warn-bg:#FFF3DA; --warn:#8A6A16; --err-bg:#FBE7E6; --err:#B3261E;
  --radius:10px; --shadow:0 1px 2px rgba(20,51,126,.05), 0 8px 24px rgba(20,51,126,.06);
}
*{box-sizing:border-box;}
body{margin:0;font-family:-apple-system,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--ink);}
button{font:inherit;cursor:pointer;}
input,select,textarea{font:inherit;}
h1,h2,h3{margin:0 0 10px;}
.muted{color:var(--muted);font-size:13px;}
.hidden{display:none !important;}

/* ---------- Login ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--navy) 0%,var(--navy-dark) 100%);padding:16px;}
.login-card{background:#fff;border-radius:16px;padding:32px;width:100%;max-width:360px;box-shadow:0 20px 60px rgba(0,0,0,.3);}
.login-logo{font-size:20px;font-weight:700;color:var(--navy);margin-bottom:4px;}
.login-logo .accent{color:var(--yellow);}
.login-sub{color:var(--muted);font-size:13px;margin:0 0 18px;}
.login-card label{display:block;font-size:13px;font-weight:600;margin:12px 0 4px;}
.login-card input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;}
.login-card button{width:100%;margin-top:20px;padding:12px;background:var(--navy);color:#fff;border:none;border-radius:9px;font-weight:600;font-size:15px;}
.login-card button:hover{background:var(--navy-dark);}

/* ---------- Modal (ganti password) ---------- */
.modal-backdrop{position:fixed;inset:0;background:rgba(15,20,30,.5);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;}
.modal{background:#fff;border-radius:14px;padding:26px;width:100%;max-width:360px;}
.modal label{display:block;font-size:13px;font-weight:600;margin:12px 0 4px;}
.modal input{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;}
.modal button{width:100%;margin-top:18px;padding:11px;background:var(--navy);color:#fff;border:none;border-radius:8px;font-weight:600;}

/* ---------- App shell ---------- */
.app{min-height:100vh;display:flex;flex-direction:column;}
.topbar{display:flex;align-items:center;gap:10px;background:var(--navy);color:#fff;padding:10px 18px;flex-wrap:wrap;}
.topbar .brand{font-weight:700;font-size:16px;}
.topbar .brand .accent{color:var(--yellow);}
.topbar .spacer{flex:1;}
.tabnav{display:flex;gap:4px;flex-wrap:wrap;}
.tabnav button{background:transparent;border:none;color:#D7E0F5;padding:8px 12px;border-radius:7px;font-size:13.5px;font-weight:500;}
.tabnav button:hover{background:rgba(255,255,255,.08);color:#fff;}
.tabnav button.active{background:var(--yellow);color:var(--navy-dark);font-weight:700;}
.icon-btn{background:transparent;border:none;color:#fff;font-size:16px;position:relative;padding:6px;}
.badge-count{position:absolute;top:-2px;right:-2px;background:var(--err);color:#fff;font-size:10px;border-radius:999px;padding:1px 5px;}
.userchip{display:flex;align-items:center;gap:6px;font-size:13px;}
.role-pill{background:rgba(255,255,255,.15);padding:2px 9px;border-radius:999px;font-size:11px;text-transform:uppercase;letter-spacing:.03em;}
.ghost-btn{background:transparent;border:1px solid rgba(255,255,255,.35);color:#fff;padding:6px 11px;border-radius:7px;font-size:13px;}
.ghost-btn:hover{background:rgba(255,255,255,.1);}

.notif-panel{position:absolute;top:54px;right:16px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);width:320px;max-height:400px;overflow-y:auto;z-index:50;}
.notif-item{padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px;}
.notif-item:last-child{border-bottom:none;}
.notif-item b{display:block;margin-bottom:2px;}
.notif-item.unread{background:#FFFBEF;}

.content{flex:1;max-width:1100px;margin:0 auto;padding:22px 18px 70px;width:100%;}

/* ---------- Generic building blocks ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:18px;box-shadow:var(--shadow);}
.card h3{font-size:15.5px;color:var(--navy);}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:640px){.grid2{grid-template-columns:1fr;}}
.field{margin-bottom:12px;}
.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:4px;color:#374151;}
.field input,.field select,.field textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:#fff;}
.field textarea{min-height:70px;resize:vertical;}
.btn{display:inline-block;padding:8px 14px;border-radius:8px;border:none;background:var(--navy);color:#fff;font-weight:600;font-size:13.5px;}
.btn:hover{background:var(--navy-dark);}
.btn.secondary{background:#fff;color:var(--navy);border:1px solid var(--navy);}
.btn.yellow{background:var(--yellow);color:var(--navy-dark);}
.btn.danger{background:var(--err);color:#fff;}
.btn.small{padding:5px 10px;font-size:12.5px;}
.btn[disabled]{opacity:.45;cursor:not-allowed;}

table{width:100%;border-collapse:collapse;font-size:13.5px;}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle;}
th{background:#F7F8FA;font-size:12px;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);}
tr:hover td{background:#FAFBFC;}
.table-wrap{overflow-x:auto;}

.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;}
.pill.ok{background:var(--ok-bg);color:var(--ok);}
.pill.warn{background:var(--warn-bg);color:var(--warn);}
.pill.err{background:var(--err-bg);color:var(--err);}
.pill.neutral{background:#EEF0F3;color:#4B5563;}

.msg{padding:10px 13px;border-radius:8px;font-size:13.5px;margin-bottom:12px;}
.msg.err{background:var(--err-bg);color:var(--err);}
.msg.ok{background:var(--ok-bg);color:var(--ok);}

.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px;}
.toolbar input,.toolbar select{padding:8px 10px;border:1px solid var(--border);border-radius:7px;}

.section-title{display:flex;align-items:center;justify-content:space-between;margin:26px 0 12px;}
.section-title h2{font-size:17px;color:var(--navy);}

.chat-box{border:1px solid var(--border);border-radius:10px;height:260px;overflow-y:auto;padding:10px;background:#FAFBFC;margin-bottom:10px;}
.chat-msg{margin-bottom:8px;font-size:13.5px;}
.chat-msg b{color:var(--navy);}
.chat-msg .time{color:var(--muted);font-size:11px;margin-left:6px;}

.empty-state{padding:30px;text-align:center;color:var(--muted);font-size:13.5px;}

@media print{
  .topbar,.tabnav,.toolbar,.btn,#notifBtn,#changePwBtn,#logoutBtn{display:none !important;}
  body{background:#fff;}
}
