:root{
  --bg:#f5f6f8; --surface:#fff; --surface2:#fafbfc;
  --line:#e8eaed; --line2:#dfe2e6;
  --tx:#16191d; --tx2:#5b6470; --tx3:#8b94a1;
  --pri:#e35205; --pri-d:#c44404; --pri-soft:#fff2ea;
  --ok:#0f9d58; --ok-soft:#e9f7ef;
  --dg:#d93025; --dg-soft:#fdecea;
  --wn:#f0a500;
  --tot:#fffaf3;
  --r:10px; --r-lg:14px;
  --sh:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.04);
  --sh-lg:0 10px 32px rgba(16,24,40,.16);
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--tx);
  font-family:'Sarabun',-apple-system,BlinkMacSystemFont,'Segoe UI',Tahoma,sans-serif;
  font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--pri);text-decoration:none}
.hide{display:none!important}
.grow{flex:1}
.muted{color:var(--tx3)}
.red{color:var(--dg)}

/* ── top bar ── */
#top{position:sticky;top:0;z-index:60;height:54px;display:flex;align-items:center;gap:4px;
  padding:0 14px;background:#14171c;color:#c8cdd6;box-shadow:0 1px 0 rgba(255,255,255,.06)}
#top .brand{display:flex;align-items:center;gap:9px;color:#fff;font-weight:600;font-size:15px;
  padding-right:16px;margin-right:6px;white-space:nowrap}
#top .brand .mk{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:15px;
  background:linear-gradient(135deg,var(--pri),#f5a623);box-shadow:0 2px 8px rgba(227,82,5,.4)}
#top .navbtn{display:flex;align-items:center;gap:6px;padding:7px 11px;border-radius:8px;cursor:pointer;
  white-space:nowrap;font-size:13.5px;transition:background .13s,color .13s}
#top .navbtn:hover{background:rgba(255,255,255,.09);color:#fff}
#top .navbtn.on{background:rgba(255,255,255,.13);color:#fff;font-weight:600}
#top .right{margin-left:auto;display:flex;align-items:center;gap:2px}
#top .right .navbtn{font-size:13px;color:#9aa3b0}

/* ── layout ── */
#wrap{display:flex;min-height:calc(100vh - 54px);align-items:stretch}
#side{width:236px;flex:0 0 236px;background:var(--surface);border-right:1px solid var(--line);padding:10px 0 20px}
#side .grp{padding:12px 18px 6px;font-size:11px;font-weight:600;letter-spacing:.07em;
  text-transform:uppercase;color:var(--tx3)}
#side .it{display:flex;align-items:center;gap:11px;margin:2px 10px;padding:9px 12px;border-radius:9px;
  cursor:pointer;color:var(--tx2);transition:background .13s,color .13s}
#side .it .ic{width:22px;text-align:center;font-size:15px;flex:0 0 22px}
#side .it .tx{min-width:0;font-weight:500}
#side .it small{display:block;font-size:11px;font-weight:400;color:var(--tx3);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#side .it:hover{background:var(--surface2);color:var(--tx)}
#side .it.on{background:var(--pri-soft);color:var(--pri-d);font-weight:600}
#side .it.on small{color:#b0642f}
#main{flex:1;min-width:0;padding:20px 24px 40px}

/* ── tabs ── */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:-2px 0 18px;flex-wrap:wrap}
.tab{padding:9px 15px;cursor:pointer;color:var(--tx2);border-bottom:2px solid transparent;
  margin-bottom:-1px;border-radius:8px 8px 0 0;font-weight:500;transition:color .13s,background .13s}
.tab:hover{background:var(--surface2);color:var(--tx)}
.tab.on{color:var(--pri-d);border-bottom-color:var(--pri);font-weight:600}

/* ── panel ── */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--sh);margin-bottom:16px;overflow:hidden}
.panel>h3{margin:0;padding:13px 18px;font-size:13.5px;font-weight:600;
  border-bottom:1px solid var(--line);background:var(--surface2)}
.panel>.body{padding:16px 18px}
.row{display:flex;flex-wrap:wrap;gap:8px 16px}

