@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Lao:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700&display=swap');
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --sb:#0d1117;--sb-a:#2563eb;--sb-h:#1e2433;--sb-t:#94a3b8;
  --pr:#2563eb;--bg:#f1f5f9;--card:#fff;--txt:#1e293b;--mut:#64748b;--bdr:#e2e8f0;
  --grn:#22c55e;--red:#ef4444;--amb:#f59e0b;--cyn:#06b6d4;--pur:#8b5cf6;
  --sbw:220px;
}
body{font-family:'Noto Sans Lao','Inter',sans-serif;background:var(--bg);color:var(--txt);overflow-x:hidden}

/* LOGIN */
#loginPage{min-height:100vh;background:linear-gradient(135deg,#e0e7ff,#f0f9ff 50%,#fef9ee);display:flex;align-items:center;justify-content:center;padding:16px}
.lcard{background:#fff;border-radius:20px;box-shadow:0 20px 60px rgba(0,0,0,.12);padding:40px 36px;width:100%;max-width:420px;text-align:center}
.llogo{margin:0 auto 18px;display:flex;justify-content:center}
.lcard h1{font-size:20px;font-weight:700;color:#1e293b;margin-bottom:4px}
.lcard>p{color:#64748b;font-size:13px;margin-bottom:24px}
.socbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px;border:1.5px solid var(--bdr);border-radius:10px;background:#fff;cursor:pointer;font-size:13.5px;font-weight:500;color:#1e293b;transition:all .2s;margin-bottom:10px;font-family:inherit}
.socbtn:hover{background:#f8fafc;border-color:#cbd5e1}
.divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:#94a3b8;font-size:12px}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--bdr)}
.fgl{text-align:left;margin-bottom:14px}
.fgl label{display:block;font-size:12.5px;font-weight:500;margin-bottom:5px;color:#374151}
.inpw{position:relative}
.inpw svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#94a3b8;width:15px;height:15px}
.inpw input{width:100%;padding:10px 12px 10px 34px;border:1.5px solid var(--bdr);border-radius:9px;font-size:13.5px;outline:none;transition:border-color .2s;font-family:inherit;background:#fafafa}
.inpw input:focus{border-color:var(--pr);background:#fff}
.lbtn{width:100%;padding:12px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border:none;border-radius:10px;font-size:14.5px;font-weight:600;cursor:pointer;margin-top:6px;transition:all .2s;font-family:inherit;box-shadow:0 4px 15px rgba(37,99,235,.35)}
.lbtn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(37,99,235,.45)}
.llinks{display:flex;justify-content:space-between;margin-top:14px;font-size:12.5px}
.llinks a{color:var(--pr);text-decoration:none}
.llinks span{color:#94a3b8}

/* SIDEBAR */
.sidebar{width:var(--sbw);min-height:100vh;background:var(--sb);position:fixed;left:0;top:0;display:flex;flex-direction:column;z-index:200;transition:transform .3s,width .3s;overflow:hidden}
.sidebar.coll{width:52px}
.sbh{padding:12px 10px;border-bottom:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:8px;min-height:60px;overflow:hidden}
.sbt{overflow:hidden;transition:opacity .2s,width .2s;white-space:nowrap}
.sbt span{display:block;font-size:12.5px;font-weight:700;color:#fff;line-height:1.3}
.sbt small{font-size:11px;color:#64748b}
.sidebar.coll .sbt{opacity:0;width:0}
.sidebar.coll .sbLogoSvg{display:none}
.sb-tog{margin-left:auto;background:none;border:none;cursor:pointer;color:#94a3b8;padding:6px;display:flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0;transition:all .2s}
.sb-tog:hover{color:#fff;background:rgba(255,255,255,.1)}
.sidebar.coll .sb-tog{margin:0 auto}
.navsec{padding:10px 0;flex:1;overflow-y:auto;overflow-x:hidden}
.nitem{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;color:var(--sb-t);font-size:13.5px;transition:all .15s;white-space:nowrap;position:relative;border:none;background:none;width:100%;text-align:left;font-family:inherit}
.nitem:hover{background:var(--sb-h);color:#cbd5e1}
.nitem.on{background:var(--sb-a);color:#fff;font-weight:600}
.nitem.on::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:#60a5fa;border-radius:0 2px 2px 0}
.nico{width:18px;height:18px;min-width:18px;flex-shrink:0}
.nlbl{overflow:hidden;transition:opacity .2s;white-space:nowrap}
.sidebar.coll .nlbl{opacity:0;pointer-events:none}
.nttip{display:none;position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);background:#1e293b;color:#fff;padding:4px 10px;border-radius:6px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:9999;box-shadow:0 4px 12px rgba(0,0,0,.2)}
.sidebar.coll .nitem:hover .nttip{display:block}
.sbfoot{padding:10px 0;border-top:1px solid rgba(255,255,255,.06)}

/* OVERLAY */
.sbov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:190}
.sbov.on{display:block}

/* MAIN */
.main{margin-left:var(--sbw);min-height:100vh;transition:margin-left .3s}
.main.exp{margin-left:60px}
.topbar{background:#fff;border-bottom:1px solid var(--bdr);padding:0 24px;height:56px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100;box-shadow:0 1px 4px rgba(0,0,0,.05)}
.hmbg{display:none;background:none;border:none;cursor:pointer;padding:6px;border-radius:7px;color:#374151}
.hmbg:hover{background:#f1f5f9}
.tbtit{font-size:15px;font-weight:600;color:#1e293b}
.tbr{margin-left:auto;display:flex;align-items:center;gap:10px}
.topIconBtn{position:relative;width:36px;height:36px;border-radius:10px;border:1px solid var(--bdr);background:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#374151;transition:all .2s;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.topIconBtn:hover{background:#f8fafc;border-color:#cbd5e1}
.topIconBtn svg{width:18px;height:18px}
.topIconBadge{position:absolute;top:-6px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;border:2px solid #fff}
.uchip{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:#f8fafc;border:1px solid var(--bdr);cursor:pointer;font-size:12px;color:#374151;font-family:inherit}
.uav{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#2563eb,#06b6d4);display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700}
.pi{padding:24px}
@media(max-width:640px){.pi{padding:14px}}

/* STATS */
.sgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:20px}
@media(max-width:1200px){.sgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.sgrid{grid-template-columns:repeat(2,1fr)}}
.scard{background:#fff;border-radius:14px;padding:18px 20px;box-shadow:0 1px 4px rgba(0,0,0,.06);display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #f1f5f9}
.sico{width:46px;height:46px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.sico.bl{background:#dbeafe}.sico.gr{background:#dcfce7}.sico.re{background:#fee2e2}.sico.cy{background:#cffafe}.sico.pu{background:#ede9fe}
.sval{font-size:26px;font-weight:700;color:#1e293b;line-height:1;margin:3px 0}
.slbl{font-size:11px;color:#64748b;margin-top:2px}
.slbl2{font-size:12px;color:#64748b;font-weight:500}

/* DASH GRID */
.dgrid{display:grid;grid-template-columns:1fr 300px;gap:16px}
@media(max-width:1024px){.dgrid{grid-template-columns:1fr}}

/* MAP */
.mcard{background:#fff;border-radius:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #f1f5f9;overflow:hidden}
.mhead{padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f1f5f9;flex-wrap:wrap;gap:8px}
.mhead h3{font-size:13.5px;font-weight:600}
#map{height:420px}
#mapSBox{position:absolute;top:12px;left:50px;z-index:1000;width:320px;max-width:calc(100% - 60px);pointer-events:auto}
#mapSRow{display:flex;align-items:center;background:#fff;border-radius:10px;box-shadow:0 4px 20px rgba(0,0,0,.18);border:1.5px solid #e2e8f0;padding:0 6px 0 12px;gap:6px}
#mapSRow:focus-within{border-color:#2563eb}
#mapSInp{flex:1;border:none;outline:none;font-size:13px;color:#1e293b;font-family:inherit;padding:9px 0;background:transparent}
#mapSInp::placeholder{color:#94a3b8}
#mapSClr{background:none;border:none;cursor:pointer;color:#94a3b8;padding:4px;border-radius:4px;display:none;align-items:center}
#mapSClr:hover{color:#ef4444}
#mapSBtn{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border:none;border-radius:7px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap}
#mapSDrop{background:#fff;border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.15);border:1px solid #e2e8f0;overflow:hidden;margin-top:5px;display:none;max-height:200px;overflow-y:auto}
.mapQuick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.mapQuickBtn{padding:5px 9px;border-radius:999px;border:1px solid #dbe2ea;background:#fff;font-size:11px;font-weight:600;color:#475569;cursor:pointer;font-family:inherit}
.mapQuickBtn:hover{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.msItem{display:flex;align-items:center;gap:9px;padding:9px 12px;font-size:12.5px;color:#374151;border-bottom:1px solid #f1f5f9;cursor:pointer}
.msItem:last-child{border-bottom:none}
.msItem:hover{background:#eff6ff}
.msName{font-weight:600;color:#1e293b;display:block;font-size:12.5px}
.msSub{font-size:11px;color:#94a3b8;display:block}
.msNone{padding:12px;text-align:center;font-size:12.5px;color:#94a3b8}
#mapWrap{position:relative}
#mapLegendBox{position:absolute;top:12px;right:12px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}
#mapLegendBtn{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:9px;border:1px solid rgba(226,232,240,.96);background:rgba(255,255,255,.94);backdrop-filter:blur(8px);box-shadow:0 8px 20px rgba(15,23,42,.12);font-size:11px;font-weight:700;color:#334155;cursor:pointer;font-family:inherit}
#mapLegendBtn:hover{background:#fff}
.mapLegendCard{display:none;pointer-events:auto;width:260px;max-width:min(34vw,260px);background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border:1px solid rgba(226,232,240,.96);border-radius:12px;box-shadow:0 12px 28px rgba(15,23,42,.14);overflow:hidden}
#mapLegendBox.open .mapLegendCard{display:block}
.mapLegendHead{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;padding:9px 11px;background:linear-gradient(135deg,#f8fbff,#eef6ff);border-bottom:1px solid #e2e8f0}
.mapLegendTitle{font-size:11px;font-weight:800;color:#0f172a}
.mapLegendSub{font-size:8.5px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.08em}
.mapLegendTable{display:grid}
.mapLegendRow{display:grid;grid-template-columns:1.15fr .65fr 1.1fr;align-items:center}
.mapLegendRow>div{padding:5px 7px;border-top:1px solid #e5e7eb;font-size:10px;color:#334155}
.mapLegendRow>div:nth-child(2){border-left:1px solid #e5e7eb;border-right:1px solid #e5e7eb;text-align:center}
.mapLegendCols>div{padding:6px 7px;font-size:8.5px;font-weight:800;color:#475569;text-transform:uppercase;letter-spacing:.06em;background:#f8fafc;border-top:none}
.mapLegendSw{display:inline-block;width:100%;height:14px;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(15,23,42,.12)}
@media(max-width:1024px){#map{height:360px}}
@media(max-width:640px){#map{height:260px}}
.mleg{display:flex;flex-wrap:wrap;gap:10px;padding:10px 16px;background:#f8fafc;border-top:1px solid #f1f5f9}
.legit{display:flex;align-items:center;gap:5px;font-size:11px;color:#64748b}
.legdot{width:10px;height:10px;border-radius:50%}
.leg-sig-ex{background:#109c42}
.leg-sig-gd{background:#0f9ed5}
.leg-sig-fa{background:#11b89b}
.leg-sig-wk{background:#b9cf1a}
.leg-sig-vw{background:#3154ff}
.leg-sig-ns{background:#1f2fff}
@media(max-width:900px){
  #mapLegendBox{right:10px;left:auto;top:10px}
  .mapLegendCard{width:230px;max-width:calc(100vw - 40px)}
}
@media(max-width:640px){
  #mapLegendBox{left:12px;right:12px;top:auto;bottom:12px}
  .mapLegendCard{width:100%;max-width:none}
  .mapLegendRow{grid-template-columns:1fr .6fr 1fr}
  .mapLegendRow>div{padding:5px 7px;font-size:9.5px}
  .mapLegendCols>div{font-size:8px}
}

/* STATION LIST */
.slc{background:#fff;border-radius:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #f1f5f9;overflow:hidden;display:flex;flex-direction:column;max-height:520px}
.slch{padding:12px 16px;border-bottom:1px solid #f1f5f9}
.slch h3{font-size:13px;font-weight:600}
.slch p{font-size:11px;color:#64748b;margin-top:2px}
.slcb{flex:1;overflow-y:auto}
.sli{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #f8fafc;cursor:pointer;transition:background .15s}
.sli:hover{background:#f8fafc}
.slav{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#06b6d4);display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:700;flex-shrink:0}
.slinf{flex:1;min-width:0}
.sln{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sll{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slcf{padding:8px 14px;border-top:1px solid #f1f5f9;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#64748b}
.slcpg{display:flex;gap:4px}
.slcpb{width:24px;height:24px;border-radius:6px;border:1px solid var(--bdr);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .15s}
.slcpb:hover{background:var(--pr);color:#fff;border-color:var(--pr)}

/* TABLE */
.tc{background:#fff;border-radius:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #f1f5f9;overflow:hidden}
.ttb{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #f1f5f9;flex-wrap:wrap}
.ttbl{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tsec{font-size:13px;font-weight:600;color:#1e293b}
.tcnt{background:#f1f5f9;color:#64748b;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}
.sbox{display:flex;align-items:center;gap:8px;border:1px solid var(--bdr);border-radius:8px;padding:6px 11px;background:#fafafa;min-width:200px}
.sbox input{border:none;outline:none;background:none;font-size:13px;width:100%;font-family:inherit}
.sbox svg{color:#94a3b8;width:13px;height:13px;flex-shrink:0}
.twrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
thead th{background:#f8fafc;padding:9px 14px;text-align:left;font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid #f1f5f9;white-space:nowrap}
tbody tr{border-bottom:1px solid #f8fafc;transition:background .15s}
tbody tr:hover{background:#fafcff}
tbody td{padding:10px 14px;font-size:13px;color:#374151}
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600}
.bgr{background:#dcfce7;color:#16a34a}.brd{background:#fee2e2;color:#dc2626}
.bbl{background:#dbeafe;color:#2563eb}.bpu{background:#ede9fe;color:#7c3aed}
.bam{background:#fef3c7;color:#d97706}.bcy{background:#cffafe;color:#0891b2}
.bex{background:#d8ffe2;color:#109c42;box-shadow:inset 0 0 0 1px rgba(16,156,66,.16)}
.bgd{background:#dff9ff;color:#0f9ed5;box-shadow:inset 0 0 0 1px rgba(15,158,213,.16)}
.bfa{background:#e5fff1;color:#11b89b;box-shadow:inset 0 0 0 1px rgba(17,184,155,.16)}
.bwk{background:#eef7a8;color:#6d8b00;box-shadow:inset 0 0 0 1px rgba(109,139,0,.18)}
.bvw{background:#dce7ff;color:#3154ff;box-shadow:inset 0 0 0 1px rgba(49,84,255,.16)}
.bns{background:#e6ebff;color:#1f2fff;box-shadow:inset 0 0 0 1px rgba(31,47,255,.16)}
.abtns{display:flex;gap:5px}
.abtn{width:28px;height:28px;border-radius:6px;border:1px solid var(--bdr);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#64748b;transition:all .15s}
.abtn:hover.edi{background:#dbeafe;border-color:#93c5fd;color:var(--pr)}
.abtn:hover.del{background:#fee2e2;border-color:#fca5a5;color:var(--red)}
.pgn{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid #f1f5f9;font-size:12px;color:#64748b;flex-wrap:wrap;gap:8px}
.pgbs{display:flex;gap:3px;flex-wrap:wrap}
.pgb{min-width:30px;height:30px;padding:0 9px;border-radius:6px;border:1px solid var(--bdr);background:#fff;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:all .15s;font-family:inherit;color:#374151}
.pgb:hover,.pgb.on{background:var(--pr);color:#fff;border-color:var(--pr)}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:none;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit;white-space:nowrap}
.btn svg{width:14px;height:14px}
.bpr{background:var(--pr);color:#fff;box-shadow:0 2px 8px rgba(37,99,235,.3)}
.bpr:hover{background:#1d4ed8;transform:translateY(-1px)}
.bol{background:#fff;color:#374151;border:1.5px solid var(--bdr)}
.bol:hover{background:#f8fafc}
.bgr2{background:#22c55e;color:#fff}.bgr2:hover{background:#16a34a}
.brd2{background:#ef4444;color:#fff}.brd2:hover{background:#dc2626}
.bsm{padding:6px 11px;font-size:12px;border-radius:7px}

/* FORM */
.fmc{background:#fff;border-radius:14px;box-shadow:0 1px 4px rgba(0,0,0,.06);border:1px solid #f1f5f9;max-width:680px;margin:0 auto}
.fmch{padding:16px 22px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:10px}
.fmch h3{font-size:14.5px;font-weight:600}
.fmcb{padding:22px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.frow3{grid-template-columns:1fr 1fr 1fr}
.frow1{grid-template-columns:1fr}
@media(max-width:640px){.frow,.frow3{grid-template-columns:1fr}}
.fg{display:flex;flex-direction:column;gap:5px}
.fg label{font-size:12px;font-weight:500;color:#374151}
.fg label span{color:var(--red)}
.fg input,.fg select,.fg textarea{padding:8px 11px;border:1.5px solid var(--bdr);border-radius:8px;font-size:13px;outline:none;transition:border-color .2s;font-family:inherit;background:#fafafa;color:#1e293b}
.fg input:focus,.fg select:focus,.fg textarea:focus{border-color:var(--pr);background:#fff}
.fg textarea{resize:vertical;min-height:76px}
.fmcf{padding:14px 22px;border-top:1px solid #f1f5f9;display:flex;justify-content:flex-end;gap:10px}

/* TABS */
.tbbar{display:flex;gap:3px;background:#f1f5f9;padding:3px;border-radius:9px;width:fit-content;margin-bottom:18px;flex-wrap:wrap}
.tbbtn{padding:6px 14px;border-radius:7px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:500;color:#64748b;transition:all .2s;font-family:inherit}
.tbbtn.on{background:#fff;color:#1e293b;font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.tbcon{display:none}
.tbcon.on{display:block}

/* REPORT */
.reportHero{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.reportHeroCard{background:linear-gradient(135deg,#ffffff,#f8fbff);border:1px solid #e2e8f0;border-radius:16px;padding:18px 20px;box-shadow:0 10px 24px rgba(15,23,42,.06)}
.reportHeroLabel{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.08em}
.reportHeroValue{font-size:32px;font-weight:800;line-height:1;color:#0f172a;margin:10px 0 6px}
.reportHeroMeta{font-size:12px;color:#64748b}
.reportHeroSignals{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.reportChip{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#f8fafc;border:1px solid #e2e8f0;font-size:11px;font-weight:700;color:#334155}
.reportChip strong{font-size:12px}
.reportActions{display:flex;gap:8px;flex-wrap:wrap}
.reportTtb{align-items:flex-end}
.reportHeadLeft{display:flex;flex-direction:column;gap:8px;flex:1;min-width:280px}
.reportHeadLeft .tsec{display:block}
.reportHeadLeft .reportTabFilter{min-width:unset}
.reportRangeBadge{display:inline-flex;align-items:center;width:fit-content;padding:6px 10px;border-radius:999px;background:#e0f2fe;color:#075985;border:1px solid #bae6fd;font-size:11px;font-weight:800;letter-spacing:.03em}
.reportQuickBtns{display:flex;gap:8px;flex-wrap:nowrap;align-items:center;flex:0 0 auto}
.reportQuickBtns .btn{padding:6px 10px;font-size:12px;white-space:nowrap}
@media(max-width:900px){.reportHero{grid-template-columns:1fr}}

/* REPORT FILTER */
.reportFilterBar{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:14px 16px;margin-bottom:16px;box-shadow:0 8px 20px rgba(15,23,42,.05)}
.reportFilterHead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.reportFilterInputs{display:flex;flex-wrap:nowrap;gap:10px;align-items:center;width:100%}
.reportFilterInputs input,.reportFilterInputs select{padding:9px 11px;border:1.5px solid var(--bdr);border-radius:9px;font-size:13px;font-family:inherit;background:#fafafa;color:#1e293b}
.reportTabFilter{display:flex;flex-direction:column;gap:6px;width:100%;min-width:0}
.reportHeadLeft .reportTabFilter{align-items:stretch}
.reportTabFilterLabel{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.06em}
.reportFilterInputs input[type="date"],.reportFilterInputs input[type="month"]{min-width:138px}
.reportFilterInputs select{min-width:140px}

/* APPROVAL */
.approvalBtns{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.approvalBtn{padding:8px 12px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;font-size:12px;font-weight:700;color:#475569;cursor:pointer;font-family:inherit}
.approvalBtn.on{box-shadow:0 8px 16px rgba(37,99,235,.18)}
.approvalBtn.req.on{background:#d97706;color:#fff;border-color:#d97706}
.approvalBtn.acc.on{background:#16a34a;color:#fff;border-color:#16a34a}
.approvalBtn.none.on{background:#64748b;color:#fff;border-color:#64748b}
.bsl{background:#e2e8f0;color:#475569}
.reportActionGroup{display:flex;gap:6px;flex-wrap:wrap}
.reportActionBtn{padding:7px 12px;border-radius:999px;border:1px solid transparent;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:transform .12s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease;color:#fff;box-shadow:0 8px 18px rgba(15,23,42,.08)}
.reportActionBtn:hover{transform:translateY(-1px)}
.reportActionBtn.ok{background:#16a34a;border-color:#16a34a}
.reportActionBtn.ok:hover{background:#15803d}
.reportActionBtn.warn{background:#d97706;border-color:#d97706}
.reportActionBtn.warn:hover{background:#b45309}
.reportActionBtn.bad{background:#ef4444;border-color:#ef4444}
.reportActionBtn.bad:hover{background:#dc2626}

/* NOTIFICATIONS */
.notifPanel{position:fixed;top:66px;right:18px;width:min(390px,calc(100vw - 24px));max-height:70vh;background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 24px 60px rgba(15,23,42,.18);z-index:1800;overflow:hidden;display:none}
.notifPanel.open{display:block}
.notifPanelHead{padding:14px 16px;border-bottom:1px solid #eef2f7;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:linear-gradient(135deg,#f8fbff,#eef6ff)}
.notifPanelTitle{font-size:14px;font-weight:800;color:#0f172a}
.notifPanelSub{font-size:11px;color:#64748b;margin-top:2px}
.notifCloseBtn{border:1px solid #cbd5e1;background:#fff;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:700;cursor:pointer;color:#475569}
.notifPanelList{max-height:calc(70vh - 64px);overflow-y:auto;padding:10px}
.notifItem{width:100%;text-align:left;border:1px solid #e2e8f0;background:#fff;border-radius:14px;padding:12px 12px 11px;margin-bottom:8px;cursor:pointer;transition:all .15s}
.notifItem:hover{border-color:#bfdbfe;background:#f8fbff}
.notifItem.unread{box-shadow:inset 3px 0 0 #2563eb}
.notifTop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.notifTag{font-size:10px;font-weight:800;color:#2563eb;text-transform:uppercase;letter-spacing:.06em}
.notifTime{font-size:10px;color:#94a3b8}
.notifTitle{font-size:13px;font-weight:800;color:#0f172a;margin-bottom:4px}
.notifMsg{font-size:12px;color:#475569;line-height:1.45}
.notifEmpty{padding:24px 12px;text-align:center;color:#94a3b8;font-size:12px}

/* USER STATS / LOGS */
.usrStatList{display:grid;gap:8px;margin-top:12px}
.usrStatRow{display:grid;grid-template-columns:1.7fr .7fr 1fr;gap:10px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;font-size:12px;align-items:center}
.usrStatRow strong{color:#0f172a}
.usrStatRow span{color:#64748b}

/* MODAL FORM */
#pwModal .mbox input{width:100%;padding:10px 12px;border:1.5px solid var(--bdr);border-radius:9px;background:#fafafa;font-family:inherit;font-size:13px}
#pwModal .mbox input:focus{outline:none;border-color:var(--pr);background:#fff}

@media(max-width:640px){
  .notifPanel{right:12px;left:12px;width:auto}
  .usrStatRow{grid-template-columns:1fr}
  .reportFilterInputs{flex-wrap:wrap}
  .reportFilterInputs input,.reportFilterInputs select{width:100%}
  .reportQuickBtns{width:100%;flex-wrap:wrap}
}

/* PAGE */
.page{display:none}
.page.on{display:block}
.ph{margin-bottom:22px}
.ph h1{font-size:22px;font-weight:700;color:#1e293b;margin-bottom:4px}
.ph p{font-size:13px;color:#64748b}
.phr{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.phr h1{font-size:22px;font-weight:700;color:#1e293b;margin-bottom:2px}
.phr p{font-size:12.5px;color:#64748b}

/* MODAL */
.mov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center;backdrop-filter:blur(4px);padding:16px}
.mov.on{display:flex}
.mbox{background:#fff;border-radius:16px;box-shadow:0 24px 80px rgba(0,0,0,.2);padding:26px;max-width:380px;width:100%;text-align:center}
.mbox h3{font-size:17px;font-weight:700;margin-bottom:6px}
.mbox p{font-size:13px;color:#64748b;margin-bottom:20px}
.mbtns{display:flex;gap:10px;justify-content:center}

/* TOAST */
.tst{position:fixed;bottom:20px;right:20px;background:#1e293b;color:#fff;padding:11px 18px;border-radius:10px;font-size:13px;font-weight:500;box-shadow:0 8px 32px rgba(0,0,0,.2);z-index:2000;transform:translateY(120px);transition:transform .3s;display:flex;align-items:center;gap:8px;max-width:320px}
.tst.on{transform:translateY(0)}
.tst.success{border-left:4px solid #22c55e}
.tst.error{border-left:4px solid #ef4444}


/* PERFORMANCE */
.twrap{contain:layout style;will-change:auto}
table{table-layout:fixed}

/* DARK */
body.dark{background:#0f172a;color:#f1f5f9}
body.dark .sidebar{background:#080d14}
body.dark .topbar{background:#1e293b;border-color:#334155}
body.dark .tbtit{color:#f1f5f9}
body.dark .scard,.mcard,.slc,.tc,.fmc,.mbox{background:inherit}
body.dark .scard,body.dark .mcard,body.dark .slc,body.dark .tc,body.dark .fmc,body.dark .mbox{background:#1e293b;border-color:#334155}
body.dark thead th{background:#0f172a;color:#94a3b8}
body.dark tbody td{color:#cbd5e1}
body.dark tbody tr:hover{background:#1a2744}
body.dark .ph h1,body.dark .phr h1,body.dark .tsec{color:#f1f5f9}
body.dark .fg input,body.dark .fg select,body.dark .fg textarea{background:#0f172a;border-color:#334155;color:#f1f5f9}
body.dark .sbox{background:#0f172a;border-color:#334155}
body.dark .sbox input{color:#f1f5f9}
body.dark .tbbar{background:#0f172a}
body.dark .tbbtn.on{background:#1e293b;color:#f1f5f9}
body.dark .bol{background:#1e293b;color:#cbd5e1;border-color:#334155}
body.dark .abtn{background:#0f172a;border-color:#334155;color:#94a3b8}
body.dark .pgb{background:#0f172a;border-color:#334155;color:#cbd5e1}
body.dark .sval{color:#f1f5f9}
body.dark .slbl2{color:#94a3b8}
body.dark .slch h3,body.dark .fmch h3,body.dark .mhead h3{color:#f1f5f9}
body.dark .tcnt{background:#334155;color:#94a3b8}
body.dark .slcpb{background:#0f172a;border-color:#334155}
body.dark .mleg{background:#0f172a}
body.dark .mapLegendCard{background:rgba(15,23,42,.92);border-color:#334155}
body.dark #mapLegendBtn{background:rgba(15,23,42,.92);border-color:#334155;color:#e2e8f0}
body.dark #mapLegendBtn:hover{background:#111827}
body.dark .mapLegendHead{background:linear-gradient(135deg,#172033,#0f172a);border-bottom-color:#334155}
body.dark .mapLegendTitle{color:#f8fafc}
body.dark .mapLegendSub{color:#94a3b8}
body.dark .mapLegendRow>div{color:#cbd5e1;border-top-color:#334155}
body.dark .mapLegendRow>div:nth-child(2){border-left-color:#334155;border-right-color:#334155}
body.dark .mapLegendCols>div{background:#111827;color:#94a3b8}
body.dark .uchip{background:#334155;border-color:#475569;color:#cbd5e1}
body.dark #map{filter:brightness(.8) saturate(.9)}
body.dark .hmbg{color:#94a3b8}
body.dark .socbtn{background:#1e293b;border-color:#334155;color:#f1f5f9}
body.dark .lcard{background:#1e293b}
body.dark .lcard h1{color:#f1f5f9}
body.dark .inpw input{background:#0f172a;border-color:#334155;color:#f1f5f9}
body.dark .reportHeroCard{background:linear-gradient(135deg,#1e293b,#172033);border-color:#334155}
body.dark .reportHeroValue{color:#f8fafc}
body.dark .reportHeroMeta,body.dark .reportHeroLabel{color:#94a3b8}
body.dark .reportChip{background:#0f172a;border-color:#334155;color:#cbd5e1}
body.dark .reportRangeBadge{background:#0f172a;border-color:#334155;color:#93c5fd}
body.dark .topIconBtn{background:#1e293b;border-color:#334155;color:#cbd5e1}
body.dark .topIconBtn:hover{background:#111827}
body.dark .notifPanel{background:#1e293b;border-color:#334155}
body.dark .notifPanelHead{background:linear-gradient(135deg,#172033,#0f172a);border-bottom-color:#334155}
body.dark .notifPanelTitle{color:#f8fafc}
body.dark .notifPanelSub{color:#94a3b8}
body.dark .notifItem{background:#0f172a;border-color:#334155}
body.dark .notifItem:hover{background:#111827;border-color:#475569}
body.dark .notifTitle{color:#f8fafc}
body.dark .notifMsg,body.dark .notifTime{color:#94a3b8}
body.dark .reportFilterBar{background:#1e293b;border-color:#334155}
body.dark .reportFilterInputs input,body.dark .reportFilterInputs select{background:#0f172a;border-color:#334155;color:#f1f5f9}
body.dark .reportTabFilterLabel{color:#94a3b8}
body.dark .approvalBtn{background:#0f172a;border-color:#334155;color:#cbd5e1}
body.dark .approvalBtn.req.on{background:#d97706;border-color:#d97706;color:#fff}
body.dark .approvalBtn.acc.on{background:#16a34a;border-color:#16a34a;color:#fff}
body.dark .approvalBtn.none.on{background:#64748b;border-color:#64748b;color:#fff}
body.dark .bsl{background:#334155;color:#cbd5e1}
body.dark .reportActionBtn.ok{background:#14532d;border-color:#166534;color:#dcfce7}
body.dark .reportActionBtn.warn{background:#92400e;border-color:#b45309;color:#fef3c7}
body.dark .reportActionBtn.bad{background:#7f1d1d;border-color:#991b1b;color:#fee2e2}
body.dark .usrStatRow{background:#0f172a;border-color:#334155}
body.dark .usrStatRow strong{color:#f8fafc}
body.dark .usrStatRow span{color:#94a3b8}

/* SCROLLBAR */
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}
body.dark ::-webkit-scrollbar-thumb{background:#475569}

/* RESPONSIVE */
@media(max-width:900px){
  .sidebar{transform:translateX(-100%);width:220px !important}
  .sidebar.mob{transform:translateX(0)}
  .main{margin-left:0 !important}
  .hmbg{display:flex}
}
@media(max-width:640px){
  .lcard{padding:28px 20px}
  .sval{font-size:20px}
  .ph h1,.phr h1{font-size:18px}
  .ttb{flex-direction:column;align-items:stretch}
  .sbox{min-width:unset;width:100%}
}
