:root{
  --plane:#f3f6fc; --surface:#ffffff;
  --ink:#2f3a4a; --ink2:#65718a; --muted:#9aa5b8;
  --grid:#eef1f8; --line:#e0e6f1; --border:rgba(47,58,74,.08);
  --brand:#6b7ce8; --brand-2:#8b9bf2; --brand-lembut:#eef1ff;
  /* status pastel */
  --merah:#f2879b; --kuning:#f4c95d; --hijau:#66c9a0;
  --merah-ink:#d24d6c; --kuning-ink:#b3821f; --hijau-ink:#2f9b74;
  --merah-lembut:#fdeef1; --kuning-lembut:#fdf6e3; --hijau-lembut:#e8f8f1;
  --radius:16px;
  --bayang:0 6px 22px rgba(47,58,74,.07);
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--plane);line-height:1.5}
a{color:var(--brand-2)}
h1{font-size:1.4rem;margin:.2rem 0}
.sub{color:var(--ink2);margin:.1rem 0 1rem}

/* ---- Login ---- */
.pusat-skrin{min-height:100vh;display:grid;place-items:center;
  background:linear-gradient(135deg,#c3d5ff 0%,#dcd2ff 50%,#c8ecff 100%)}
.kad-login{background:var(--surface);padding:2.2rem;border-radius:var(--radius);width:min(92vw,380px);
  box-shadow:0 20px 55px rgba(90,105,180,.22);text-align:center}
.jata{font-weight:800;letter-spacing:2px;color:var(--brand);font-size:.8rem;margin-bottom:.4rem}
.kad-login label{display:block;text-align:left;margin:.8rem 0;font-size:.85rem;color:var(--ink2);font-weight:600}
.kad-login input{width:100%;padding:.7rem .8rem;margin-top:.3rem;border:1px solid var(--line);
  border-radius:9px;font-size:1rem;font-family:inherit}
.btn-utama{width:100%;padding:.8rem;background:var(--brand);color:#fff;border:0;border-radius:9px;
  font-size:1rem;font-weight:700;cursor:pointer;margin-top:.6rem}
.btn-utama:hover{background:var(--brand-2)}
.nota-kecil{font-size:.75rem;color:var(--muted);margin-top:1rem}
.amaran{background:#fdecec;color:#a11;padding:.6rem .8rem;border-radius:8px;font-size:.85rem;border:1px solid #f4c2c2}
.berjaya{background:#e8f6e8;color:#0a6b0a;padding:.9rem 1rem;border-radius:10px;border:1px solid #bfe6bf}

/* ---- Topbar ---- */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:var(--surface);padding:.7rem 1.2rem;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1000}
.topbar .tajuk{font-weight:700}
.topbar .tajuk small{display:block;color:var(--muted);font-weight:500;font-size:.72rem}
.topbar-kanan{display:flex;align-items:center;gap:.9rem;font-size:.85rem;color:var(--ink2)}
.btn-keluar{color:var(--merah-ink);text-decoration:none;font-weight:600}

/* ---- Dashboard shell ---- */
.wrap{max-width:1500px;margin:0 auto;padding:1.1rem}
.kpi-baris{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.9rem;margin-bottom:1rem}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;
  box-shadow:var(--bayang);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--brand-2)}
.kpi .angka{font-size:2rem;font-weight:800;line-height:1;letter-spacing:-.02em;color:var(--ink)}
.kpi .label{color:var(--ink2);font-size:.82rem;margin-top:.35rem;font-weight:600}
.kpi .kecil{color:var(--muted);font-size:.72rem;margin-top:.2rem}
.kpi.brand{background:var(--brand-lembut)} .kpi.brand::before{background:var(--brand)}
.kpi.hijau{background:var(--hijau-lembut)} .kpi.hijau::before{background:var(--hijau)} .kpi.hijau .angka{color:var(--hijau-ink)}
.kpi.merah{background:var(--merah-lembut)} .kpi.merah::before{background:var(--merah)} .kpi.merah .angka{color:var(--merah-ink)}

.grid-utama{display:grid;grid-template-columns:2fr 1fr;gap:1rem}
@media(max-width:980px){.grid-utama{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--bayang)}
.panel h2{font-size:.95rem;margin:0;padding:.85rem 1.1rem;border-bottom:1px solid var(--grid);color:var(--ink)}
.panel .isi{padding:1rem 1.1rem}

#peta{height:620px;width:100%}
@media(max-width:980px){#peta{height:440px}}

/* Legend peta */
.legend{display:flex;gap:1rem;flex-wrap:wrap;padding:.6rem 1.1rem;font-size:.8rem;color:var(--ink2);border-top:1px solid var(--grid)}
.legend .dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:.35rem;vertical-align:middle;border:1px solid rgba(0,0,0,.25)}
.dot.merah{background:var(--merah)} .dot.kuning{background:var(--kuning)} .dot.hijau{background:var(--hijau)}

/* Senarai belum dipantau */
.senarai{max-height:300px;overflow:auto}
.senarai table{width:100%;border-collapse:collapse;font-size:.82rem}
.senarai th,.senarai td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--grid)}
.senarai th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--surface)}
.pil{display:inline-block;padding:.1rem .5rem;border-radius:20px;font-size:.72rem;font-weight:700}
.pil.merah{background:var(--merah-lembut);color:var(--merah-ink)} .pil.kuning{background:var(--kuning-lembut);color:var(--kuning-ink)} .pil.hijau{background:var(--hijau-lembut);color:var(--hijau-ink)}

