:root{
  --biru:#0f2f52; --biru2:#164a7a; --emas:#b98b2e; --bg:#f4f6f9; --putih:#fff;
  --garis:#dbe2ea; --teks:#1d2733; --malap:#6b7a8d;
  --hijau:#0f7a4d; --kuning:#a86b00; --merah:#b3261e;
}
*{box-sizing:border-box}
body{margin:0;font:14px/1.55 -apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--teks);background:var(--bg)}
a{color:var(--biru2);text-decoration:none}
a:hover{text-decoration:underline}
.topbar{background:var(--biru);color:#fff;padding:10px 18px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:20}
.topbar .brand{font-weight:700;letter-spacing:.3px}
.topbar .brand small{display:block;font-weight:400;font-size:11px;opacity:.75;letter-spacing:.6px;text-transform:uppercase}
.topbar .kanan{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:12.5px}
.topbar .kanan .user{opacity:.9}
.shell{display:flex;min-height:calc(100vh - 46px)}
.side{width:214px;background:var(--putih);border-right:1px solid var(--garis);padding:14px 0;flex:0 0 214px}
.side a{display:block;padding:9px 18px;color:var(--teks);font-size:13.5px;border-left:3px solid transparent}
.side a:hover{background:#f3f6fa;text-decoration:none}
.side a.aktif{background:#eef4fb;border-left-color:var(--emas);font-weight:600;color:var(--biru)}
.side .tajuk{font-size:10.5px;text-transform:uppercase;letter-spacing:.9px;color:var(--malap);padding:14px 18px 6px}
.utama{flex:1;padding:20px 24px 60px;min-width:0}
h1{font-size:20px;margin:0 0 4px}
h2{font-size:15.5px;margin:22px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--garis)}
h3{font-size:13.5px;margin:16px 0 8px}
.sub{color:var(--malap);font-size:12.5px;margin-bottom:16px}
.kad{background:var(--putih);border:1px solid var(--garis);border-radius:8px;padding:16px 18px;margin-bottom:16px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.g3,.g4,.g2{grid-template-columns:1fr}.side{display:none}}
.stat{background:var(--putih);border:1px solid var(--garis);border-radius:8px;padding:14px 16px}
.stat .n{font-size:24px;font-weight:700;color:var(--biru)}
.stat .l{font-size:12px;color:var(--malap);text-transform:uppercase;letter-spacing:.5px}
table{width:100%;border-collapse:collapse;background:var(--putih);font-size:13px}
th,td{padding:9px 10px;border-bottom:1px solid var(--garis);text-align:left;vertical-align:top}
th{background:#f0f4f9;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:#3b4a5c;font-weight:600}
tbody tr:hover{background:#fbfcfe}
td.num,th.num{text-align:right}
.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:10.5px;font-weight:700;letter-spacing:.4px}
.badge-hijau{background:#e2f4ea;color:var(--hijau)}
.badge-kuning{background:#fdf1dc;color:var(--kuning)}
.badge-merah{background:#fbe6e5;color:var(--merah)}
.badge-biru{background:#e4eefa;color:var(--biru2)}
.badge-kelabu{background:#eef1f5;color:#5b6a7d}
.badge-gelap{background:#e3e6ea;color:#37424f}
.btn{display:inline-block;padding:8px 15px;border-radius:6px;border:1px solid var(--biru);background:var(--biru);color:#fff;font-size:13px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--biru2);text-decoration:none;color:#fff}
.btn-garis{background:#fff;color:var(--biru);border:1px solid var(--garis)}
.btn-garis:hover{background:#f2f6fb;color:var(--biru)}
.btn-emas{background:var(--emas);border-color:var(--emas)}
.btn-emas:hover{background:#a3771f}
.btn-bahaya{background:var(--merah);border-color:var(--merah)}
.btn-sm{padding:5px 10px;font-size:12px}
label{display:block;font-size:12.5px;font-weight:600;margin-bottom:4px;color:#33414f}
input[type=text],input[type=password],input[type=date],input[type=number],input[type=email],select,textarea{
  width:100%;padding:8px 10px;border:1px solid var(--garis);border-radius:6px;font:inherit;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #b9d4ee;border-color:#8fb8dc}
textarea{min-height:74px;resize:vertical}
.medan{margin-bottom:12px}
.medan .nota{font-size:11.5px;color:var(--malap);margin-top:3px}
.flash{padding:11px 14px;border-radius:7px;margin-bottom:14px;font-size:13px;border:1px solid}
.flash-ok{background:#e7f6ee;border-color:#bfe6d0;color:#0b5d3b}
.flash-ralat{background:#fdeceb;border-color:#f5c6c2;color:#8d1f18}
.flash-info{background:#e8f1fb;border-color:#c6dbf1;color:#12497e}
.bar{height:8px;background:#e7ecf2;border-radius:6px;overflow:hidden}
.bar>span{display:block;height:100%;background:var(--emas)}
.kecil{font-size:12px;color:var(--malap)}
.kanan-teks{text-align:right}
.mt{margin-top:14px}
.flex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}
table.skala td{text-align:center}
table.skala td.t{text-align:left}
.item-row td{vertical-align:middle}
.opt{display:inline-flex;align-items:center;gap:5px;margin:0 9px 0 0;font-size:12.5px;color:#3c4a59}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#0f2f52,#1b4a72)}
.login-kad{background:#fff;width:380px;max-width:92vw;border-radius:12px;padding:28px;box-shadow:0 18px 50px rgba(0,0,0,.3)}
.login-kad h1{font-size:17px;margin-bottom:2px}
.login-kad .sub{font-size:12px}
.radar{width:100%;height:auto}
.teknik{border-left:3px solid var(--emas);padding:8px 0 8px 12px;margin-bottom:10px}
.teknik b{display:block;color:var(--biru)}
@media print{
  .topbar,.side,.tiada-cetak{display:none!important}
  .utama{padding:0}
  body{background:#fff}
  .kad{border:none;padding:0;margin:0 0 10px}
  h2{border-bottom:1px solid #999}
  @page{size:A4;margin:14mm 13mm}
}
