:root{
  --side:#384152;
  --side-text:#c3cad4;
  --side-active:#465063;
  --bg:#f9f9f9;
  --panel:#ffffff;
  --panel-2:#f9fafb;
  --line:#e7e7e7;
  --text:#171719;
  --muted:#8b9096;
  --input:#ffffff;
  --hover:#f4f5f7;
  --blue:#3c83f7;
  --green:#22c55e;
  --red:#f14446;
  --radius:6px;
  --shadow:0 1px 2px rgba(23,23,25,.04);
}
[data-theme="dark"]{
  --side:#1b2230;
  --side-text:#a9b2c1;
  --side-active:#28303f;
  --bg:#12161d;
  --panel:#181d26;
  --panel-2:#141922;
  --line:#262c38;
  --text:#e9ecf1;
  --muted:#8b93a1;
  --input:#12161d;
  --hover:#1e242e;
  --shadow:0 1px 2px rgba(0,0,0,.35);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
a,label,input,select,textarea{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
a:focus,a:focus-visible,input:focus,input:focus-visible,select:focus,label:focus,textarea:focus{outline:0;box-shadow:none}
html,body,#root{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:Poppins,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none}
button:focus,button:focus-visible{outline:0;box-shadow:none}
a{color:inherit}
.app{display:flex;min-height:100vh}

/* ---------- sidebar ---------- */
.side{width:226px;flex:0 0 226px;background:var(--side);color:var(--side-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:16px 0 14px;overflow-y:auto;overscroll-behavior:contain}
.brand{display:flex;align-items:center;gap:8px;padding:2px 18px 18px}
.side-close{display:none;margin-left:auto;width:34px;height:34px;border:0;border-radius:5px;background:rgba(255,255,255,.1);color:#fff;font-size:13px;line-height:1;align-items:center;justify-content:center}
.side-close:active{background:rgba(255,255,255,.18)}
.brand-name{color:#fff;font-size:17px;font-weight:600;letter-spacing:-.01em}
.nav{display:flex;flex-direction:column;gap:1px;padding:0 8px}
.nav-item{display:flex;align-items:center;gap:11px;height:40px;padding:0 10px;width:100%;border:0;border-radius:4px;background:transparent;color:var(--side-text);font-size:13.5px;font-weight:500;text-align:left}
.nav-item:hover{background:var(--side-active);color:#fff}
.nav-item.on{background:var(--side-active);color:#fff}
.nav-item svg{flex:0 0 auto;opacity:.95}

.build-tag{margin-top:auto}

/* ---------- topbar ---------- */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:56px;display:flex;align-items:center;gap:8px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:6}
.icon-btn{border:0;background:transparent;width:34px;height:34px;border-radius:4px;display:grid;place-items:center;color:var(--muted)}
.icon-btn:hover{background:var(--hover);color:var(--text)}

/* ---------- content ---------- */
.content{padding:22px;display:flex;flex-direction:column;gap:18px;max-width:1320px;width:100%}
.page-head{display:flex;align-items:center;gap:12px}
.page-head h1{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em}
.page-date{margin-left:auto;color:var(--muted);font-size:12px}

/* kartu statistik */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.stat{border-radius:var(--radius);padding:14px 16px 13px;color:#fff;min-height:112px;display:flex;flex-direction:column;justify-content:space-between}
.stat.blue{background:var(--blue)}
.stat.green{background:var(--green)}
.stat.red{background:var(--red)}
.stat h3{margin:0;font-size:15px;font-weight:500;opacity:.97}
.stat-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.stat-ico{display:flex;opacity:.95}
.stat-value{font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:1;white-space:nowrap}

/* panel */
.grid{display:grid;grid-template-columns:1.6fr 1fr;gap:18px}
.stack{display:flex;flex-direction:column;gap:18px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;min-width:0}
.panel-head{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600}
.link{margin-left:auto;font-size:12px;color:var(--blue);text-decoration:none;font-weight:500}
.link:hover{text-decoration:underline}
.seg{display:inline-flex;margin-left:auto;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.seg button{border:0;background:var(--panel);padding:5px 10px;font-size:11.5px;color:var(--muted)}
.seg button + button{border-left:1px solid var(--line)}
.seg button.on{background:rgba(0,0,0,.06);color:var(--text);font-weight:600}
[data-theme="dark"] .seg button.on{background:rgba(255,255,255,.1)}

/* chart */
.chart{display:flex;gap:8px;padding:16px 14px 10px;height:246px}
.axis{display:flex;flex-direction:column;justify-content:space-between;font-size:11px;color:var(--muted);padding-bottom:22px;text-align:right;min-width:22px}
.plot{flex:1;position:relative;min-width:0}
.lines{position:absolute;inset:0 0 22px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
.lines i{border-top:1px solid var(--line)}
.bars{position:relative;display:flex;align-items:flex-end;gap:12px;height:100%;padding-bottom:22px}
.bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:6px;min-width:0}
.bar-fill{position:relative;width:100%;max-width:30px;background:var(--blue);border-radius:2px 2px 0 0;transition:height .35s cubic-bezier(.2,.7,.3,1)}
.bar:hover .bar-fill{filter:brightness(1.08)}
.bar-fill em{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:10.5px;font-style:normal;color:var(--muted)}
.bar-day{position:absolute;bottom:0;font-size:11px;color:var(--muted)}

/* tabel */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--muted);font-weight:500;font-size:12px;text-transform:none;letter-spacing:0;background:var(--panel-2)}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--hover)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}
.muted{color:var(--muted)}
.pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:3px;font-size:11px;font-weight:600}
.pill.ok{background:rgba(34,197,94,.14);color:#16a34a}
.pill.wait{background:rgba(240,160,32,.16);color:#c07f00}
.pill.bad{background:rgba(241,68,70,.14);color:#f14446}

/* deposit */
.deposit{list-style:none;margin:0;padding:2px 6px 6px}
.deposit li{display:flex;align-items:center;gap:10px;padding:10px 8px;border-bottom:1px solid var(--line)}
.deposit li:last-child{border-bottom:0}
.dep-avatar{width:30px;height:30px;border-radius:4px;background:rgba(0,0,0,.055);color:var(--muted);font-weight:600;display:grid;place-items:center;font-size:12px;flex:0 0 auto}
[data-theme="dark"] .dep-avatar{background:rgba(255,255,255,.09)}
.dep-info{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.dep-info b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dep-info span{font-size:11px;color:var(--muted)}
.dep-amount{margin-left:auto;text-align:right;display:flex;flex-direction:column;line-height:1.25;flex:0 0 auto}
.dep-amount b{font-size:12.5px;color:var(--green)}
.dep-amount span{font-size:11px;color:var(--muted)}

/* ---------- pengaturan: server ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:4px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:12.5px;font-weight:500;margin-left:auto}
.btn:hover{background:var(--hover)}
.btn.small{height:28px;font-size:12px;padding:0 10px}
.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.primary:hover{background:#2c72e4}

.srv-list{list-style:none;margin:0;padding:14px;display:flex;flex-direction:column;gap:12px}
.srv{border:1px solid var(--line);border-left:3px solid var(--green);border-radius:5px;background:var(--panel);box-shadow:var(--shadow);overflow:hidden;transition:border-color .15s,box-shadow .15s}
.srv.off{border-left-color:#e0a33a}
.srv:hover{box-shadow:0 2px 8px rgba(23,23,25,.07)}
.srv.expanded{border-color:#c9d7ef}
.srv.expanded.off{border-color:#efd9ae}
.srv-row{display:grid;grid-template-columns:1fr auto auto 20px;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;background:transparent;text-align:left}
.srv-row:hover{background:var(--hover)}
.srv-id{display:flex;align-items:center;gap:10px;min-width:0}
.srv-text{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.srv-name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srv-host{font-size:11.5px;color:var(--muted);font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dot{width:7px;height:7px;border-radius:50%;display:block;flex:0 0 auto;background:var(--line)}
.chip{font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:3px;background:rgba(0,0,0,.055);color:var(--text);white-space:nowrap}
[data-theme="dark"] .chip{background:rgba(255,255,255,.09)}
.tag{font-size:11px;font-weight:600;padding:3px 8px;border-radius:3px;white-space:nowrap}
.tag.on{background:rgba(0,0,0,.05);color:var(--muted)}
.tag.off{background:rgba(0,0,0,.07);color:var(--text)}
[data-theme="dark"] .tag.on{background:rgba(255,255,255,.06)}
[data-theme="dark"] .tag.off{background:rgba(255,255,255,.1)}
.srv-chev{color:var(--muted);display:grid;place-items:center;transition:transform .18s}
.srv.expanded .srv-chev{transform:rotate(180deg)}

.srv-edit{padding:14px;border-top:1px solid var(--line);background:var(--panel-2)}
.srv-edit.static{padding:16px}
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.field{display:flex;flex-direction:column;gap:5px;min-width:0}
.field > span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.input{width:100%;height:34px;border:1px solid var(--line);border-radius:4px;padding:0 10px;font-size:12.5px;color:var(--text);background:var(--input);outline:0;transition:border-color .15s,box-shadow .15s}
.input:focus{border-color:#d7d9dd;box-shadow:0 0 0 3px rgba(23,23,25,.07)}
[data-theme="dark"] .input:focus{border-color:#3a4a60;box-shadow:0 0 0 3px rgba(255,255,255,.06)}
.input.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}
.input-btn{display:flex;align-items:center;gap:6px}
.input-btn .input{flex:1}
.field-note{font-size:11px;color:var(--muted);font-style:normal;line-height:1.3}
.icon-btn[disabled]{opacity:.45;cursor:default}
.icon-btn.danger{color:#f14446}
.icon-btn.danger:hover{background:rgba(241,68,70,.12)}
.srv-actions{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}
.srv-actions .btn{margin-left:0}
.srv-actions .hint{font-size:11.5px;color:var(--muted);margin-right:auto}
.check{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);margin-right:auto;cursor:pointer}
.check input{width:14px;height:14px;accent-color:#6b7688}
.toast{position:fixed;top:18px;right:18px;display:flex;align-items:center;gap:9px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-left:3px solid var(--green);font-size:12.5px;font-weight:500;padding:11px 15px;border-radius:6px;box-shadow:0 14px 34px -14px rgba(23,23,25,.35),0 2px 6px rgba(23,23,25,.06);z-index:40;animation:toast-in .22s cubic-bezier(.2,.7,.3,1)}
.toast svg{color:var(--green);flex:0 0 auto}
@keyframes toast-in{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.placeholder{padding:26px;color:var(--muted);font-size:13px;text-align:center}
.scrim{display:none}

/* ---------- responsif ---------- */
@media (max-width:1200px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid{grid-template-columns:1fr}
}
@media (min-width:901px){
  .topbar{display:none}
  .content{padding-top:26px}
  .theme-mobile{display:none}
}
@media (max-width:900px){
  .side{position:fixed;inset:0 auto 0 0;z-index:30;transform:translateX(-102%);transition:transform .22s ease;box-shadow:0 20px 50px -20px rgba(0,0,0,.45)}
  .side.open{transform:none}
  .side-close{display:inline-flex}
  .scrim{display:block;position:fixed;inset:0;background:rgba(10,15,22,.5);opacity:0;pointer-events:none;transition:opacity .2s;z-index:25}
  .scrim.show{opacity:1;pointer-events:auto}
  .content{padding:16px;gap:14px}
  .stat-value{font-size:23px}
  .field-grid{grid-template-columns:1fr}
  .srv-list{padding:12px;gap:10px}
  .srv-row{grid-template-columns:1fr auto;padding:12px;gap:10px}
  .srv-id{grid-column:1 / -1}
  .srv-text{flex:1}
  .chip{justify-self:start}
  .tag{justify-self:end}
  .srv-chev{display:none}
  .srv-edit{padding:12px}
}
@media (max-width:640px){
  .stats{grid-template-columns:1fr;gap:12px}
  .stat{min-height:96px}
  .chart{height:200px;padding:12px 10px 6px}
  .bars{gap:7px}
  .bar-fill em{display:none}
  .panel-head{height:42px;padding:0 12px}

  .table-wrap{overflow:visible}
  table,thead,tbody,tr,td{display:block}
  thead{display:none}
  tr{border-bottom:1px solid var(--line);padding:10px 12px}
  tbody tr:last-child{border-bottom:0}
  td{display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;padding:3px 0;white-space:normal}
  td::before{content:attr(data-label);color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}
  .srv-actions{gap:8px}
  .srv-actions .btn{width:100%;justify-content:center;margin-top:4px}
}

/* ---------- tab pengaturan ---------- */
.subtabs{display:flex;gap:4px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:5px;box-shadow:var(--shadow)}
.subtabs button{height:32px;padding:0 14px;border:0;border-radius:4px;background:transparent;font-size:12.5px;font-weight:500;color:var(--muted)}
.subtabs button:hover{background:var(--hover);color:var(--text)}
.subtabs button.on{background:rgba(0,0,0,.055);color:var(--text);font-weight:600}
[data-theme="dark"] .subtabs button.on{background:rgba(255,255,255,.09)}

/* level */
.lvl-head{display:grid;grid-template-columns:100px 1fr 1fr 1fr;gap:12px;padding:9px 14px;border-bottom:1px solid var(--line);background:var(--panel-2);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.lvl-list{list-style:none;margin:0;padding:0}
.lvl{display:grid;grid-template-columns:100px 1fr 1fr 1fr;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}
.lvl:last-child{border-bottom:0}
.lvl.fixed{background:var(--panel-2)}
.lvl-name{display:flex;flex-direction:column;gap:3px}
.lvl-name em{font-size:11px;color:var(--muted);font-style:normal}
.lvl-badge{font-size:11.5px;font-weight:600;background:rgba(0,0,0,.055);color:var(--text);padding:3px 8px;border-radius:3px;width:max-content}
[data-theme="dark"] .lvl-badge{background:rgba(255,255,255,.09)}
.lvl-static{font-size:12.5px;color:var(--muted)}
.srv-actions.pad{padding:14px;margin-top:0;border-top:1px solid var(--line)}
.switch{display:inline-flex;align-items:center;gap:8px;height:34px;border:1px solid var(--line);background:var(--input);border-radius:4px;padding:0 10px;font-size:12px;color:var(--muted);width:100%}
.switch i{width:26px;height:14px;border-radius:999px;background:#dfe4ec;position:relative;transition:.15s;flex:0 0 auto}
.switch i::after{content:"";position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:#fff;transition:.15s;box-shadow:0 1px 2px rgba(23,23,25,.2)}
.switch.on{color:#16a34a;border-color:rgba(34,197,94,.4)}
.switch.on i{background:var(--green)}
.switch.on i::after{transform:translateX(12px)}

@media (max-width:760px){
  .lvl-head{display:none}
  .lvl{grid-template-columns:1fr;gap:8px;padding:12px}
  .lvl .field:before{content:attr(data-k)}
  .lvl-name{flex-direction:row;align-items:center;gap:8px}
  .subtabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  .subtabs button{white-space:nowrap}
}

/* ---------- kartu server terpisah ---------- */

.srv-head{display:flex;align-items:center;gap:9px;min-width:0;flex-wrap:wrap}
.srv-head b{font-size:13px;font-weight:600}
.srv-head em{font-size:11.5px;color:var(--muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srv-panel .panel-head .tag{margin-left:auto}
.srv-panel .panel-head .icon-btn.danger{margin-left:6px}
.add-card{display:flex;align-items:center;justify-content:center;gap:8px;height:46px;border:1px dashed var(--line);border-radius:5px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:500}
.add-card:hover{background:var(--hover);color:var(--text);border-color:#d7d9dd}
.head-note{margin-left:auto;font-size:11.5px;font-weight:500;color:var(--muted)}

/* ---------- level ---------- */
.lvl-list{list-style:none;margin:0;padding:0}
.lvl{display:flex;align-items:flex-start;gap:16px;padding:14px;border-bottom:1px solid var(--line)}
.lvl:last-child{border-bottom:0}
.lvl.fixed{background:var(--panel-2)}
.lvl-name{display:flex;flex-direction:column;gap:4px;min-width:86px}
.lvl-name em{font-size:11px;color:var(--muted);font-style:normal}
.lvl-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;flex:1}
.lvl-fixed{font-size:12.5px;color:var(--muted);align-self:center}


@media (max-width:760px){
  .lvl{flex-direction:column;gap:10px;padding:12px}
  .lvl-name{flex-direction:row;align-items:center;gap:8px;min-width:0}
  .lvl-fields{grid-template-columns:1fr;width:100%}
  .head-note{display:none}
  .srv-head em{white-space:normal}
  .srv-panel .panel-head{height:auto;padding:10px 12px;flex-wrap:wrap;row-gap:6px}
  .srv-panel .panel-head .tag{margin-left:0}
  .srv-panel .panel-head .icon-btn.danger{margin-left:auto}
}

/* ---------- perbaikan bot ---------- */

.bot-row{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.bot-row .switch{width:auto;min-width:104px}
.bot-note{margin:0;font-size:12px;color:var(--muted);line-height:1.35}

@media (max-width:640px){
  .toast{top:12px;right:12px;left:auto;max-width:calc(100% - 24px)}
  .bot-row{flex-direction:column;align-items:stretch;gap:8px}
  .bot-row .switch{width:100%}
}

/* tombol simpan saat tidak ada perubahan */
.btn:disabled,.btn[disabled]{cursor:not-allowed;background:var(--panel-2);color:var(--muted);border-color:var(--line);opacity:.85}
.btn.primary:disabled,.btn.primary[disabled]{background:var(--panel-2);border-color:var(--line);color:var(--muted);opacity:1}
[data-theme="dark"] .btn.primary:disabled,[data-theme="dark"] .btn.primary[disabled]{background:var(--panel-2);color:var(--muted)}

/* cegah kilau warna saat ditekan */
.nav-item:active,.subtabs button:active,.seg button:active,.btn:active,.add-card:active,.icon-btn:active,.theme:active{background:var(--hover)}
.icon-btn:active{background:transparent}
.btn.primary:active:not(:disabled){background:#2c72e4}
.switch:active,.check:active{background:var(--input)}

/* ---------- halaman pengguna ---------- */
.panel-head.wrap{height:auto;min-height:44px;flex-wrap:wrap;padding:9px 14px;row-gap:9px}
.head-tools{display:flex;align-items:center;gap:10px;margin-left:auto}
.search-inline{display:flex;align-items:center;gap:7px;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:4px;background:var(--input);color:var(--muted);min-width:210px}
.search-inline input{border:0;outline:0;background:transparent;font-size:12px;color:var(--text);width:100%}
.search-inline input::placeholder{color:var(--muted)}
tr.clickable{cursor:pointer}
.user-cell{display:flex;align-items:center;gap:9px}
.user-cell b{font-weight:600;font-size:12.5px}

.user-head{display:flex;align-items:center;gap:16px;padding:14px;flex-wrap:wrap}
.user-id{display:flex;align-items:center;gap:10px;min-width:0}
.user-id div{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.user-id b{font-size:14px;font-weight:600}
.user-id em{font-size:11.5px;color:var(--muted);font-style:normal}
.dep-avatar.big{width:38px;height:38px;border-radius:5px;font-size:14px}
.user-balance{display:flex;flex-direction:column;gap:2px;margin-left:auto}
.user-balance span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.user-balance b{font-size:19px;font-weight:600;letter-spacing:-.01em}
.user-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn.ghost{margin-left:0;border-color:transparent;background:transparent;padding:0 6px;color:var(--muted)}
.btn.ghost:hover{background:var(--hover);color:var(--text)}
.btn.danger{color:#e03b3d;border-color:rgba(241,68,70,.35)}
.btn.danger:hover{background:rgba(241,68,70,.08)}
.btn.danger.solid{background:#f14446;border-color:#f14446;color:#fff}
.btn.danger.solid:disabled{background:rgba(241,68,70,.35);border-color:transparent}

.kv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line)}
.kv{background:var(--panel);padding:14px}
.kv span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:5px}
.kv b{font-size:14px;font-weight:600}

.notif .ledger-plus{margin-left:auto;font-size:12px;font-weight:600;color:#16a34a;white-space:nowrap}
.notif .ledger-minus{margin-left:auto;font-size:12px;font-weight:600;color:#e03b3d;white-space:nowrap}
[data-theme="dark"] .notif .ledger-plus{color:#4ade80}
[data-theme="dark"] .notif .ledger-minus{color:#fca5a5}

/* modal */
.overlay{position:fixed;inset:0;background:rgba(10,15,22,.5);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}
.modal{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 24px 60px -24px rgba(0,0,0,.5);overflow:hidden}
.modal-head{display:flex;align-items:center;gap:10px;padding:0 14px;height:46px;border-bottom:1px solid var(--line);font-size:13px}
.modal-head .icon-btn{margin-left:auto;font-size:13px}
.modal-body{padding:14px;display:flex;flex-direction:column;gap:12px}
.modal-body .seg.full{margin:0;width:100%}
.modal-body .seg.full button{flex:1;padding:7px 0}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:var(--panel-2)}
.modal-foot .btn{margin-left:0}
.preview{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:10px 12px;border:1px solid var(--line);border-radius:4px;background:var(--panel-2);font-size:12px;color:var(--muted)}
.preview b{color:var(--text);font-size:12.5px}
.preview b.neg{color:#e03b3d}
.warn{margin:0;font-size:11.5px;color:#e03b3d}
.warn-text{margin:0;font-size:12.5px;color:var(--muted);line-height:1.45}

@media (max-width:760px){
  .head-tools{width:100%;margin:0;flex-wrap:wrap;gap:8px}
  .search-inline{min-width:0;width:100%;height:34px;flex:1 1 100%}
  .panel-head .head-tools .seg{width:100%;overflow-x:auto}
  .panel-head.wrap{padding:10px 12px}
  .user-head{gap:12px}
  .user-balance{margin-left:0}
  .user-actions{width:100%}
  .user-actions .btn{flex:1;justify-content:center;margin-left:0}
  .kv-grid{grid-template-columns:1fr 1fr}
  .overlay{align-items:center;padding:12px}
  .modal{max-width:none;border-radius:6px;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:hidden}
  .page-head .btn.ghost{padding:0 4px}
}

/* ---------- pengguna: daftar & detail ---------- */
.filters{display:flex;gap:6px;padding:10px 14px;border-bottom:1px solid var(--line);overflow-x:auto}
.filter{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--muted);font-size:12px;white-space:nowrap}
.filter em{font-style:normal;font-size:10.5px;font-weight:600;background:rgba(0,0,0,.05);padding:1px 5px;border-radius:3px;color:var(--muted)}
[data-theme="dark"] .filter em{background:rgba(255,255,255,.08)}
.filter.on{background:var(--text);border-color:var(--text);color:var(--panel)}
.filter.on em{background:rgba(255,255,255,.22);color:var(--panel)}
[data-theme="dark"] .filter.on{background:var(--text);border-color:var(--text);color:var(--panel)}
[data-theme="dark"] .filter.on em{background:rgba(0,0,0,.2)}

.u-list{list-style:none;margin:0;padding:0}
.u-row{display:grid;grid-template-columns:34px 1fr 110px 96px auto 20px;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.u-row:last-child{border-bottom:0}
.u-row:hover{background:var(--hover)}
.u-avatar{width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.06);color:var(--text);display:grid;place-items:center;font-size:13px;font-weight:600;flex:0 0 auto}
[data-theme="dark"] .u-avatar{background:rgba(255,255,255,.09)}
.u-avatar.lg{width:44px;height:44px;font-size:15px}
.u-main{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.u-main b{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-main em{font-size:11px;color:var(--muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-balance,.u-meta{display:flex;flex-direction:column;line-height:1.3;text-align:right}
.u-balance b{font-size:12.5px;font-weight:600}
.u-balance em,.u-meta em{font-size:10.5px;color:var(--muted);font-style:normal}
.u-meta b{font-size:11.5px;font-weight:600;color:var(--muted)}
.u-chev{color:var(--muted);display:grid;place-items:center;transform:rotate(-90deg)}
.u-empty{padding:26px;text-align:center;color:var(--muted);font-size:12.5px}

.user-top{display:grid;grid-template-columns:1.15fr 1fr;gap:18px}
.profile{padding:16px;display:flex;flex-direction:column;gap:13px}
.profile-id{display:flex;align-items:center;gap:12px}
.profile-text{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.profile-text b{font-size:14.5px;font-weight:600}
.profile-text em{font-size:12px;color:var(--muted);font-style:normal}
.profile-id .tag{margin-left:auto}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip-soft{font-size:11px;padding:3px 8px;border-radius:3px;background:rgba(0,0,0,.05);color:var(--muted)}
[data-theme="dark"] .chip-soft{background:rgba(255,255,255,.08)}
.profile-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:13px;border-top:1px solid var(--line);margin-top:auto}
.profile-meta div{display:flex;flex-direction:column;gap:3px}
.profile-meta span{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.profile-meta b{font-size:12.5px;font-weight:600}

.balance-card{padding:16px;display:flex;flex-direction:column;gap:16px}
.balance-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.balance-value{font-size:27px;font-weight:600;letter-spacing:-.02em;line-height:1.15;margin-top:3px}
.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding-top:13px;border-top:1px solid var(--line)}
.mini-stats div{display:flex;flex-direction:column;gap:3px;min-width:0}
.mini-stats span{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.mini-stats b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.balance-actions{display:flex;gap:8px;margin-top:auto}
.balance-actions .btn{margin-left:0}
.balance-actions .btn.primary{flex:1;justify-content:center}

.back{width:28px;height:28px;border-radius:4px;border:1px solid var(--line);background:var(--panel);color:var(--muted);display:grid;place-items:center;transform:rotate(90deg)}
.back:hover{background:var(--hover);color:var(--text)}

@media (max-width:900px){
  .user-top{grid-template-columns:1fr}
}
@media (max-width:640px){
  .u-row{grid-template-columns:32px 1fr auto;row-gap:6px;padding:12px}
  .u-balance{grid-column:2;text-align:left;flex-direction:row;align-items:baseline;gap:6px}
  .u-meta{display:none}
  .u-row .tag{grid-column:3;justify-self:end}
  .u-chev{display:none}
  .balance-value{font-size:24px}
  .filters{padding:10px 12px}
  .profile,.balance-card{padding:14px}
  .balance-actions{flex-wrap:wrap;gap:8px}
  .balance-actions .btn.primary{flex:1 1 100%;justify-content:center}
  .balance-actions .btn:not(.primary){flex:1 1 0;justify-content:center}
}

/* pengguna (mengikuti tema dashboard/pengaturan) */
.uname{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.uname b{font-weight:600;font-size:12.5px}
.uname em{font-size:11px;color:var(--muted);font-style:normal}
.stat-sub{font-size:15px;font-weight:500;opacity:.8}
.value{font-size:12.5px;font-weight:600;padding-top:7px}
.dep-amount .plus{color:#16a34a}
.dep-amount .minus{color:#e03b3d}
[data-theme="dark"] .dep-amount .plus{color:#4ade80}
[data-theme="dark"] .dep-amount .minus{color:#fca5a5}
.panel-head .head-tools .btn{margin-left:0}
@media (max-width:760px){
  .panel-head{height:auto;min-height:42px;flex-wrap:wrap;row-gap:8px;padding:9px 12px}
  .panel-head .head-tools{width:100%;margin:0;flex-wrap:wrap}
  .panel-head .head-tools .btn{flex:1 1 auto;justify-content:center}
}
@media (max-width:640px){
  .panel-head .head-tools .btn{flex:1 1 auto;justify-content:center}
  .panel-head.wrap .head-tools .seg{overflow-x:auto}
}

/* aksi per baris pengguna */
.btn.tiny{height:26px;padding:0 9px;font-size:11.5px;border-radius:4px;margin-left:0;font-weight:500}
.btn.tiny.icon{width:26px;padding:0;justify-content:center;color:var(--muted)}
.btn.tiny.danger{color:#e03b3d;border-color:rgba(241,68,70,.3)}
.btn.tiny.danger:hover{background:rgba(241,68,70,.08)}
.row-actions{display:flex;align-items:center;gap:6px}
table.manage td[data-label="Aksi"]{white-space:nowrap}
table.manage th:last-child,table.manage td:last-child{text-align:right}
table.manage th:last-child .row-actions,table.manage td:last-child .row-actions{justify-content:flex-end}

@media (max-width:760px){
  table.manage td[data-label="Aksi"]{justify-content:flex-start;padding-top:8px}
  table.manage td[data-label="Aksi"]::before{content:"";display:none}
  .row-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:100%}
  .row-actions .btn.tiny{height:32px;justify-content:center;font-size:12px}
  .row-actions .btn.tiny.icon{width:auto}
}

/* ---------- panel kelola user (drawer) ---------- */
.cell-manage{text-align:right}
.drawer-overlay{position:fixed;inset:0;background:rgba(10,15,22,.45);opacity:0;pointer-events:none;transition:opacity .18s;z-index:44}
.drawer-overlay.show{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:100%;background:var(--panel);border-left:1px solid var(--line);z-index:45;display:flex;flex-direction:column;box-shadow:-24px 0 60px -30px rgba(0,0,0,.45);animation:drawer-in .2s ease}
@keyframes drawer-in{from{transform:translateX(18px);opacity:.6}to{transform:none;opacity:1}}
.drawer-head{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid var(--line)}
.drawer-head .icon-btn{margin-left:auto}
.drawer-info{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:14px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.drawer-info div{display:flex;flex-direction:column;gap:3px;min-width:0}
.drawer-info span{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.drawer-info b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drawer-tabs{margin:12px 14px 0}
.drawer-body{flex:1;overflow-y:auto;padding:7px 14px 14px}
.mini-row{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.mini-row:last-child{border-bottom:0}
.mini-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.mini-main b{font-size:12.5px;font-weight:600}
.mini-main em{font-size:11px;color:var(--muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-end{display:flex;flex-direction:column;align-items:flex-end;gap:4px;margin-left:auto;flex:0 0 auto}
.mini-end b{font-size:12.5px;font-weight:600}
.mini-end .plus{color:#16a34a}
.mini-end .minus{color:#e03b3d}
[data-theme="dark"] .mini-end .plus{color:#4ade80}
[data-theme="dark"] .mini-end .minus{color:#fca5a5}
.drawer-empty{margin:22px 0;text-align:center;color:var(--muted);font-size:12.5px}
.drawer-foot{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:var(--panel-2)}
.drawer-foot .btn{margin-left:0}
.drawer-foot .btn.primary{flex:1;justify-content:center}

@media (max-width:760px){
  .drawer{top:auto;left:0;right:0;bottom:0;width:100%;max-width:none;height:86vh;border-left:0;border-top:1px solid var(--line);border-radius:10px 10px 0 0;animation:sheet-in .22s ease}
  @keyframes sheet-in{from{transform:translateY(26px);opacity:.7}to{transform:none;opacity:1}}
  .cell-manage .btn{width:100%}
  .drawer-info{grid-template-columns:1fr 1fr}
  .drawer-foot .btn{flex:1;justify-content:center}
}

/* ---------- pengguna: sederhana ---------- */
.cell-more{text-align:right}
.more{font-size:12px;color:var(--muted)}
tr.clickable:hover .more{color:var(--text)}
.action-bar{display:flex;gap:8px;flex-wrap:wrap}
.action-bar .btn{margin-left:0}
.action-bar .btn.primary{min-width:140px;justify-content:center}
.info-list{list-style:none;margin:0;padding:0}
.info-list li{display:flex;align-items:center;gap:16px;padding:11px 14px;border-bottom:1px solid var(--line)}
.info-list li:last-child{border-bottom:0}
.info-list span{font-size:12px;color:var(--muted);flex:0 0 140px}
.info-list b{font-size:12.5px;font-weight:600;margin-left:auto;text-align:right}

@media (max-width:640px){
  .action-bar .btn{flex:1 1 100%;justify-content:center}
  .info-list li{padding:10px 12px;gap:12px}
  .info-list span{flex:0 0 108px;font-size:11.5px}
  .info-list b{font-size:12px}
  .cell-more{display:none}
}

/* ---------- tabel pengguna ala dashboard admin (ref: Tabler/shadcn) ---------- */
.panel-foot{padding:10px 14px;border-top:1px solid var(--line);background:var(--panel-2);font-size:11.5px;color:var(--muted)}
table.users td{padding-top:8px;padding-bottom:8px}
.users .user-cell{cursor:pointer;display:flex;align-items:center;gap:9px}
.users .user-cell:hover b{text-decoration:underline}
.cell-kebab{text-align:right;width:52px}
.kebab{width:28px;height:28px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--muted);font-size:16px;line-height:1;display:inline-grid;place-items:center}
.kebab:hover{background:var(--hover);border-color:var(--line);color:var(--text)}

.menu{position:fixed;z-index:60;min-width:186px;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 16px 40px -18px rgba(23,23,25,.45),0 2px 8px rgba(23,23,25,.06);padding:5px}
.menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:0;border-radius:4px;background:transparent;font-size:12.5px;text-align:left;color:var(--text)}
.menu-item:hover{background:var(--hover)}
.menu-item svg{color:var(--muted);flex:0 0 auto}
.menu-item.danger{color:#e03b3d}
.menu-item.danger svg{color:#e03b3d}
.menu-item.danger:hover{background:rgba(241,68,70,.08)}
.menu-sep{height:1px;background:var(--line);margin:5px 4px}

@media (max-width:640px){
  .cell-kebab{display:flex;justify-content:flex-end;width:100%}
  .users .cell-kebab{padding-top:0}
  .kebab{width:34px;height:34px;border-color:var(--line)}
  .panel-foot{font-size:11px;text-align:center}
}

/* daftar pengguna versi HP (kartu ringkas) */
.mob-only{display:none}
.u-cards{list-style:none;margin:0;padding:0}
.u-card-top{display:flex;align-items:center;gap:10px;padding:12px 12px 8px}
.u-card-top .uname{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.u-card-top .uname b{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-card-top .uname em{font-size:11px;color:var(--muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-card-meta{display:flex;gap:20px;padding:0 12px 12px 56px}
.u-card-meta div{display:flex;flex-direction:column;gap:2px;min-width:0}
.u-card-meta span{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.u-card-meta b{font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-cards li{border-bottom:1px solid var(--line)}
.u-cards li:last-child{border-bottom:0}
.u-card-empty{padding:24px;text-align:center;color:var(--muted);font-size:12.5px}

@media (max-width:760px){
  .desk-only{display:none}
  .mob-only{display:block}
  .u-card-top .kebab{width:32px;height:32px;border-color:var(--line);font-size:15px}
}

/* ---------- edit pengguna (popup) ---------- */
.modal.wide{max-width:560px;display:flex;flex-direction:column;max-height:min(86vh,720px);overflow:hidden}
.modal-scroll{padding:14px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;gap:14px}
.form-stack{display:flex;flex-direction:column;gap:12px}
.opt{font-style:normal;text-transform:none;letter-spacing:0;color:var(--muted);font-size:10.5px}
.check-row{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--text);cursor:pointer;padding:2px 0}
.check-row input{width:15px;height:15px;accent-color:#6b7688}
.btn.block{width:100%;justify-content:center;margin-left:0;height:38px;font-size:13px}
.btn.danger.block{color:#fff;background:#f14446;border-color:#f14446}
.btn.danger.block:hover{background:#dc3a3c}
.btn.danger.block.arm{background:#c92d2f;border-color:#c92d2f}
.modal-section{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.modal-sub{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600}
.modal-sub span{margin-left:auto;font-size:11px;font-weight:500;color:var(--muted)}
.mini-table{border:1px solid var(--line);border-radius:5px;overflow:hidden}
.mini-table table{width:100%;border-collapse:collapse;font-size:11.5px}
.mini-table th{padding:7px 10px;background:var(--panel-2);border-bottom:1px solid var(--line);color:var(--muted);font-size:11px;text-transform:none;letter-spacing:0;font-weight:500;text-align:left;white-space:nowrap}
.mini-table td{padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.mini-table tbody tr:last-child td{border-bottom:0}
.u-name{display:flex;align-items:center;gap:8px}
.u-name b{font-weight:600;font-size:12.5px}
.cell-edit{text-align:right;width:52px}

@media (max-width:640px){
  .modal.wide{max-width:none}
  .modal-scroll{max-height:88vh;padding:12px}
  .mini-table{overflow-x:auto}
  .cell-edit{width:100%;display:flex;justify-content:flex-end}
}

/* penyempurnaan sesuai tema admin */
td:nth-child(2),table.users td:nth-child(2){font-variant-numeric:tabular-nums}
table.users th:nth-child(2),table.users td:nth-child(2){text-align:right}
table.users th:nth-child(3),table.users td:nth-child(3){text-align:right}
.page-head h1{font-size:18px}
.panel-head{font-weight:600}

/* ---------- pengguna: mengikuti referensi admin (search card + tabel + modal) ---------- */
.search-panel{padding:10px}
.search-box{width:100%;height:42px;border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:0 12px;font-size:12.5px;color:var(--text);outline:0;font-family:inherit}
.search-box::placeholder{color:var(--muted)}
.search-box:focus{border-color:#d7d9dd;box-shadow:0 0 0 3px rgba(23,23,25,.05)}
[data-theme="dark"] .search-box:focus{border-color:#3a4250}
.users th{padding:12px 14px;font-size:13px;color:var(--text);font-weight:500;background:transparent;border-bottom:1px solid var(--line)}
.users td{padding:13px 14px;font-size:13px;border-bottom:1px solid var(--line)}
.users tbody tr:hover{background:transparent}
.users tbody tr:last-child td{border-bottom:1px solid var(--line)}
.u-name{display:flex;align-items:center;gap:8px}
.u-name b{font-weight:400;font-size:13px}
.edit-link{width:26px;height:26px;border:0;background:transparent;color:var(--blue);display:inline-grid;place-items:center;border-radius:4px}
.edit-link:hover{background:rgba(60,131,247,.1)}
.users th:nth-child(2),.users td:nth-child(2){text-align:left}
.users th:nth-child(3),.users td:nth-child(3){text-align:left}

/* modal ikut referensi */
.modal-head{padding:16px;font-size:15px;font-weight:500}
.modal-head b{font-weight:500}
.form-stack{gap:14px}
.form-stack .field > span{font-size:13px;text-transform:none;letter-spacing:0;color:var(--text);font-weight:400}
.form-stack .input{height:42px;font-size:13px}
.check-row{font-size:13px}
.btn.block{height:44px;font-size:13.5px;font-weight:500;border-radius:6px}
.btn.danger.block{background:var(--red);border-color:var(--red)}
.modal-scroll{gap:16px}

@media (max-width:640px){
  .search-box{height:46px}
  .users th{padding:11px 10px;font-size:12px}
  .users td{padding:12px 10px}
  .users td::before{font-size:10.5px}
}

/* tabel pengguna tetap tabel di HP (seperti referensi) */
@media (max-width:640px){
  table.users{display:table;width:100%;border-collapse:collapse}
  table.users thead{display:table-header-group}
  table.users tbody{display:table-row-group}
  table.users tr{display:table-row;padding:0;border:0}
  table.users th{display:table-cell;padding:10px 8px;font-size:11.5px;white-space:nowrap}
  table.users td{display:table-cell;padding:11px 8px;border-bottom:1px solid var(--line);font-size:12px;white-space:nowrap}
  table.users td::before{content:none}
  table.users .u-name{display:flex;align-items:center;gap:5px;max-width:132px}
  table.users .u-name b{overflow:hidden;text-overflow:ellipsis;max-width:96px}
  table.users .tag{display:none}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
}

.modal-divider{height:1px;background:var(--line);margin:2px 0}

/* tabel kecil di dalam modal tetap tabel pada HP */
@media (max-width:640px){
  .mini-table{overflow-x:auto}
  .mini-table table{display:table;min-width:100%}
  .mini-table thead{display:table-header-group}
  .mini-table tbody{display:table-row-group}
  .mini-table tr{display:table-row;border:0;padding:0}
  .mini-table th,.mini-table td{display:table-cell;padding:7px 8px;font-size:11px;border-bottom:1px solid var(--line);white-space:nowrap}
  .mini-table td::before{content:none}
  .modal-scroll{gap:14px}
}

/* fix: isi modal tidak boleh menyusut di flex column */
.modal-scroll > *{flex:0 0 auto}
.modal-divider{height:1px;min-height:1px;flex:0 0 1px;background:var(--line)}
.modal-scroll .btn.block{min-height:44px}
.users th:nth-child(2),.users td:nth-child(2),
.users th:nth-child(3),.users td:nth-child(3){text-align:left}

/* ---------- popup pengguna: tab + versi HP ringkas ---------- */
.modal-tabs{display:flex;gap:4px;padding:8px 14px;border-bottom:1px solid var(--line);overflow-x:auto;flex:0 0 auto}
.modal-tabs button{height:30px;padding:0 12px;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:12.5px;white-space:nowrap}
.modal-tabs button:hover{background:var(--hover);color:var(--text)}
.modal-tabs button.on{background:rgba(0,0,0,.055);color:var(--text);font-weight:600}
[data-theme="dark"] .modal-tabs button.on{background:rgba(255,255,255,.09)}
.search-inline.wide{width:100%;min-width:0;height:38px;margin-bottom:2px}

@media (max-width:640px){
  .modal{max-height:86vh}
  .modal-head{padding:13px 14px;font-size:14px}
  .modal-tabs{padding:7px 12px}
  .modal-tabs button{height:28px;font-size:12px;padding:0 10px}
  .modal-scroll{padding:12px;gap:12px;max-height:none}
  .form-stack{gap:11px}
  .form-stack .field > span{font-size:12px}
  .form-stack .input{height:40px;font-size:13px}
  .check-row{font-size:12.5px}
  .modal-scroll .btn.block{min-height:42px;height:42px;font-size:13px}
  .search-inline.wide{height:40px}
}

.header-add{margin-left:auto;margin-right:8px}
.status-row{display:flex;align-items:center;gap:8px}
.status-row .switch{flex:1}
.btn.tiny.arm{background:rgba(241,68,70,.1);border-color:rgba(241,68,70,.4);color:#c92d2f}

.u-id{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.u-id b{font-weight:500;font-size:12.5px;font-variant-numeric:tabular-nums}
.u-id em{font-size:11px;color:var(--muted);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:640px){
  table.users .u-name{max-width:none}
  table.users .u-id b{font-size:12px}
  table.users .u-id em{font-size:10.5px;max-width:120px}
}

/* tambah server di atas daftar */
.add-card.top{margin-bottom:12px}
.srv-actions .btn.tiny{height:30px}

/* popup di tengah (bukan sheet bawah) di HP */
@media (max-width:640px){
  .overlay{align-items:center;padding:14px}
  .modal{max-height:84vh;border-radius:8px}
  .modal.wide{max-width:none}
  .srv-actions{gap:8px}
  .srv-actions .check{width:100%;margin-right:0}
  .srv-actions .btn.primary{flex:1}
  .srv-actions .btn.tiny.danger{height:34px;padding:0 10px}
}

/* kotak cari dengan ikon */
.search-field{display:flex;align-items:center;gap:8px;height:42px;border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:0 12px;color:var(--muted)}
.search-field input{flex:1;border:0;outline:0;background:transparent;font-size:12.5px;color:var(--text);font-family:inherit}
.search-field input::placeholder{color:var(--muted)}
.search-field:focus-within{border-color:#d7d9dd;box-shadow:0 0 0 3px rgba(23,23,25,.05)}
[data-theme="dark"] .search-field:focus-within{border-color:#3a4250}
.u-idnum{font-size:12.5px;font-weight:500;font-variant-numeric:tabular-nums}
@media (max-width:640px){.search-field{height:46px}}

/* saldo & aksi di popup pengguna */
.saldo-box{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--line);border-radius:6px;background:var(--panel-2)}
.saldo-box span{font-size:12px;color:var(--muted)}
.saldo-box b{margin-left:auto;font-size:19px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.saldo-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.saldo-actions .btn{margin-left:0;justify-content:center;height:36px;gap:5px}
.saldo-actions .btn.on{border-color:var(--blue);color:var(--blue);background:rgba(60,131,247,.08)}
.saldo-form{border:1px solid var(--line);border-radius:6px;padding:12px;background:var(--panel-2);display:flex;flex-direction:column;gap:10px}
.saldo-form-actions{display:flex;gap:8px;justify-content:flex-end}
.saldo-form-actions .btn{margin-left:0;min-width:88px;justify-content:center}
.saldo-form .field > span{text-transform:none;letter-spacing:0;font-size:12px;color:var(--text)}
@media (max-width:640px){
  .saldo-box b{font-size:17px}
  .saldo-actions .btn{height:38px;font-size:12px}
  .saldo-form-actions .btn{flex:1}
}

.saldo-box .saldo-edit{margin-left:6px;color:var(--blue);width:30px;height:30px}
.saldo-box .saldo-edit:hover{background:rgba(60,131,247,.1)}
.saldo-box .saldo-edit.on{background:rgba(60,131,247,.12)}
.saldo-form .seg.full{margin:0}

/* saldo mengikuti gaya field UserID */
.field .input-btn .input[readonly]{background:var(--panel);color:var(--text)}
.field .input-btn .saldo-edit{color:var(--blue);width:34px;height:34px;border:1px solid var(--line);border-radius:4px;background:var(--panel)}
.field .input-btn .saldo-edit:hover{background:rgba(60,131,247,.08);border-color:rgba(60,131,247,.35)}
.field .input-btn .saldo-edit.on{background:rgba(60,131,247,.12);border-color:rgba(60,131,247,.45)}

/* saldo ringkas + editor rapi */
.saldo-row{display:flex;align-items:center;gap:8px}
.saldo-value{display:inline-flex;align-items:center;height:40px;padding:0 14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text)}
.saldo-edit{width:40px;height:40px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--blue);display:inline-grid;place-items:center}
.saldo-edit:hover{background:rgba(60,131,247,.08);border-color:rgba(60,131,247,.35)}
.saldo-edit.on{background:rgba(60,131,247,.12);border-color:rgba(60,131,247,.45)}
.saldo-form{border:1px solid var(--line);border-radius:6px;background:var(--panel-2);padding:10px;display:flex;flex-direction:column;gap:10px}
.saldo-form .seg.full{width:100%;margin:0}
.saldo-form .seg.full button{flex:1;height:32px;font-size:12.5px}
.saldo-input-row{display:flex;gap:8px;align-items:center}
.saldo-input-row .input{flex:1;height:38px}
.saldo-input-row .btn{margin-left:0;height:38px;min-width:92px;justify-content:center}
.link-btn{align-self:flex-start;border:0;background:transparent;color:var(--muted);font-size:12px;padding:0}
.link-btn:hover{color:var(--text);text-decoration:underline}
@media (max-width:640px){
  .saldo-value{height:42px}
  .saldo-edit{width:42px;height:42px}
  .saldo-form .seg.full button{height:34px}
}

/* field saldo ringkas dengan pensil menyatu */
.saldo-field{display:inline-flex;align-items:center;gap:2px;height:40px;padding:0 4px 0 14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);width:max-content;max-width:100%}
.saldo-field .saldo-value{height:100%;display:inline-flex;align-items:center;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);padding:0}
.saldo-edit{width:30px;height:30px;border:0;border-radius:4px;background:transparent;color:var(--blue);display:inline-grid;place-items:center}
.saldo-edit:hover{background:rgba(60,131,247,.1)}
.saldo-edit.on{background:rgba(60,131,247,.14)}
.saldo-input-row{gap:8px}
.saldo-input-row .btn{min-width:0;padding:0 14px;height:38px;justify-content:center;margin-left:0}
.saldo-input-row .btn.primary{min-width:78px}
.btn:disabled{color:#8b9096}
@media (max-width:640px){
  .saldo-field{height:42px}
  .saldo-edit{width:34px;height:34px}
  .saldo-input-row .input{flex:1;min-width:0}
  .saldo-input-row .btn{padding:0 12px;height:42px}
  .saldo-input-row .btn.primary{min-width:72px}
}

.btn.primary:disabled,.btn.primary[disabled]{background:var(--panel-2);border-color:var(--line);color:var(--muted);opacity:1}
.btn:disabled,.btn[disabled]{color:#8b9096}

/* saldo: field penuh seperti versi sebelumnya */
.field .input-btn .input[readonly]{background:var(--panel);color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
.field .input-btn .saldo-edit{width:38px;height:38px;border:1px solid var(--line);border-radius:4px;background:var(--panel);color:var(--blue);display:inline-grid;place-items:center}
.field .input-btn .saldo-edit:hover{background:rgba(60,131,247,.08);border-color:rgba(60,131,247,.35)}
.field .input-btn .saldo-edit.on{background:rgba(60,131,247,.12);border-color:rgba(60,131,247,.45)}
@media (max-width:640px){
  .field .input-btn .saldo-edit{width:42px;height:42px}
}

/* ikon search di samping input (bukan tombol) */
.search-row{display:flex;align-items:center;gap:9px}
.search-ico{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);pointer-events:none;flex:0 0 auto}
.search-input{flex:1;height:42px;border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:0 12px;font-size:12.5px;color:var(--text);font-family:inherit;outline:0;min-width:0}
.search-input::placeholder{color:var(--muted)}
.search-input:focus{border-color:#d7d9dd;box-shadow:0 0 0 3px rgba(23,23,25,.05)}
[data-theme="dark"] .search-input{background:var(--input)}
[data-theme="dark"] .search-input:focus{border-color:#3a4250}
@media (max-width:640px){.search-input{height:44px}}

.build-tag{margin:8px 16px 0;font-size:10px;color:#6c7889;letter-spacing:.02em}

/* input search jelas terlihat */
.search-input{border:1px solid #cfd3d9;background:#ffffff;color:var(--text);box-shadow:inset 0 1px 1px rgba(23,23,25,.03)}
.search-input:hover{border-color:#b9bfc7}
.search-input:focus{border-color:#3c83f7;box-shadow:0 0 0 3px rgba(60,131,247,.15)}
.search-ico{color:#8b9096}
.search-inline{border:1px solid #cfd3d9;background:#ffffff;height:38px}
.search-inline:focus-within{border-color:#3c83f7;box-shadow:0 0 0 3px rgba(60,131,247,.15)}
[data-theme="dark"] .search-input{border-color:#333d4a;background:#12161d}
[data-theme="dark"] .search-inline{border-color:#333d4a;background:#12161d}

/* search lebih jelas: isi abu muda + border lebih tegas */
.search-input{background:#f4f5f7;border:1px solid #c4c9d0}
.search-input::placeholder{color:#6b7075}
.search-inline{background:#f4f5f7;border:1px solid #c4c9d0;height:40px}
.search-inline input{color:var(--text)}
.search-inline input::placeholder{color:#6b7075}
[data-theme="dark"] .search-input,[data-theme="dark"] .search-inline{background:#1b212b;border-color:#39424f}
[data-theme="dark"] .search-input::placeholder,[data-theme="dark"] .search-inline input::placeholder{color:#98a1ad}

/* kembalikan warna input search seperti semula */
.search-input{background:var(--panel);border:1px solid var(--line);color:var(--text)}
.search-input::placeholder{color:var(--muted)}
.search-inline{background:var(--panel);border:1px solid var(--line)}
.search-inline input::placeholder{color:var(--muted)}
[data-theme="dark"] .search-input,[data-theme="dark"] .search-inline{background:var(--panel);border-color:var(--line)}
/* ikon search lebih tegas & modern */
.search-ico{color:var(--muted)}
.search-ico svg{stroke-linecap:round;stroke-linejoin:round}
.search-inline svg{color:var(--muted)}

/* boot / auth */
.boot{padding:40px 16px;text-align:center;color:var(--muted);font-size:13px}
.boot b{display:block;color:var(--text);font-size:14px;margin-bottom:6px}
.danger-zone{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}

/* smooth page + loading */
.page{animation:pageIn .18s ease}
@keyframes pageIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.skel{display:inline-block;background:linear-gradient(90deg,var(--panel-2) 25%,var(--line) 37%,var(--panel-2) 63%);background-size:400% 100%;animation:skelShine 1.15s ease-in-out infinite;border-radius:4px}
@keyframes skelShine{0%{background-position:100% 0}100%{background-position:0 0}}
.skel-lines{display:flex;flex-direction:column;gap:10px;padding:16px 18px}
.skel-row td{padding:12px 18px !important;border-bottom:1px solid var(--line)}
.skel-card{opacity:.9}
.spin{display:inline-block;width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .65s linear infinite;vertical-align:-2px}
@keyframes spin{to{transform:rotate(360deg)}}
.btn{transition:background .15s ease,border-color .15s ease,opacity .15s ease}
.btn:disabled{cursor:not-allowed;opacity:1;background:var(--panel-2);color:var(--muted);border-color:var(--line);box-shadow:none}
.btn.danger:disabled{background:var(--panel-2);color:var(--muted)}
.page-head{flex-wrap:wrap;gap:4px 10px}
.page-date{text-align:right}
.btn.primary:not(:disabled):active{transform:translateY(1px)}
.panel{animation:panelIn .2s ease both}
@keyframes panelIn{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  .page,.panel,.skel,.spin{animation:none}
}

.boot-skel{display:flex;flex-direction:column;gap:14px;animation:pageIn .2s ease both}
.boot-skel .stats{margin:0}

/* popup: tabel riwayat & tab */
.modal-tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none}
.modal-tabs::-webkit-scrollbar{display:none}
.mini-table td.empty{text-align:center;color:var(--muted)}
.mini-table td.empty::before{display:none}
@media (max-width:640px){
  .modal.wide{max-height:calc(100dvh - 24px)}
  .mini-table table{font-size:10.5px}
  .mini-table th,.mini-table td{padding:7px 6px}
  .modal-tabs{padding:8px 10px}
  .modal-tabs button{padding:0 10px;font-size:12px}
}

/* saldo: pensil di dalam field, lebar sama dengan field lain */
.field .input-btn{position:relative;display:block}
.field .input-btn .input{width:100%;padding-right:44px}
.field .input-btn .saldo-edit{position:absolute;right:1px;top:1px;bottom:1px;height:auto;width:38px;border:0;border-left:1px solid var(--line);border-radius:0 3px 3px 0;background:transparent;color:var(--blue)}
.field .input-btn .saldo-edit:hover{background:rgba(60,131,247,.07)}
.field .input-btn .saldo-edit.on{background:rgba(60,131,247,.1)}

/* tab hapus pengguna */
.del-panel{display:flex;flex-direction:column;gap:14px}
.del-warn{background:rgba(241,68,70,.07);border:1px solid rgba(241,68,70,.25);border-radius:6px;padding:12px 14px}
.del-warn b{display:block;font-size:13px;color:#c93a3c;margin-bottom:4px}
.del-warn p{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
[data-theme="dark"] .del-warn b{color:#ff7b7d}
.del-info{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:6px}
.del-info li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);font-size:12.5px}
.del-info li:last-child{border-bottom:0}
.del-info span{color:var(--muted)}
.del-info b{font-weight:600}
.del-actions{display:flex;gap:8px}
.del-actions .btn{margin-left:0}
.del-actions .btn.block{flex:1;justify-content:center;min-height:42px}

/* footer tabel */
.table-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line);font-size:12px}
.table-foot .btn{margin-left:0;height:30px}
@media (max-width:640px){.table-foot{flex-direction:column;align-items:stretch}.table-foot .btn{justify-content:center;height:34px}}