.bar-daerah{margin:.5rem 0}
.bar-daerah .row{display:flex;align-items:center;gap:.6rem;margin:.35rem 0;font-size:.8rem}
.bar-daerah .nama{width:120px;color:var(--ink2)}
.bar-daerah .track{flex:1;background:var(--grid);border-radius:6px;height:14px;overflow:hidden}
.bar-daerah .fill{height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-2));border-radius:6px}
.bar-daerah .val{width:42px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink2)}

/* Tooltip peta */
.leaflet-tooltip.tt{font-family:var(--sans);font-size:.8rem;border:0;box-shadow:0 6px 18px rgba(0,0,0,.18);border-radius:8px;padding:.5rem .65rem}
.tt b{display:block;font-size:.85rem;margin-bottom:.15rem}
.tt .kira{font-weight:800}

/* ---- Nav admin ---- */
.nav-admin{display:flex;gap:.3rem}
.nav-admin a{padding:.4rem .9rem;border-radius:8px;text-decoration:none;color:var(--ink2);font-weight:600;font-size:.88rem}
.nav-admin a:hover{background:var(--grid)}
.nav-admin a.aktif{background:var(--brand);color:#fff}

/* ---- Penapis ---- */
.penapis-bar{display:flex;flex-wrap:wrap;gap:.9rem;align-items:end;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);padding:.8rem 1.1rem;margin-bottom:1rem}
.penapis-bar label{font-size:.78rem;color:var(--ink2);font-weight:600;display:flex;flex-direction:column;gap:.25rem}
.penapis-bar select,.penapis-bar input{padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;font-family:inherit;font-size:.9rem}
.btn-kecil{padding:.55rem .9rem;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;font-weight:600;font-size:.85rem}
.btn-kecil:hover{background:var(--grid)}
.btn-kecil.brand{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---- Jadual rekod ---- */
.jadual-rekod{width:100%;border-collapse:collapse;font-size:.85rem}
.jadual-rekod th,.jadual-rekod td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--grid);vertical-align:top}
.jadual-rekod th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--surface);z-index:1}
.jadual-rekod tbody tr:hover{background:var(--brand-lembut)}
.jadual-rekod .thumb{width:44px;height:44px;object-fit:cover;border-radius:6px;border:1px solid var(--border);margin-right:3px}
.link-pdf{color:var(--brand-2);font-weight:600;text-decoration:none;white-space:nowrap}
.kosong{padding:2rem;text-align:center;color:var(--muted)}
.baris-atas{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}