/* ── form ── */
.fld{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.fld>label{font-size:12px;font-weight:600;color:var(--tx2)}
input[type=text],input[type=number],input[type=date],input[type=password],select,textarea{
  height:36px;padding:0 11px;border:1px solid var(--line2);border-radius:9px;background:#fff;
  color:var(--tx);font-family:inherit;font-size:13.5px;transition:border-color .13s,box-shadow .13s}
textarea{height:auto;padding:9px 11px}
select{padding-right:8px;cursor:pointer}
input:hover,select:hover{border-color:#c3c8ce}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--pri);box-shadow:0 0 0 3px rgba(227,82,5,.13)}
input[readonly]{background:var(--surface2);color:var(--tx2);border-color:var(--line)}
input[readonly]:focus{border-color:var(--line);box-shadow:none}
.w60{width:64px}.w80{width:86px}.w110{width:112px}.w150{width:152px}
.w200{width:200px}.w280{width:280px}.w360{width:360px}.wfull{width:100%}
.chk{display:inline-flex;align-items:center;gap:7px;font-weight:500;cursor:pointer;
  color:var(--tx2);padding:4px 0}
.chk input{width:16px;height:16px;accent-color:var(--pri);cursor:pointer}

/* ── ฟอร์มแบบตาราง 12 ช่อง ── */
.fgrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px 14px}
.fgrid>.fld{margin:0;min-width:0;grid-column:span 3}
.fgrid>.fld>input,.fgrid>.fld>select,.fgrid>.fld>textarea{width:100%}
.fgrid input[type=number]{text-align:right}
.fgrid textarea{min-height:62px;resize:vertical;line-height:1.5}
.fgrid>.fld.c2{grid-column:span 2}
.fgrid>.fld.c3{grid-column:span 3}
.fgrid>.fld.c4{grid-column:span 4}
.fgrid>.fld.c5{grid-column:span 5}
.fgrid>.fld.c6{grid-column:span 6}
.fgrid>.fld.c8{grid-column:span 8}
.fgrid>.fld.c12{grid-column:span 12}
@media(max-width:860px){
  .fgrid>.fld,.fgrid>.fld.c2,.fgrid>.fld.c3,.fgrid>.fld.c4,.fgrid>.fld.c5{grid-column:span 6}
  .fgrid>.fld.c6,.fgrid>.fld.c8,.fgrid>.fld.c12{grid-column:span 12}
}
@media(max-width:520px){
  .fgrid>.fld,.fgrid>.fld.c2,.fgrid>.fld.c3,.fgrid>.fld.c4,
  .fgrid>.fld.c5,.fgrid>.fld.c6{grid-column:span 12}
}

.req{color:var(--dg);font-weight:700;margin-left:3px}
.fld>small.hint{font-size:11px;margin-top:1px;white-space:nowrap;line-height:1.3}
.fld>small.hint .okmsg{color:var(--ok)}
.fld.bad>input,.fld.bad>select,.fld.bad>textarea{border-color:var(--dg);
  box-shadow:0 0 0 3px rgba(217,48,37,.13)}

/* ── buttons ── */
button{height:36px;padding:0 15px;border:1px solid var(--line2);border-radius:9px;background:#fff;
  color:var(--tx);font-family:inherit;font-size:13.5px;font-weight:500;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;justify-content:center;
  transition:background .13s,border-color .13s,box-shadow .13s,transform .06s}
button:hover{background:var(--surface2);border-color:#c3c8ce}
button:active{transform:translateY(1px)}
button:disabled{opacity:.5;cursor:not-allowed}
.btn-p{background:var(--pri);border-color:var(--pri);color:#fff;box-shadow:0 1px 2px rgba(227,82,5,.3)}
.btn-p:hover{background:var(--pri-d);border-color:var(--pri-d)}
.btn-s{background:var(--ok);border-color:var(--ok);color:#fff}
.btn-s:hover{background:#0c8348;border-color:#0c8348}
.btn-d{background:#fff;border-color:#f0bdb8;color:var(--dg)}
.btn-d:hover{background:var(--dg-soft);border-color:#e59a94}
.btn-w{background:#fff;border-color:#f0d49a;color:#a86f00}
.btn-w:hover{background:#fff8e8;border-color:#e5c179}
a:has(>button){display:inline-flex}
a>button{width:100%}

/* ── toolbar ── */
.toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.toolbar .fld{margin-bottom:0}

/* ── table ── */
.scroll{overflow:auto;max-height:72vh;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh)}
.panel>.scroll{border:0;border-radius:0;box-shadow:none;max-height:70vh}
table.gt{border-collapse:separate;border-spacing:0;width:100%;background:var(--surface);
  font-variant-numeric:tabular-nums}
table.gt th,table.gt td{padding:8px 10px;border-bottom:1px solid var(--line);
  border-right:1px solid var(--line);vertical-align:middle}
table.gt th:last-child,table.gt td:last-child{border-right:0}
table.gt th{position:sticky;top:0;z-index:3;background:var(--surface2);color:var(--tx2);
  font-size:11.5px;font-weight:600;text-align:center;white-space:nowrap;
  box-shadow:inset 0 -1px 0 var(--line2)}
table.gt thead tr:nth-child(2) th{top:33px}
table.gt td.c{text-align:center}
table.gt td.r{text-align:right}
table.gt tbody tr{transition:background .1s}
table.gt tbody tr:hover{background:#fbfcfd}
table.gt tbody tr:last-child td{border-bottom:0}
table.gt input{height:29px;padding:0 7px;border-radius:7px;text-align:right;
  border-color:var(--line);background:#fff}
table.gt input:hover{border-color:var(--line2)}
table.gt input.tl{text-align:left}
table.gt td button{height:27px;padding:0 9px;font-size:12px;border-radius:7px}
.btn-ic{width:30px;height:28px;padding:0;color:var(--tx2)}
.btn-ic svg{display:block}
.btn-ic:hover{color:var(--pri);border-color:var(--pri);background:var(--pri-soft)}
table.gt td .btn-ic{width:30px;height:28px;padding:0}
table.gt tfoot td{position:sticky;bottom:0;z-index:3;background:var(--tot);font-weight:600;
  border-top:1px solid var(--line2);box-shadow:inset 0 1px 0 var(--line2)}
.tot{background:var(--tot);font-weight:600}

#emp_rows.loading{opacity:.45;transition:opacity .12s}

/* ── คอลัมน์สาขา: เล็กลงและไม่ตกบรรทัด ── */
table.gt td.brc{font-size:11.5px;white-space:nowrap;color:var(--tx2)}
table.gt td.brc>span{display:block;overflow:hidden;text-overflow:ellipsis}

/* ── ช่องวันที่ลาออกในตาราง ── */
table.gt input.endin{width:92px;height:24px;padding:0 4px;text-align:center;font-size:12px;
  border-color:transparent;background:transparent;cursor:pointer;color:var(--tx)}
table.gt input.endin::placeholder{font-size:14px;opacity:.45}
table.gt input.endin:hover{border-color:var(--line2);background:#fff}
table.gt input.endin:hover::placeholder{opacity:.9}
table.gt input.endin:focus{border-color:var(--pri);background:#fff}
table.gt input.endin.has{color:var(--dg);font-weight:600}

/* ── badge ── */
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;
  background:#eef0f3;color:var(--tx2)}
.badge.ok{background:var(--ok-soft);color:#0b7a44}
.badge.no{background:var(--dg-soft);color:#b3261e}

/* ── stat card ── */
.stat{flex:1;min-width:210px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh);padding:16px 18px;
  display:flex;align-items:center;gap:14px}
.stat .si{width:44px;height:44px;flex:0 0 44px;border-radius:12px;display:grid;place-items:center;
  font-size:20px;background:var(--pri-soft)}
.stat .sl{font-size:12px;color:var(--tx3);font-weight:500}
.stat .sv{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.2}

/* ── ตัวเลือกวันที่ไทย ── */
.dp{position:fixed;z-index:300;width:266px;background:var(--surface);border:1px solid var(--line2);
  border-radius:13px;box-shadow:var(--sh-lg);padding:10px;user-select:none}
.dp-h{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.dp-h select{height:32px;flex:1;min-width:0;border-radius:8px;padding:0 6px;font-size:13px}
.dp-h select.dp-y{flex:0 0 78px}
.dp-nav{width:30px;height:32px;padding:0;flex:0 0 30px;font-size:17px;line-height:1;border-radius:8px}
.dp-w{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:2px}
.dp-w span{text-align:center;font-size:11px;font-weight:600;color:var(--tx3);padding:3px 0}
.dp-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dp-d{height:32px;display:grid;place-items:center;border-radius:8px;font-size:13px;cursor:pointer}
.dp-d:hover{background:var(--pri-soft);color:var(--pri-d)}
.dp-x{cursor:default}
.dp-x:hover{background:none}
.dp-today{box-shadow:inset 0 0 0 1px var(--pri);color:var(--pri-d);font-weight:600}
.dp-sel{background:var(--pri);color:#fff;font-weight:600}
.dp-sel:hover{background:var(--pri-d);color:#fff}
.dp-f{display:flex;gap:6px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line)}
.dp-btn{flex:1;height:30px;font-size:12.5px;border-radius:8px}
input.dt{background-image:none}

/* ── toast ── */
#toast{position:fixed;right:20px;bottom:20px;z-index:200;display:none;max-width:400px;
  padding:12px 18px;border-radius:11px;background:#1d2127;color:#fff;font-weight:500;
  box-shadow:var(--sh-lg);animation:tin .2s ease-out}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ── modal ── */
.modal-bg{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center;
  padding:60px 14px 30px;overflow:auto;background:rgba(15,20,28,.5);backdrop-filter:blur(3px);
  animation:fin .15s ease-out}
@keyframes fin{from{opacity:0}to{opacity:1}}
.modal{width:540px;max-width:100%;background:var(--surface);border-radius:16px;
  box-shadow:var(--sh-lg);overflow:hidden;animation:min .18s cubic-bezier(.2,.9,.3,1)}
@keyframes min{from{opacity:0;transform:translateY(-12px) scale(.98)}to{opacity:1;transform:none}}
.modal h3{margin:0;padding:15px 20px;font-size:15px;font-weight:600;border-bottom:1px solid var(--line)}
.modal .body{padding:18px 20px}
.modal .body{padding:14px 16px}
.modal .panel{box-shadow:none;border-radius:10px;margin-bottom:10px}
.modal .panel>h3{padding:8px 12px;font-size:12.5px}
.modal .panel>.body{padding:11px 12px}
.modal .panel:last-child{margin-bottom:0}
/* ฟอร์มในป๊อปอัพให้กระชับ */
.modal .fgrid{gap:9px 12px}
.modal .fld{gap:3px}
.modal .fld>label{font-size:11.5px}
.modal .fgrid input,.modal .fgrid select{height:32px;font-size:13px}
.modal .fgrid textarea{min-height:54px;font-size:13px}
/* หัวข้อแต่ละกลุ่มมีสีของตัวเอง */
.panel.sec>h3{border-left:4px solid var(--sc);background:var(--sc-bg);color:var(--sc-tx);
  display:flex;align-items:center;gap:7px}
.sec-a{--sc:#e35205;--sc-bg:#fff4ec;--sc-tx:#b04204}
.sec-b{--sc:#2f6fed;--sc-bg:#eef3fd;--sc-tx:#2358c4}
.sec-c{--sc:#0f9d58;--sc-bg:#ebf8f1;--sc-tx:#0b7a44}
.panel.sec-flags>.body{background:var(--surface2)}

/* ── ชื่อที่คลิกได้ ── */
.lnk{color:var(--pri-d);font-weight:600;cursor:pointer;border-bottom:1px dotted transparent}
.lnk:hover{color:var(--pri);border-bottom-color:var(--pri)}
.modal .foot{padding:14px 20px;border-top:1px solid var(--line);background:var(--surface2);
  display:flex;gap:9px;justify-content:flex-end}

/* ── login ── */
#login{max-width:390px;margin:10vh auto;background:var(--surface);border:1px solid var(--line);
  border-radius:18px;padding:34px 32px;box-shadow:0 12px 40px rgba(16,24,40,.1)}
#login .lmk{width:56px;height:56px;margin:0 auto 16px;border-radius:17px;display:grid;place-items:center;
  font-size:27px;background:linear-gradient(135deg,var(--pri),#f5a623);
  box-shadow:0 6px 18px rgba(227,82,5,.35)}
#login h2{margin:0 0 4px;text-align:center;font-size:19px;font-weight:700}
#login .sub{text-align:center;color:var(--tx3);font-size:12.5px;margin-bottom:22px}
#login .fld>label{font-size:12.5px}
#login input{height:40px}
#login button{height:42px;width:100%;margin-top:6px;font-size:14px;font-weight:600}
#lg_err{min-height:18px;font-size:12.5px;margin:4px 0 2px}

/* ── bulb toggle ── */
.bulb{display:inline-block;cursor:pointer;font-size:16px;line-height:1;user-select:none;
  filter:grayscale(1);opacity:.3;transition:filter .15s,opacity .15s,transform .1s}
.bulb:hover{transform:scale(1.2);opacity:.65}
.bulb.on{filter:none;opacity:1;text-shadow:0 0 9px rgba(240,165,0,.75)}
.bulb.on:hover{opacity:1}
.bulb.busy{opacity:.2;cursor:progress}
.bulb.static{cursor:help;font-size:14px}
.bulb.static:hover{transform:none;opacity:.3}

/* ── responsive ── */
@media(max-width:960px){
  #wrap{flex-direction:column}
  #side{width:auto;flex:none;display:flex;gap:4px;overflow-x:auto;padding:8px 10px;
    border-right:0;border-bottom:1px solid var(--line)}
  #side .grp{display:none}
  #side .it{margin:0;flex:0 0 auto;white-space:nowrap}
  #side .it small{display:none}
  #main{padding:16px 14px 32px}
  #top .brand span:last-child{display:none}
}