/* ---- Carta trend ---- */
.carta-wrap{padding:1rem 1.1rem .4rem}
.carta-svg{width:100%;height:auto;max-height:280px;display:block;overflow:visible}
.carta-svg .grid-line{stroke:var(--grid);stroke-width:1}
.carta-svg .area{fill:url(#gradTrend);opacity:.9}
.carta-svg .garis{fill:none;stroke:var(--brand);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.carta-svg .titik{fill:#fff;stroke:var(--brand);stroke-width:2}
.carta-svg .lbl{fill:var(--muted);font-size:10px;font-family:var(--sans)}
.carta-svg .val{fill:var(--ink);font-size:10px;font-weight:700;font-family:var(--sans);text-anchor:middle}
.carta-kosong{padding:2rem;text-align:center;color:var(--muted)}

/* ---- Pengurusan pengguna ---- */
.dua-lajur{display:grid;grid-template-columns:1.3fr 1fr;gap:1rem;align-items:start}
@media(max-width:900px){.dua-lajur{grid-template-columns:1fr}}
.borang-akaun{display:flex;flex-direction:column;gap:.8rem}
.borang-akaun label{font-size:.8rem;font-weight:600;color:var(--ink2);display:flex;flex-direction:column;gap:.3rem}
.borang-akaun input,.borang-akaun textarea{padding:.6rem .7rem;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:.92rem;width:100%}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--brand-lembut);color:var(--brand);
  display:inline-grid;place-items:center;font-weight:800;font-size:.85rem}
.tindakan{display:flex;gap:.4rem;flex-wrap:wrap}
.btn-mini{padding:.32rem .6rem;border-radius:7px;border:1px solid var(--line);background:#fff;cursor:pointer;
  font-size:.76rem;font-weight:600;color:var(--ink2);text-decoration:none;display:inline-block}
.btn-mini:hover{background:var(--grid)}
.btn-mini.bahaya{color:var(--merah-ink);border-color:#f6cdd6}
.btn-mini.bahaya:hover{background:var(--merah-lembut)}
.rozet{display:inline-block;padding:.12rem .5rem;border-radius:20px;font-size:.7rem;font-weight:700;background:var(--brand-lembut);color:var(--brand)}

/* ---- Penjenamaan ---- */
.jenama{display:flex;align-items:center;gap:.7rem}
.logo{height:40px;width:auto;flex:none}
.logo-login{height:80px;width:auto;margin-bottom:.6rem}
.kaki-jpn{max-width:1500px;margin:1.5rem auto .5rem;padding:1rem 1.2rem;display:flex;align-items:center;gap:.8rem;
  color:var(--ink2);font-size:.8rem;border-top:1px solid var(--grid)}
.kaki-jpn .logo-kecil{height:34px;width:auto;opacity:.95}

/* ---- Panel lewat dipantau ---- */
.pil-hari{display:inline-block;padding:.1rem .5rem;border-radius:20px;font-size:.72rem;font-weight:700;background:var(--kuning-lembut);color:var(--kuning-ink)}
.pil-hari.bahaya{background:var(--merah-lembut);color:var(--merah-ink)}

/* ---- Butang mini tindakan jadual ---- */
.tindakan-rekod{display:flex;gap:.35rem;white-space:nowrap}

/* ---- Modal sejarah sekolah ---- */
.modal{position:fixed;inset:0;background:rgba(30,40,60,.45);display:none;align-items:center;justify-content:center;z-index:2000;padding:1rem}
.modal.buka{display:flex}
.modal-kotak{background:var(--surface);border-radius:var(--radius);max-width:680px;width:100%;max-height:85vh;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.3)}
.modal-kepala{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.1rem 1.3rem;border-bottom:1px solid var(--grid);position:sticky;top:0;background:var(--surface)}
.modal-kepala h3{margin:0;font-size:1.05rem;color:var(--ink)}
.modal-kepala small{color:var(--muted)}
.modal-tutup{border:0;background:var(--grid);width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:1.1rem;color:var(--ink2);flex:none}
.modal-isi{padding:1rem 1.3rem}
.rekod-item{border:1px solid var(--grid);border-radius:12px;padding:.8rem .9rem;margin-bottom:.8rem}
.rekod-item .atas{display:flex;justify-content:space-between;gap:.8rem;flex-wrap:wrap;margin-bottom:.4rem}
.rekod-item .tarikh{font-weight:700;color:var(--brand)}
.rekod-item .meta{color:var(--ink2);font-size:.85rem}
.rekod-item .gmbr{display:flex;gap:.35rem;margin-top:.5rem;flex-wrap:wrap}
.rekod-item .gmbr img{width:56px;height:56px;object-fit:cover;border-radius:7px;border:1px solid var(--border)}
.klik-hint{font-size:.72rem;color:var(--muted)}

/* ---- Medan auto/readonly (tarikh & masa telus) ---- */
.auto-medan{background:var(--grid)!important;color:var(--ink2)!important;cursor:not-allowed;font-weight:600}
.borang-akaun select{padding:.6rem .7rem;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:.92rem;width:100%;background:#fff}
