
*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
:root{
  --primary:#0D6EFD;--secondary:#0B5ED7;--success:#198754;--warning:#FFC107;--danger:#DC3545;--info:#0DCAF0;--neutral:#6C757D;
  --bg:#f4f6f9;--surface:#ffffff;--surface-2:#f8fafc;--surface-3:#f1f4f8;
  --border:#e4e8ee;--border-strong:#d4dae2;
  --text:#363d46;--heading:#0f1318;--muted:#6c757d;--faint:#9aa3ad;
  --sb-bg:#ffffff;--sb-text:#1c2230;--sb-muted:#5d6671;--sb-label:#a2abb5;
  --sb-active:rgba(13,110,253,.10);--sb-active-text:#0D6EFD;--sb-hover:#f2f5f9;--sb-border:#e8ebef;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.05);
  --shadow-lg:0 12px 40px -8px rgba(16,24,40,.22);
}
html[data-theme="dark"]{
  --bg:#0e1116;--surface:#181c22;--surface-2:#1d222a;--surface-3:#222831;
  --border:#2a2f38;--border-strong:#363d47;
  --text:#c9cfd8;--heading:#f4f6f9;--muted:#868e99;--faint:#646c77;
  --sb-bg:#121823;--sb-text:#eef2f7;--sb-muted:rgba(232,238,246,.6);--sb-label:rgba(232,238,246,.4);
  --sb-active:rgba(13,110,253,.26);--sb-active-text:#eef2f7;--sb-hover:rgba(255,255,255,.05);--sb-border:rgba(255,255,255,.07);
  --shadow:0 1px 2px rgba(0,0,0,.45);--shadow-lg:0 16px 48px -8px rgba(0,0,0,.6);
}
body{background:var(--bg);font-family:'Inter',system-ui,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased;}
.app{display:flex;min-height:100vh;}

/* ===== SIDEBAR ===== */
.sb{width:248px;flex:0 0 248px;background:var(--sb-bg);color:var(--sb-text);display:flex;flex-direction:column;border-right:1px solid var(--border);position:fixed;top:0;bottom:0;left:0;z-index:60;transition:transform .28s ease;}
.sb-logo{display:flex;align-items:center;justify-content:center;position:relative;gap:11px;padding:16px 18px;border-bottom:1px solid var(--sb-border);}
.sb-logo .sb-close{position:absolute;right:18px;}
.bird{width:48px;height:48px;flex:0 0 48px;border-radius:10px;display:flex;align-items:center;justify-content:center;}
.bird svg{width:24px;height:24px;}
.bird img{width:100%;height:100%;object-fit:contain;}
.sb-logo .wm{display:flex;flex-direction:column;line-height:1;}
.sb-logo .wm b{font-size:18px;font-weight:800;letter-spacing:.03em;color:var(--heading);}
.sb-logo .wm span{font-size:9px;font-weight:600;letter-spacing:.24em;color:var(--sb-label);margin-top:5px;}
.sb-close{display:none;margin-left:auto;font-size:18px;color:var(--muted);background:none;border:none;cursor:pointer;}
.sb-nav{flex:1;overflow-y:auto;padding:8px 12px;scrollbar-width:thin;}
.sb-nav::-webkit-scrollbar{width:6px;}.sb-nav::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:20px;}
.sb-group{font-size:9.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--sb-label);padding:13px 10px 6px;}
.nav-item{display:flex;align-items:center;gap:11px;padding:8px 11px;border-radius:8px;font-size:13px;font-weight:500;color:var(--sb-muted);cursor:pointer;position:relative;margin-bottom:1px;text-decoration:none;}
.nav-item .mi{font-size:14px;width:18px;text-align:center;flex:0 0 18px;}
.nav-item .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nav-item:hover{background:var(--sb-hover);color:var(--sb-text);}
.nav-item.active{background:var(--sb-active);color:var(--sb-active-text);font-weight:600;}
.nav-item.active .mi{color:var(--sb-active-text);}
.nav-item.active::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--primary);}
.caret{margin-left:auto;font-size:10px;transition:transform .22s ease;color:var(--sb-label);flex:0 0 auto;}
.nav-parent.open>.nav-item>.caret,.nav-parent.open>.sub-item>.caret{transform:rotate(90deg);}
.submenu{overflow:hidden;max-height:0;transition:max-height .26s ease;margin:1px 0 1px 23px;padding-left:11px;border-left:1px solid var(--sb-border);}
.nav-parent.open>.submenu{max-height:900px;}
.sub-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;font-size:12.5px;font-weight:500;color:var(--sb-muted);margin-bottom:1px;cursor:pointer;position:relative;text-decoration:none;}
.sub-item .mi{font-size:11.5px;width:16px;flex:0 0 16px;text-align:center;opacity:.82;}
.sub-item:hover{background:var(--sb-hover);color:var(--sb-text);}
.sub-item.active{color:var(--sb-active-text);font-weight:600;background:var(--sb-active);}
.sb-overlay{display:none;position:fixed;inset:0;background:rgba(8,12,20,.5);z-index:55;backdrop-filter:blur(1px);}

/* ===== MAIN ===== */
.main{flex:1;display:flex;flex-direction:column;min-width:0;margin-left:248px;}
.tb{height:60px;flex:0 0 60px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 20px;position:sticky;top:0;z-index:40;}
.tb-burger{display:none;font-size:19px;color:var(--muted);background:none;border:none;cursor:pointer;}
.crumb{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);min-width:0;}
.crumb b{color:var(--heading);font-weight:600;}
.crumb i{font-size:10px;}
.tb-search{margin-left:4px;flex:1;max-width:360px;display:flex;align-items:center;gap:9px;background:var(--surface-3);border:1px solid var(--border);border-radius:9px;padding:8px 13px;}
.tb-search i{font-size:13px;color:var(--faint);}
.tb-search input{border:none;background:none;outline:none;font-family:inherit;font-size:13px;color:var(--text);width:100%;}
.tb-search input::placeholder{color:var(--faint);}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:4px;}
.tb-ico{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--muted);background:none;border:none;cursor:pointer;position:relative;}
.tb-ico:hover{background:var(--surface-3);color:var(--heading);}
.tb-div{width:1px;height:28px;background:var(--border);margin:0 6px;}
.tb-user{display:flex;align-items:center;gap:10px;padding:5px 8px 5px 5px;border-radius:10px;cursor:pointer;}
.tb-user:hover{background:var(--surface-3);}
.avatar{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;flex:0 0 34px;}
.avatar img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit;}
.tb-user .u{display:flex;flex-direction:column;line-height:1.3;}
.tb-user .u b{font-size:13px;font-weight:600;color:var(--heading);}
.tb-user .u span{font-size:11px;color:var(--muted);}

.content{flex:1;padding:22px 24px 60px;}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap;}
.page-head h1{font-size:22px;font-weight:700;letter-spacing:-.015em;color:var(--heading);margin:0 0 4px;}
.page-head p{font-size:12.5px;color:var(--muted);margin:0;}
.ph-actions{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;}
.ph-actions>.dropdown{display:flex;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12.5px;font-weight:600;border-radius:8px;padding:9px 15px;cursor:pointer;border:1px solid transparent;font-family:inherit;white-space:nowrap;transition:opacity .15s ease;}
.btn:disabled,.btn[disabled]{cursor:not-allowed;opacity:.75;}
.btn.is-loading{cursor:progress;}
.btn i{font-size:12px;}
.btn-pri{background:var(--primary);color:#fff;border-color:var(--primary);}
.btn-pri:hover{background:var(--secondary);color:#fff;}
.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow);}
.btn-ghost:hover{background:var(--surface-3);color:var(--text);border-color:var(--border-strong);}
.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger);}
.btn-danger:hover{filter:brightness(.93);color:#fff;}
.btn-sm{padding:7px 11px;font-size:12px;}

/* stat strip */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:13px 15px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px;}
.stat .si{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:15px;flex:0 0 38px;}
.si.b{background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);}
.si.g{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success);}
.si.y{background:color-mix(in srgb,var(--warning) 20%,transparent);color:#b8860b;}
html[data-theme="dark"] .si.y{color:var(--warning);}
.si.r{background:color-mix(in srgb,var(--danger) 13%,transparent);color:var(--danger);}
.stat .sv{font-size:19px;font-weight:800;color:var(--heading);letter-spacing:-.02em;line-height:1;}
.stat .sl{font-size:11px;color:var(--muted);margin-top:4px;font-weight:500;}

/* ===== TABLE CARD ===== */
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;}
.toolbar{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.toolbar .tbsearch{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 12px;flex:1;min-width:180px;max-width:320px;height:34px;box-sizing:border-box;}
.toolbar .pt-pg-size select{height:34px;}
.toolbar .tbsearch i{font-size:12px;color:var(--faint);}
.toolbar .tbsearch input{border:none;background:none;outline:none;font-family:inherit;font-size:12.5px;color:var(--text);width:100%;}
.select{position:relative;}
.select select{appearance:none;font-family:inherit;font-size:12.5px;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 30px 8px 12px;cursor:pointer;outline:none;}
.select::after{content:"\f078";font-family:"Font Awesome 6 Pro";font-weight:900;font-size:9px;color:var(--faint);position:absolute;right:11px;top:50%;transform:translateY(-50%);pointer-events:none;}
.toolbar .spacer{flex:1;}
.toolbar .count{font-size:12px;color:var(--muted);font-weight:500;}
.mobile-filter{display:none;}
.view-toggle{display:inline-flex;background:var(--surface-3);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px;}
.vt{width:32px;height:28px;border:none;background:none;border-radius:6px;color:var(--muted);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.vt:hover{color:var(--heading);}
.vt.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow);}

.table-wrap{overflow-x:auto;}
:is(.table-wrap,.tbl-scroll) table{width:100%;border-collapse:collapse;}
:is(.table-wrap,.tbl-scroll) thead th{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);text-align:left;padding:10px 16px;background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;}
:is(.table-wrap,.tbl-scroll) th.chk-col,:is(.table-wrap,.tbl-scroll) td.chk-col{width:42px;padding-right:0;}
:is(.table-wrap,.tbl-scroll) th.sortable{cursor:pointer;user-select:none;transition:background .12s,color .12s;}
:is(.table-wrap,.tbl-scroll) th.sortable:hover{color:var(--heading);background:var(--surface-3);}
:is(.table-wrap,.tbl-scroll) th.sortable .sort-ic{margin-left:4px;font-size:9px;color:var(--faint);}
:is(.table-wrap,.tbl-scroll) th.sortable.sort-asc,:is(.table-wrap,.tbl-scroll) th.sortable.sort-desc{color:var(--heading);}
:is(.table-wrap,.tbl-scroll) th.sortable.sort-asc .sort-ic,:is(.table-wrap,.tbl-scroll) th.sortable.sort-desc .sort-ic{color:var(--primary);}
:is(.table-wrap,.tbl-scroll) tbody td{font-size:12.5px;color:var(--text);padding:10px 16px;border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;}
:is(.table-wrap,.tbl-scroll) tbody tr:last-child td{border-bottom:none;}
:is(.table-wrap,.tbl-scroll) tbody tr:hover{background:var(--surface-2);}

/* compact table density for pages that need more rows above the fold */
.table-compact :is(.table-wrap,.tbl-scroll) thead th{padding:7px 12px;font-size:9.5px;line-height:1.15;}
.table-compact :is(.table-wrap,.tbl-scroll) tbody td{padding:7px 12px;font-size:12px;line-height:1.15;}
.table-compact :is(.table-wrap,.tbl-scroll) th.chk-col,
.table-compact :is(.table-wrap,.tbl-scroll) td.chk-col{width:38px;}
.table-compact :is(.table-wrap,.tbl-scroll) .row-act{gap:3px;}
.table-compact :is(.table-wrap,.tbl-scroll) .iconbtn{width:28px;height:28px;font-size:11px;}
.table-compact :is(.table-wrap,.tbl-scroll) .bdg{font-size:10.5px;padding:2px 8px;}
.table-compact .toolbar{padding-top:11px;padding-bottom:11px;}

.cb{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;appearance:none;position:relative;flex:0 0 16px;}
.cb:checked{background:var(--primary);border-color:var(--primary);}
.cb:checked::after{content:"\f00c";font-family:"Font Awesome 6 Pro";font-weight:900;font-size:9px;color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}
.emp{display:flex;align-items:center;gap:10px;}
.emp .ea{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex:0 0 30px;}
.emp .en{display:flex;flex-direction:column;line-height:1.35;min-width:0;}
.emp .en b{font-size:12.5px;font-weight:600;color:var(--heading);}
.emp .en span{font-size:11px;color:var(--muted);}
.bg-primary-soft{background:color-mix(in srgb,var(--primary) 14%,transparent)!important;color:var(--primary)!important;}
.nik{font-variant-numeric:tabular-nums;font-weight:600;color:var(--heading);}
.text-center{text-align:center!important;}
.text-right{text-align:right!important;}
.linkbtn{border:none;background:none;padding:0;margin:0;font:inherit;font-size:12.5px;font-weight:600;color:var(--primary);cursor:pointer;text-decoration:underline;text-underline-offset:2px;}
.linkbtn:hover{color:var(--secondary);}
.bdg{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap;}
.bdg::before{content:"";width:6px;height:6px;border-radius:50%;}
.bdg.tetap{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent);}.bdg.tetap::before{background:var(--success);}
.bdg.kontrak{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);}.bdg.kontrak::before{background:var(--primary);}
.bdg.probation{color:#9a7400;background:color-mix(in srgb,var(--warning) 22%,transparent);}.bdg.probation::before{background:var(--warning);}
html[data-theme="dark"] .bdg.probation{color:var(--warning);}
.bdg.nonaktif{color:var(--neutral);background:color-mix(in srgb,var(--neutral) 16%,transparent);}.bdg.nonaktif::before{background:var(--neutral);}
.row-act{display:flex;align-items:center;gap:4px;justify-content:flex-end;}
.iconbtn{width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted);background:none;border:1px solid transparent;cursor:pointer;}
.iconbtn:hover{background:var(--surface-3);color:var(--heading);border-color:var(--border);}
.iconbtn.del:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent);}
.iconbtn.act-approve{background:var(--primary);border-color:var(--primary);color:#fff;}
.iconbtn.act-approve:hover{background:var(--secondary);border-color:var(--secondary);color:#fff;}
.iconbtn.act-danger{background:var(--danger);border-color:var(--danger);color:#fff;}
.iconbtn.act-danger:hover{filter:brightness(.93);color:#fff;}
.iconbtn.act-revision{background:var(--neutral);border-color:var(--neutral);color:#fff;}
.iconbtn.act-revision:hover{filter:brightness(.93);color:#fff;}
.iconbtn.act-info{background:var(--info);border-color:var(--info);color:#06333c;}
.iconbtn.act-info:hover{filter:brightness(.95);color:#06333c;}
.iconbtn.act-warning{background:var(--warning);border-color:var(--warning);color:#3d2e00;}
.iconbtn.act-warning:hover{filter:brightness(.96);color:#3d2e00;}
/* dropdown aksi baris */
.dd{position:relative;display:inline-block;}
.dd-trigger{cursor:pointer;}
.dd-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:170px;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:0 8px 24px -4px rgba(16,30,60,.18);padding:6px;z-index:30;opacity:0;transform:translateY(-6px);pointer-events:none;transition:.16s;}
.dd.open .dd-menu{opacity:1;transform:none;pointer-events:auto;}
.dd-menu button{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;font-family:inherit;font-size:12.5px;font-weight:500;color:var(--text);padding:8px 10px;border-radius:8px;cursor:pointer;text-align:left;}
.dd-menu button i{width:14px;font-size:12.5px;color:var(--muted);}
.dd-menu button:hover{background:var(--surface-3);color:var(--heading);}
.dd-menu button.danger{color:var(--danger);}
.dd-menu button.danger i{color:var(--danger);}
.dd-menu button.danger:hover{background:color-mix(in srgb,var(--danger) 10%,transparent);}
.dd-sep{height:1px;background:var(--border);margin:5px 3px;}

/* mobile card list */
.card-list{display:none;flex-direction:column;}
/* desktop card-grid mode */
.card.show-cards .table-wrap{display:none;}
.card.show-cards .card-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:14px;padding:16px;}
.card.show-cards .ec{border:1px solid var(--border);border-radius:11px;background:var(--surface-2);}
.ec{padding:13px 14px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:10px;}
.ec:active{background:var(--surface-2);}
.ec:last-child{border-bottom:none;}
.ec-top{display:flex;align-items:center;gap:11px;margin-bottom:5px;}
.ec-top .ea{width:42px;height:42px;border-radius:10px;font-size:14px;flex:0 0 42px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;}
.ec-top .ei{flex:1;min-width:0;}
.ec-top .ei b{font-size:14px;font-weight:700;color:var(--heading);display:block;}
.ec-top .ei span{font-size:12px;color:var(--muted);}
.ec-meta{display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;}
.ec-meta .m{display:flex;flex-direction:column;gap:2px;}
.ec-meta .m .k{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);}
.ec-meta .m .v{font-size:12.5px;color:var(--text);font-weight:500;}
.ec-foot{display:flex;align-items:center;gap:8px;padding-top:2px;margin-top:5px;}
.ec-foot .btn{flex:1;}
.ec-foot .ec-del{flex:0 0 auto;color:var(--danger);}
.ec-head{display:flex;align-items:center;gap:11px;margin-bottom:5px;}
.ec-head .ea{width:40px;height:40px;border-radius:10px;font-size:13.5px;flex:0 0 40px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;}
.ec-head .ei{flex:1;min-width:0;}
.ec-head .ei b{font-size:13.5px;font-weight:700;color:var(--heading);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ec-head .ei span{font-size:12px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ec-info{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:5px;}
.ec-info .chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--text);background:var(--surface-3);border:1px solid var(--border);border-radius:7px;padding:4px 9px;min-width:0;max-width:100%;}
.ec-info .chip i{font-size:10px;color:var(--faint);flex:0 0 auto;}
.ec-info .chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ec-rows{display:flex;flex-direction:column;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:5px;}
.ec-rows .er{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 12px;border-bottom:1px solid var(--border);}
.ec-rows .er:last-child{border-bottom:none;}
.ec-rows .erk{font-size:12px;color:var(--muted);flex:0 0 auto;}
.ec-rows .erv{font-size:12.5px;font-weight:600;color:var(--heading);text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ec-sub{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-left:51px;}
.ec-sub .ec-nik{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.ec-sub .ec-nik i{font-size:11px;color:var(--faint);}
.ec-sub .ec-detail{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--primary);}
.ec-sub .ec-detail i{font-size:10px;}
.mobile-filter{position:relative;}
.mobile-filter.has-filter::after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:var(--primary);border:2px solid var(--surface);}

/* empty state */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 24px;gap:4px;}
.empty-state .es-ic{width:58px;height:58px;border-radius:16px;background:color-mix(in srgb,var(--primary) 11%,transparent);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:23px;margin-bottom:10px;}
.empty-state b{font-size:15px;font-weight:700;color:var(--heading);}
.empty-state p{font-size:12.5px;color:var(--muted);margin:0 0 14px;max-width:300px;line-height:1.55;}

/* status card: single centered status/CTA message (mis. aktivasi notif WA, verifikasi akun) */
.status-card{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:380px;margin:32px auto;padding:36px 28px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);}
.status-card .sc-ic{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:16px;flex:0 0 64px;}
.status-card .sc-ic.success{background:color-mix(in srgb,var(--success) 13%,transparent);color:var(--success);}
.status-card .sc-ic.primary{background:color-mix(in srgb,var(--primary) 11%,transparent);color:var(--primary);}
.status-card h2{font-size:17px;font-weight:700;color:var(--heading);margin:0 0 8px;}
.status-card p{font-size:12.5px;color:var(--muted);margin:0 0 4px;line-height:1.55;}
.status-card .sc-value{font-size:20px;font-weight:800;letter-spacing:-.02em;color:var(--heading);margin:12px 0 6px;word-break:break-all;}
.status-card .sc-meta{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted);background:var(--surface-3);border:1px solid var(--border);border-radius:999px;padding:5px 12px;margin-bottom:14px;}
.status-card .sc-note{font-size:11.5px;color:var(--faint);line-height:1.6;margin-top:10px;}
.status-card .btn{margin:14px 0 6px;padding:11px 32px;}

/* ===== LOGIN ===== */
.app-guest,.app:has(.login-shell){display:block;min-height:100vh;}
.guest-main,.main:has(.login-shell){margin-left:0;min-height:100vh;background:linear-gradient(180deg,var(--bg) 0%,var(--surface-2) 100%);}
.guest-main .tb,.main:has(.login-shell) .tb{display:none;}
.guest-main .content,.content:has(.login-shell){min-height:100vh;padding:0;display:flex;align-items:center;justify-content:center;}
.login-shell{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 18px;}
.login-panel{width:100%;max-width:430px;border-radius:14px!important;}
.login-shell .login-panel.card{background:var(--surface)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow)!important;}
.login-brand{display:flex;align-items:center;gap:12px;padding:20px 20px 10px;}
.login-brand .bird{color:#fff;}
.login-brand-copy{display:flex;flex-direction:column;line-height:1;}
.login-brand-copy b{font-size:18px;font-weight:800;color:var(--heading);letter-spacing:.02em;}
.login-brand-copy span{font-size:9px;font-weight:700;letter-spacing:.24em;color:var(--faint);margin-top:6px;}
.login-head{padding:6px 20px 0;}
.login-head h1{font-size:23px;font-weight:750;color:var(--heading);letter-spacing:0;margin:0 0 6px;}
.login-head p{font-size:12.5px;color:var(--muted);line-height:1.5;margin:0;}
.login-body{padding-top:18px!important;}
.login-password{position:relative;}
.login-password input{padding-right:44px!important;}
.login-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:0;border-radius:8px;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;}
.login-eye:hover{background:var(--surface-3);color:var(--heading);}
.login-actions{padding-top:0;}
.login-actions .btn{width:100%;height:40px;}
.login-foot{padding:0 20px 20px;text-align:center;}
.login-foot a{font-size:12.5px;font-weight:600;color:var(--primary);text-decoration:none;}
.login-foot a:hover{text-decoration:underline;}
.login-shell #wrapper-alert{margin:14px 20px 0;border-radius:9px;border:1px solid color-mix(in srgb,var(--warning) 45%,var(--border));background:color-mix(in srgb,var(--warning) 16%,var(--surface));}

/* pagination */
.pagi{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--border);gap:12px;flex-wrap:wrap;}
.pagi .info{font-size:12px;color:var(--muted);}
.pagi .pages{display:flex;align-items:center;gap:4px;}
.pagi .pg{min-width:32px;height:32px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;padding:0 6px;}
.pagi .pg:hover{background:var(--surface-3);}
.pagi .pg.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.pagi .pg.disabled{opacity:.45;pointer-events:none;}

/* ===== MODAL ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(8,12,20,.55);backdrop-filter:blur(2px);z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .2s ease;}
.modal-overlay.show{opacity:1;pointer-events:auto;}
.modal-overlay .modal{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;transform:translateY(12px) scale(.98);transition:transform .22s ease;overflow:hidden;}
.modal-overlay.show .modal{transform:none;}
.modal-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex:0 0 auto;}
.modal-head .mh-ic{width:38px;height:38px;border-radius:10px;background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:15px;flex:0 0 38px;}
.modal-head h3{font-size:15px;font-weight:700;color:var(--heading);margin:0;}
.modal-head p{font-size:12px;color:var(--muted);margin:2px 0 0;}
.modal-head .mclose{margin-left:auto;width:32px;height:32px;border-radius:8px;border:none;background:none;color:var(--muted);font-size:15px;cursor:pointer;}
.modal-head .mclose:hover{background:var(--surface-3);color:var(--heading);}
.modal-body{padding:20px;overflow-y:auto;flex:1 1 auto;min-height:0;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.fld{display:flex;flex-direction:column;gap:6px;}
.fld.full{grid-column:1/-1;}
.fld label{font-size:12px;font-weight:600;color:var(--text);}
.fld label .req{color:var(--danger);}
.fld input:not([type=checkbox]):not([type=radio]),.fld select,.fld textarea{font-family:inherit;font-size:13px;color:var(--heading);background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:10px 12px;outline:none;width:100%;}
.fld input:not([type=checkbox]):not([type=radio]):disabled,.fld select:disabled,.fld textarea:disabled{background:var(--surface-3);color:var(--muted);cursor:not-allowed;}
.fld textarea{resize:vertical;min-height:74px;line-height:1.55;}
.fld input:not([type=checkbox]):not([type=radio]).is-invalid,.fld select.is-invalid,.fld textarea.is-invalid{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 4%,var(--surface));}
.fld input:not([type=checkbox]):not([type=radio]).is-invalid:focus,.fld textarea.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent);}
.err-txt{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--danger);margin-top:2px;line-height:1.4;}
.err-txt i{font-size:10px;flex:0 0 auto;}
.fld select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239aa3ad' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px;cursor:pointer;}
.fld input:not([type=checkbox]):not([type=radio]):focus,.fld select:focus,.fld textarea:focus{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 3px rgba(13,110,253,.13);}
.fld input:not([type=checkbox]):not([type=radio])::placeholder,.fld textarea::placeholder{color:var(--faint);}
.modal-foot{display:flex;align-items:stretch;justify-content:flex-end;gap:10px;padding:14px 20px;margin:20px -20px -20px;border-top:1px solid var(--border-strong,var(--border));background:var(--surface-2);}
/* .modal-foot .btn{flex:0 0 auto;}
.modal-foot.btn-fill .btn{flex:1;}
.form-divider{grid-column:1/-1;display:flex;align-items:center;gap:10px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:6px 0 0;margin:6px 0 -2px;}
.form-divider::after{content:"";flex:1;height:1px;background:var(--border);}
.modal-overlay .modal.sm{max-width:400px;}
.modal-confirm{padding:24px 22px 4px;text-align:center;}
.modal-confirm .ci{width:54px;height:54px;border-radius:50%;background:color-mix(in srgb,var(--danger) 13%,transparent);color:var(--danger);display:flex;align-items:center;justify-content:center;font-size:22px;margin:0 auto 14px;}
.modal-confirm h3{font-size:16px;font-weight:700;color:var(--heading);margin:0 0 7px;}
.modal-confirm p{font-size:13px;color:var(--muted);margin:0;line-height:1.5;}
.modal-confirm b{color:var(--heading);}

/* toast */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(16px);z-index:100;background:var(--heading);color:var(--surface);font-size:13px;font-weight:600;padding:11px 18px;border-radius:10px;display:flex;align-items:center;gap:9px;box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast i{color:var(--success);}

/* ===== PINIX TOAST & MODAL (alertSuccess/alertError/alertConfirm) ===== */
.toast-wrap{position:fixed;right:22px;top:22px;bottom:auto;z-index:1200;display:flex;flex-direction:column;gap:10px;align-items:flex-end;}
.toast-item{display:flex;align-items:center;gap:11px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--neutral);border-radius:11px;padding:12px 14px;box-shadow:var(--shadow-lg);font-size:12.5px;font-weight:600;color:var(--heading);min-width:260px;max-width:360px;animation:pinixToastIn .26s cubic-bezier(.4,0,.2,1);}
.toast-item.out{animation:pinixToastOut .25s ease forwards;}
.toast-item i:first-child{font-size:15px;flex:0 0 auto;}
.toast-item span{flex:1;}
.toast-item button{border:none;background:none;color:var(--faint);cursor:pointer;font-size:13px;padding:2px;flex:0 0 auto;}
.toast-item button:hover{color:var(--heading);}
.toast-item.success{border-left-color:var(--success);}.toast-item.success i:first-child{color:var(--success);}
.toast-item.info{border-left-color:var(--primary);}.toast-item.info i:first-child{color:var(--primary);}
.toast-item.warning{border-left-color:var(--warning);}.toast-item.warning i:first-child{color:#9a7400;}
html[data-theme="dark"] .toast-item.warning i:first-child{color:var(--warning);}
.toast-item.danger{border-left-color:var(--danger);}.toast-item.danger i:first-child{color:var(--danger);}
@keyframes pinixToastIn{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:none;}}
@keyframes pinixToastOut{to{opacity:0;transform:translateY(-8px);}}

.modal-ov{position:fixed;inset:0;background:rgba(8,14,28,.5);backdrop-filter:blur(2px);z-index:1210;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .22s;}
.modal-ov.show{opacity:1;pointer-events:auto;}
.modalbox{background:var(--surface);border:1px solid var(--border);border-radius:15px;box-shadow:var(--shadow-lg);width:100%;max-width:460px;transform:scale(.96) translateY(8px);transition:transform .24s cubic-bezier(.4,0,.2,1);overflow:hidden;}
.modal-ov.show .modalbox{transform:none;}
.mb-body{padding:20px;}
.mb-foot{display:flex;gap:10px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface-3);}

/* ===== RESPONSIVE ===== */
@media(max-width:1100px){
  .stats{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:860px){
  .sb{transform:translateX(-100%);box-shadow:var(--shadow-lg);}
  body.nav-open .sb{transform:translateX(0);}
  body.nav-open .sb-overlay{display:block;}
  .sb-close{display:block;}
  .main{margin-left:0;}
  .tb-burger{display:block;}
  .tb-search{display:none;}
  .crumb .c-hide{display:none;}
  .table-wrap{display:none!important;}
  .card-list{display:flex!important;flex-direction:column!important;padding:0!important;}
  .card.show-cards .ec,.card-list .ec{border:none;border-bottom:1px solid var(--border);border-radius:0;background:transparent;}
  .card-list .ec:last-child{border-bottom:none;}
  .view-toggle{display:none;}
  .toolbar{padding:28px 16px 14px;gap:8px;flex-wrap:nowrap;}
  .toolbar .tbsearch{flex:1;min-width:0;max-width:none;}
  .toolbar .input-group{flex:1;min-width:0;max-width:none;}
  .toolbar .desktop-filter{display:none;}
  .toolbar .count{display:none;}
  .toolbar .spacer{display:none;}
  .mobile-filter{display:inline-flex;flex:0 0 auto;}
  .toolbar-export{display:none;}
  .content{padding:16px 14px 48px;}
  .page-head h1{font-size:19px;}
  .modal-overlay{padding:0;align-items:flex-end;}
  .modal-overlay .modal{max-width:none;border-radius:18px 18px 0 0;max-height:92vh;transform:translateY(100%);}
  .modal-overlay.show .modal{transform:none;}
  .form-grid{grid-template-columns:1fr;}
  .pagi{justify-content:center;}
  .pagi .info{display:none;}
}
@media(max-width:460px){
  .stats{grid-template-columns:1fr 1fr;gap:10px;}
  .stat{padding:11px 12px;}
  .ph-actions .btn span{display:none;}
}

/* ===== STEPPER (progress tracker, read-only status indicator — bukan navigasi/gate) ===== */
.stepper{display:flex;align-items:flex-start;margin:16px 0 6px;}
.stepper-item{display:flex;flex-direction:column;align-items:center;flex:1;min-width:0;position:relative;}
.stepper-item::before{content:"";position:absolute;top:13px;right:50%;width:100%;height:2px;background:var(--border);z-index:0;}
.stepper-item:first-child::before{display:none;}
.stepper-item.done::before{background:var(--success);}
.stepper-dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background:var(--surface-3);color:var(--muted);border:2px solid var(--border);position:relative;z-index:1;flex:0 0 26px;}
.stepper-item.done .stepper-dot{background:var(--success);color:#fff;border-color:var(--success);}
.stepper-item.current .stepper-dot{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 20%,transparent);}
.stepper-item.current.problem .stepper-dot{background:var(--danger);border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 20%,transparent);}
.stepper-label{margin-top:6px;font-size:10px;color:var(--muted);text-align:center;line-height:1.3;max-width:76px;}
.stepper-item.current .stepper-label{color:var(--heading);font-weight:700;}
.stepper-note{display:flex;align-items:center;gap:6px;font-size:11.5px;padding:8px 12px;border-radius:8px;margin:2px 0 12px;}
.stepper-note.problem{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger);}
.stepper-note.pending{background:color-mix(in srgb,var(--warning) 18%,transparent);color:#8a6300;}
html[data-theme="dark"] .stepper-note.pending{color:var(--warning);}
@media(max-width:480px){.stepper-label{display:none;}.stepper-item.current .stepper-label{display:block;position:absolute;top:32px;white-space:nowrap;left:50%;transform:translateX(-50%);}}

/* ===== DASHBOARD WIDGETS ===== */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px;}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 16px;box-shadow:var(--shadow);}
.kpi .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px;}
.kpi .lbl{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.kpi .ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;}
.kpi .val{font-size:25px;font-weight:800;letter-spacing:-.025em;color:var(--heading);line-height:1;}
.kpi .sub{font-size:11.5px;color:var(--muted);margin-top:10px;display:flex;align-items:center;gap:7px;}
.delta{display:inline-flex;align-items:center;gap:3px;font-weight:700;padding:2px 7px;border-radius:20px;font-size:11px;}
.delta.up{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent);}
.delta.down{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,transparent);}
.ic.b{background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);}
.ic.g{background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success);}
.ic.y{background:color-mix(in srgb,var(--warning) 20%,transparent);color:#b8860b;}
html[data-theme="dark"] .ic.y{color:var(--warning);}
.ic.r{background:color-mix(in srgb,var(--danger) 13%,transparent);color:var(--danger);}
.dash-grid{display:grid;grid-template-columns:1fr 372px;gap:18px;align-items:start;}
.side-stack{display:flex;flex-direction:column;gap:18px;}
.card-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border);}
.card-head h3{font-size:14px;font-weight:700;color:var(--heading);margin:0;}
.card-head .more{font-size:12px;color:var(--primary);font-weight:600;display:inline-flex;align-items:center;gap:4px;cursor:pointer;text-decoration:none;}
.donut-wrap{padding:16px;display:flex;gap:18px;align-items:center;}
.donut{width:126px;height:126px;flex:0 0 126px;border-radius:50%;background:conic-gradient(var(--primary) 0 48%,var(--success) 48% 64%,var(--warning) 64% 80%,var(--neutral) 80% 100%);position:relative;display:flex;align-items:center;justify-content:center;}
.donut::after{content:"";position:absolute;inset:22px;border-radius:50%;background:var(--surface);}
.donut .ctr{position:relative;z-index:1;text-align:center;}
.donut .ctr b{font-size:21px;font-weight:800;color:var(--heading);display:block;line-height:1;}
.donut .ctr span{font-size:9.5px;color:var(--muted);font-weight:600;}
.legend{flex:1;display:flex;flex-direction:column;gap:9px;}
.legend .lg{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--text);}
.legend .lg .d{width:9px;height:9px;border-radius:3px;}
.legend .lg b{margin-left:auto;color:var(--heading);font-weight:700;font-variant-numeric:tabular-nums;}
.prog-list{padding:6px 16px 14px;}
.prog{padding:11px 0;border-bottom:1px solid var(--border);}
.prog:last-child{border-bottom:none;}
.prog .pr-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.prog .pr-top .pn{font-size:12.5px;font-weight:600;color:var(--heading);}
.prog .pr-top .pp{font-size:11.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;}
.bar{height:7px;border-radius:20px;background:var(--surface-3);overflow:hidden;}
.bar i{display:block;height:100%;border-radius:20px;}
.sb-foot{padding:11px 12px;border-top:1px solid var(--sb-border);}
.sb-foot .nav-item{margin:0;}
.nav-item.logout:hover{color:var(--danger);}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr);}}
@media(max-width:860px){.dash-grid{grid-template-columns:1fr;}}

/* ===== DASHBOARD: BAR CHART ===== */
.barchart{display:flex;align-items:flex-end;gap:10px;height:180px;padding:16px;}
.bc-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;}
.bc-track{flex:1;width:100%;max-width:38px;display:flex;align-items:flex-end;}
.bc-fill{width:100%;background:color-mix(in srgb,var(--primary) 30%,var(--surface-3));border-radius:6px 6px 0 0;transition:height .4s cubic-bezier(.4,0,.2,1);}
.bc-fill.hot{background:var(--primary);}
.bc-x{font-size:10.5px;font-weight:600;color:var(--muted);}
.bc-val{font-size:10px;font-weight:700;color:var(--heading);}

/* dashboard tab switcher */
.dash-tabs{display:inline-flex;background:var(--surface-3);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px;}
.dash-tabs button{border:none;background:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--muted);padding:7px 13px;border-radius:6px;cursor:pointer;}
.dash-tabs button.on{background:var(--surface);color:var(--primary);box-shadow:var(--shadow);}

/* mini stat list */
.mlist{padding:6px 16px 12px;}
.mrow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);}
.mrow:last-child{border-bottom:none;}
.mrow .mr-ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px;flex:0 0 auto;}
.mrow .mr-c{flex:1;min-width:0;}
.mrow .mr-c b{font-size:12.5px;font-weight:600;color:var(--heading);display:block;}
.mrow .mr-c span{font-size:11px;color:var(--muted);}
.mrow .mr-v{font-size:13px;font-weight:700;color:var(--heading);font-variant-numeric:tabular-nums;}
@media(max-width:560px){.donut-wrap{flex-direction:column;}}

/* HR dashboard + absensi */
.hr-dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
.hr-panel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.hr-panel-grid .card-head{cursor:pointer;}
.hr-panel-body{max-height:300px;overflow:auto;}
.hr-panel-body tr{cursor:pointer;}
.hr-chart-wrap{position:relative;height:310px;padding:16px;display:flex;align-items:center;justify-content:center;}
.hr-period-filter input{height:34px;width:180px;}
.absensi-karyawan-toolbar{flex-wrap:wrap;}
.absensi-karyawan-toolbar .form-select{min-width:190px;}
.hr-status-dot{display:inline-block;flex:0 0 auto;width:4px;height:28px;border-radius:3px;}
.absensi-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;padding:16px;}
.absensi-photo-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);}
.absensi-img{width:100%;height:220px;object-fit:cover;object-position:center;display:block;background:var(--surface-3);}
.absensi-photo-info{display:flex;flex-direction:column;gap:5px;padding:10px 12px;text-align:center;font-size:11.5px;color:var(--muted);}
.absensi-photo-info b{color:var(--heading);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.abs-kry-foto-card-new>div,.abs-kry-foto-card-new{box-shadow:0 0 0 3px var(--success);animation:absKryCardHighlight 2.5s ease-out forwards;}
@keyframes absKryCardHighlight{0%{box-shadow:0 0 0 3px var(--success);}100%{box-shadow:none;}}
.absensi-detail-toolbar{margin-bottom:12px;}
.hr-employee-summary td{padding:5px 8px;border-bottom:none;}
#tabelDetail_AbsenBulananKaryawan{border:1px solid var(--border-strong);}
#tabelDetail_AbsenBulananKaryawan th,#tabelDetail_AbsenBulananKaryawan td{border:1px solid var(--border);padding:8px 10px;}
#tabelDetail_AbsenBulananKaryawan th{background:var(--surface-2);color:var(--heading);font-weight:700;}
.absensi-online-toolbar{flex-wrap:wrap;}
.absensi-online-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;padding:16px;}
.absensi-online-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);}
.absensi-online-card.list-absen-online-waiting-approval{cursor:pointer;}
.absensi-online-card.list-absensi-online-selected{outline:3px solid var(--primary);}
.absensi-online-card img,.absensi-online-detail img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--surface-3);}
.absensi-online-info{display:flex;flex-direction:column;gap:6px;padding:10px 12px;text-align:center;font-size:11.5px;color:var(--muted);}
.absensi-online-info b{font-size:12.5px;color:var(--heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.absensi-online-detail{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface);}
.absensi-online-note{display:flex;flex-direction:column;gap:4px;margin:0 12px 12px;padding:10px;border:1px solid var(--border);border-radius:10px;font-size:12px;color:var(--text);}
.absensi-camera-box{max-width:300px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.absensi-online-input-card{padding:16px;}
.jadwal-absensi-card{padding:14px;}
.jadwal-absensi-toolbar{border:1px solid var(--border);border-radius:12px;margin-bottom:14px;flex-wrap:wrap;}
.jadwal-absensi-toolbar .fld{min-width:190px;}
.jadwal-profile-summary{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;margin-bottom:14px;padding:12px;}
.jadwal-personal-body{border:1px solid var(--border);border-radius:12px;padding:12px;}
.table-jadwal-absensi-profile{border:1px solid var(--border-strong);}
.table-jadwal-absensi-profile td{border:1px solid var(--border);padding:8px 10px;}
.table-jadwal-absensi-profile .td-head td,.table-jadwal-absensi-profile thead td{background:var(--surface-2);color:var(--heading);}
.jdkl-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);}
.jdkl-month-label{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--heading);font-weight:700;}
.jdkl-month-label-line{height:1px;background:var(--border);flex:1;}
.jdkl-card-col{margin-bottom:14px;}
.rekap-absensi-card,.data-karyawan-card{padding:0;}
.rekap-absensi-toolbar,.data-karyawan-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;}
.rekap-absensi-toolbar .input-group,.data-karyawan-toolbar .input-group{min-width:260px;}
.rekap-absensi-toolbar .toolbar-filter-sm,.data-karyawan-toolbar .toolbar-filter-sm{min-width:190px;}
.rekap-kolom-summary-text{font-size:12px;color:var(--muted);white-space:nowrap;}
.rekap-absensi-wrap{border:0!important;background:var(--surface)!important;}
.rekap-absensi-table th,.rekap-absensi-table td{border-color:var(--border)!important;}
.rekap-absensi-table thead th{background:var(--surface-2)!important;color:var(--heading);}
#tabelDetailCuti_AbsenBulananKaryawan{border:1px solid var(--border-strong);}
#tabelDetailCuti_AbsenBulananKaryawan th,#tabelDetailCuti_AbsenBulananKaryawan td{border:1px solid var(--border);padding:8px 10px;}
#tabelDetailCuti_AbsenBulananKaryawan th{background:var(--surface-2);color:var(--heading);font-weight:700;}
.data-karyawan-card .tbl-scroll table{border-collapse:separate;border-spacing:0;width:100%;}
.data-karyawan-card .tbl-scroll th,.data-karyawan-card .tbl-scroll td{padding:10px 12px;border-bottom:1px solid var(--border);font-size:12.5px;text-align:left;}
.data-karyawan-card .tbl-scroll th:first-child,.data-karyawan-card .tbl-scroll td:first-child{padding-left:20px;}
.data-karyawan-card .tbl-scroll th:last-child,.data-karyawan-card .tbl-scroll td:last-child{padding-right:20px;}
.data-karyawan-card .tbl-scroll th{background:var(--surface-2);color:var(--heading);font-weight:700;}
.data-karyawan-card .tbl-scroll tr:hover td{background:var(--surface-2);}
.av-sm{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex:0 0 auto;}
.cellname{display:flex;align-items:center;gap:9px;}
.data-karyawan-edit-toolbar{border:1px solid var(--border);border-radius:12px;margin-bottom:14px;justify-content:flex-end;}
.data-karyawan-form-grid{align-items:start;}
.kpi-card{padding:0;}
.kpi-toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;}
.kpi-toolbar .tbsearch{min-width:260px;}
.kpi-toolbar .fld{min-width:180px;}
.kpi-table{border-collapse:separate;border-spacing:0;width:100%;}
.kpi-table th,.kpi-table td{padding:10px 12px;border-bottom:1px solid var(--border);font-size:12.5px;text-align:left;vertical-align:top;}
.kpi-table th,.kpi-row-head{background:var(--surface-2);color:var(--heading);font-weight:700;}
.kpi-table tr:hover td{background:var(--surface-2);}
.kpi-detail-body .kpi-card{box-shadow:none;border:1px solid var(--border);}
.kpi-detail-table{min-width:1180px;table-layout:fixed;}
.kpi-detail-table th:nth-child(1),.kpi-detail-table td:nth-child(1){width:38px;text-align:center;}
.kpi-detail-table th:nth-child(2),.kpi-detail-table td:nth-child(2){width:260px;}
.kpi-detail-table th:nth-child(3),.kpi-detail-table td:nth-child(3){width:118px;}
.kpi-detail-table th:nth-child(4),.kpi-detail-table td:nth-child(4){width:115px;}
.kpi-detail-table th:nth-child(5),.kpi-detail-table td:nth-child(5),.kpi-detail-table th:nth-child(6),.kpi-detail-table td:nth-child(6){width:86px;}
.kpi-detail-table th:nth-child(7),.kpi-detail-table td:nth-child(7){width:78px;}
.kpi-detail-table th:nth-child(8),.kpi-detail-table td:nth-child(8){width:150px;}
.kpi-detail-table th:nth-child(9),.kpi-detail-table td:nth-child(9),.kpi-detail-table th:nth-child(10),.kpi-detail-table td:nth-child(10){width:120px;}
.kpi-item-cell{white-space:normal!important;word-break:break-word;overflow-wrap:anywhere;}
.kpi-item-cell b{display:block;color:var(--heading);white-space:normal;line-height:1.35;}
.kpi-item-cell small{display:block;color:var(--muted);white-space:normal;line-height:1.35;margin-top:3px;}
.kpi-self-table td{border:0;}
.kpi-assessment-wrap{border:1px solid var(--border);border-radius:12px;}
.kpi-assessment-wrap .kpi-row-head,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex{
  display:grid!important;
  align-items:stretch;
}
.kpi-assessment-basic .kpi-row-head,
.kpi-assessment-basic [class*="assesment-detail-row-tab"].d-md-flex{grid-template-columns:300px 130px 160px 80px 92px 80px 150px minmax(260px,1fr) 110px;min-width:1362px;}
.kpi-assessment-with-result .kpi-row-head,
.kpi-assessment-with-result [class*="assesment-detail-row-tab"].d-md-flex{grid-template-columns:300px 130px 160px 80px 92px 80px 150px 100px 100px minmax(260px,1fr) 110px;min-width:1562px;}
.kpi-assessment-wrap .kpi-row-head>div,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex>div{
  width:auto!important;
  max-width:none!important;
  flex:none!important;
  min-width:0;
  padding:10px 8px!important;
  border-right:1px solid var(--border);
  white-space:normal!important;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.kpi-assessment-wrap .kpi-row-head>div:last-child,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex>div:last-child{border-right:0;}
.kpi-assessment-wrap .kpi-row-head>div:first-child,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex>div:first-of-type,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex>div:first-of-type strong,
.kpi-assessment-wrap [class*="assesment-detail-row-tab"].d-md-flex>div:first-of-type small{white-space:normal!important;word-break:break-word;overflow-wrap:anywhere;min-width:0;}
.kpi-assessment-wrap textarea{min-height:34px;resize:vertical;}
.kpi-summary-panel{background:var(--surface-2);border-top:1px solid var(--border);}
.kpi-assessment-tab.active .kpi-summary-panel{position:fixed;left:272px;right:24px;bottom:16px;z-index:52;border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-lg);}
.kpi-assessment-tab.active{padding-bottom:108px;}
.pinix-legacy-list>.row{margin:0!important;}
.pinix-legacy-list>.row>.col-md-12,.pinix-legacy-list>.row>.col-sm-12{padding:0!important;}
.pinix-legacy-list .bg-white{background:var(--surface)!important;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;}
.pinix-legacy-list table.w-100>tbody:first-child>tr:first-child>th{display:block;padding:16px!important;background:var(--surface);border-bottom:1px solid var(--border);}
.pinix-legacy-list table.w-100>tbody:first-child>tr:first-child>th>div.row{align-items:flex-end;}
.pinix-legacy-list table[data-classes="table"] td:first-child{display:none;}
.pinix-legacy-list table[data-classes="table"] a.col{font-size:22px;font-weight:700;color:var(--heading);text-decoration:none;line-height:1.2;}
.pinix-legacy-list table[data-classes="table"] .font-italic{font-size:12.5px!important;font-style:normal!important;color:var(--muted)!important;margin-top:4px;}
.pinix-legacy-list table.w-100>tbody:first-child>tr:nth-child(2)>th,
.pinix-legacy-list table.w-100>tbody:first-child>tr:first-child>th>.row.mt-2{display:block;padding:13px 16px!important;background:var(--surface-2);border-top:1px solid var(--border);}
.pinix-legacy-list .form-control{border-color:var(--border);border-radius:8px;font-size:12.5px;}
.pinix-legacy-list .btn{border-radius:8px;font-size:12px;font-weight:600;}
.pinix-legacy-list .btn-light.border{background:var(--surface);border-color:var(--border)!important;color:var(--text);}
.pinix-legacy-list .btn-success{background:var(--primary);border-color:var(--primary);}
.pinix-legacy-list .btn-info{background:var(--surface);border-color:var(--border);color:var(--text);}
.pinix-legacy-list tbody.table-hoverx>tr.i-bg-eee{background:var(--surface-2)!important;color:var(--heading);}
.pinix-legacy-list tbody.table-hoverx>tr.i-bg-eee .row{font-size:12px;font-weight:700;}
.pinix-legacy-list tbody.table-hoverx>tr:not(.i-bg-eee)>td{padding:0!important;border:0;}
.pinix-legacy-list tbody.table-hoverx .i-hover-yellow{border-bottom:1px solid var(--border)!important;background:var(--surface);transition:background .12s;}
.pinix-legacy-list tbody.table-hoverx .i-hover-yellow:hover{background:var(--surface-2)!important;}
.pinix-legacy-list tbody.table-hoverx .i-hover-yellow>div{font-size:12.5px;color:var(--text);white-space:normal;word-break:break-word;overflow-wrap:anywhere;}
.pinix-legacy-list .badge{border-radius:999px;padding:5px 8px;font-weight:700;}
.pinix-legacy-list .mobile-view{display:none!important;}
.pinix-data-card{padding:0;}
.pinix-table{width:100%;border-collapse:separate;border-spacing:0;}
.pinix-table th,.pinix-table td{padding:10px 12px;border-bottom:1px solid var(--border);font-size:12.5px;text-align:left;vertical-align:top;}
.pinix-table th{background:var(--surface-2);color:var(--heading);font-weight:700;white-space:nowrap;}
.pinix-table tr:hover td{background:var(--surface-2);}
.pinix-table .text-center{text-align:center;}
.pinix-table .wrap-cell{white-space:normal!important;word-break:break-word;overflow-wrap:anywhere;min-width:180px;}
.pinix-data-card .card-list{display:none;}
.ec-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.kv{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;font-size:12px;}
.kv span{color:var(--muted);}
.kv b{font-weight:600;color:var(--heading);text-align:right;white-space:normal;overflow-wrap:anywhere;}
.form-section,.wrapper-form-tambah-pengajuan-perdin,.wrapper-form-tambah-pengajuan-pinjaman-karyawan,.wrapper-setting-approval-hr-pinjaman-karyawan{background:var(--surface);overflow:hidden;}
.form-section .card,.wrapper-form-tambah-pengajuan-perdin .card,.wrapper-form-tambah-pengajuan-pinjaman-karyawan .card,.wrapper-setting-approval-hr-pinjaman-karyawan .card{border:0;border-radius:0;box-shadow:none;margin:0!important;border-bottom:1px solid var(--border);}
.form-section .card:last-child,.wrapper-form-tambah-pengajuan-perdin .card:last-child,.wrapper-form-tambah-pengajuan-pinjaman-karyawan .card:last-child{border-bottom:0;}
.form-section .card-header,.wrapper-form-tambah-pengajuan-perdin .card-header,.wrapper-form-tambah-pengajuan-pinjaman-karyawan .card-header,.wrapper-setting-approval-hr-pinjaman-karyawan .card-header{background:var(--surface-2)!important;border:0!important;border-bottom:1px solid var(--border)!important;padding:12px 16px;}
.form-section h5,.form-section h6,.wrapper-form-tambah-pengajuan-perdin h5,.wrapper-form-tambah-pengajuan-perdin h6,.wrapper-form-tambah-pengajuan-pinjaman-karyawan h5,.wrapper-form-tambah-pengajuan-pinjaman-karyawan h6{font-size:14px;font-weight:700;color:var(--heading);margin:0;}
.form-section .card-body,.wrapper-form-tambah-pengajuan-perdin .card-body,.wrapper-form-tambah-pengajuan-pinjaman-karyawan .card-body,.wrapper-setting-approval-hr-pinjaman-karyawan .card-body{padding:16px;}
.form-section label,.wrapper-form-tambah-pengajuan-perdin label,.wrapper-form-tambah-pengajuan-pinjaman-karyawan label,.wrapper-setting-approval-hr-pinjaman-karyawan label{font-size:11.5px;font-weight:700;color:var(--muted)!important;margin-bottom:5px;}
.form-section .form-control,.wrapper-form-tambah-pengajuan-perdin .form-control,.wrapper-form-tambah-pengajuan-pinjaman-karyawan .form-control,.wrapper-setting-approval-hr-pinjaman-karyawan .form-control{border-color:var(--border);border-radius:8px;font-size:12.5px;min-height:34px;}
.modal-content .card.border-0.shadow-sm,.modal-body>.card.border-0.shadow-sm{border:0!important;box-shadow:none!important;border-radius:0!important;background:transparent!important;}
.modal-content .card-header,.modal-body>.card .card-header{background:var(--surface)!important;border:0!important;border-bottom:1px solid var(--border)!important;padding:14px 16px;}
.modal-content .card-header h5,.modal-body>.card .card-header h5{font-size:16px;font-weight:700;color:var(--heading);}
.modal-content .card-body,.modal-body>.card .card-body{padding:16px;}
.modal-content .card-body>.row,.modal-body>.card .card-body>.row{align-items:center;margin-bottom:12px!important;}
.modal-content .card-body label,.modal-body>.card .card-body label{font-size:11.5px;font-weight:700;color:var(--muted);margin-bottom:5px;}
.modal-content .card-footer,.modal-body>.card .card-footer{background:var(--surface-2)!important;border-top:1px solid var(--border)!important;padding:12px 16px;}
.modal-content .card-footer .btn-primary,.modal-body>.card .card-footer .btn-primary{background:var(--primary);border-color:var(--primary);}
.modal-content .card-footer .btn-danger,.modal-body>.card .card-footer .btn-danger{background:var(--danger);border-color:var(--danger);}
@media(max-width:1100px){.hr-panel-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:860px){.hr-dashboard-grid,.hr-panel-grid{grid-template-columns:1fr;}.absensi-karyawan-toolbar .form-select,.jadwal-absensi-toolbar .fld,.rekap-absensi-toolbar .input-group,.rekap-absensi-toolbar .toolbar-filter-sm,.data-karyawan-toolbar .input-group,.data-karyawan-toolbar .toolbar-filter-sm,.kpi-toolbar .tbsearch,.kpi-toolbar .fld{min-width:100%;}.rekap-kolom-summary-text{white-space:normal;}.absensi-img{padding-block:10px;box-sizing:border-box;}}
@media(max-width:860px){.kpi-assessment-tab.active .kpi-summary-panel{left:12px;right:12px;bottom:12px;}.kpi-assessment-tab.active{padding-bottom:150px;}.kpi-summary-panel .row{gap:8px;}}
@media(max-width:860px){.pinix-legacy-list table.w-100>tbody:first-child>tr:first-child>th{padding:14px!important;}.pinix-legacy-list table[data-classes="table"] a.col{font-size:20px;}.pinix-legacy-list table.w-100>tbody:first-child>tr:nth-child(2)>th,.pinix-legacy-list table.w-100>tbody:first-child>tr:first-child>th>.row.mt-2{padding:12px 14px!important;}.pinix-legacy-list .d-block.d-md-none{padding:13px 14px!important;background:var(--surface);border-bottom:1px solid var(--border)!important;}.pinix-legacy-list .d-block.d-md-none:hover{background:var(--surface-2);}}
@media(max-width:860px){.pinix-data-card .table-wrap{display:none!important;}.pinix-data-card .card-list{display:flex!important;flex-direction:column!important;padding:0!important;}.pinix-data-card .ec{border-bottom:1px solid var(--border);border-radius:0;background:transparent;padding:13px 14px;}.pinix-data-card .ec:last-child{border-bottom:0;}.pinix-data-card .toolbar{gap:8px;}.pinix-data-card .toolbar .tbsearch,.pinix-data-card .toolbar .select,.pinix-data-card .toolbar .select select{width:100%;max-width:none;}.kv{display:grid;grid-template-columns:112px 1fr;}.kv b{text-align:left;}}

/* ===== STICKY ACTION COLUMN ===== */
th.act-col,td.act-col{position:sticky;right:0;z-index:3;}
th.act-col{background:var(--surface-2);box-shadow:-1px 0 0 0 var(--border);}
td.act-col{background:var(--surface);box-shadow:-1px 0 0 0 var(--border);}
tbody tr:hover td.act-col{background:var(--surface-2);}
.tbl-scroll{position:relative;overflow-x:auto;}
.table-wrap{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;}
.table-wrap::-webkit-scrollbar{height:10px;}
.table-wrap::-webkit-scrollbar-track{background:transparent;}
.table-wrap::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:20px;border:2px solid var(--surface);}
.table-wrap::-webkit-scrollbar-thumb:hover{background:var(--neutral);}

/* ===== SORTABLE HEADERS ===== */
th.sortable{cursor:pointer;user-select:none;transition:color .12s;}
th.sortable:hover{color:var(--muted);}
th.sortable .sort-ic{margin-left:5px;font-size:9px;opacity:.38;transition:opacity .12s;}
th.sortable:hover .sort-ic{opacity:.7;}
th.sorted{color:var(--primary);}
th.sorted .sort-ic{opacity:1;color:var(--primary);}

/* ===== ROW SELECTION ===== */
tbody tr[data-row]{cursor:pointer;}
tbody tr.selected td{background:color-mix(in srgb,var(--primary) 7%,var(--surface));}
tbody tr.selected td.act-col{background:color-mix(in srgb,var(--primary) 7%,var(--surface));}
.ec[data-row]{cursor:pointer;}
.chk-col{cursor:default;}

/* ===== BULK ACTION BAR ===== */
.bulkbar{display:none;align-items:center;gap:13px;padding:10px 16px;background:color-mix(in srgb,var(--primary) 9%,var(--surface));border-bottom:1px solid var(--border);}
.card.has-selection .bulkbar{display:flex;}
.bulkbar .bsel{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:600;color:var(--primary);}
.bulkbar .bsel .bc{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:20px;background:var(--primary);color:#fff;font-size:11.5px;font-weight:700;}
.bulkbar .bclear{font-size:12px;color:var(--muted);background:none;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:4px 6px;border-radius:6px;font-family:inherit;}
.bulkbar .bclear:hover{background:var(--surface-3);color:var(--heading);}
.bulkbar .bspace{flex:1;}
.bulkbar .bact{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;border-radius:8px;padding:7px 13px;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:inherit;}
.bulkbar .bact:hover{background:var(--surface-3);}
.bulkbar .bact.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 32%,var(--border));}
.bulkbar .bact.danger:hover{background:color-mix(in srgb,var(--danger) 10%,transparent);}
.bulkbar .bact i{font-size:12px;}

/* ===== DETAIL DRAWER ===== */
.drawer-overlay{position:fixed;inset:0;background:rgba(8,12,20,.5);backdrop-filter:blur(2px);z-index:85;opacity:0;pointer-events:none;transition:opacity .25s ease;}
.drawer-overlay.show{opacity:1;pointer-events:auto;}
.drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:93vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:86;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;}
.drawer.show{transform:none;}
.dr-hero{position:relative;padding:24px 22px 20px;border-bottom:1px solid var(--border);overflow:hidden;}
.dr-hero::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 12%,transparent),transparent 70%);pointer-events:none;}
.dr-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:9px;border:none;background:var(--surface);color:var(--muted);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1;box-shadow:var(--shadow);}
.dr-close:hover{color:var(--heading);background:var(--surface-3);}
.dr-hero .dhead{position:relative;display:flex;align-items:center;gap:15px;}
.dr-hero .dav{width:62px;height:62px;border-radius:15px;flex:0 0 62px;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;color:#fff;box-shadow:0 8px 18px -6px rgba(16,24,40,.35);}
.dr-hero .dn b{font-size:18px;font-weight:800;color:var(--heading);letter-spacing:-.01em;display:block;}
.dr-hero .dn span{font-size:13px;color:var(--muted);display:block;margin-top:2px;}
.dr-hero .dn .bdg{margin-top:9px;}
.dr-body{flex:1;overflow-y:auto;padding:20px 22px;}
.dr-sec{margin-bottom:22px;}
.dr-sec:last-child{margin-bottom:0;}
.dr-sec .dr-title{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin-bottom:11px;display:flex;align-items:center;gap:7px;}
.dr-sec .dr-title i{font-size:11px;color:var(--primary);}
.dr-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--border);}
.dr-row:last-child{border-bottom:none;}
.dr-row .dk{font-size:12.5px;color:var(--muted);flex:0 0 130px;}
.dr-row .dv{font-size:13px;color:var(--heading);font-weight:600;text-align:right;flex:1;word-break:break-word;}
.dr-foot{display:flex;gap:10px;padding:15px 22px;border-top:1px solid var(--border);}
.dr-foot .btn{flex:1;}
@media(max-width:560px){.drawer{width:100vw;max-width:100vw;}}

/* ===== FAB (mobile add) ===== */
.fab{display:none;position:fixed;right:18px;bottom:18px;z-index:70;width:56px;height:56px;border-radius:50%;border:none;background:var(--primary);color:#fff;font-size:21px;cursor:pointer;align-items:center;justify-content:center;box-shadow:0 8px 22px -4px rgba(13,110,253,.55),0 3px 8px rgba(16,24,40,.2);transition:transform .15s ease,background .15s ease;}
.fab:hover{background:var(--secondary);}
.fab:active{transform:scale(.92);}
@media(max-width:860px){
  .fab{display:flex;}
  .ph-add{display:none;}
}

/* ===== STATUS BADGES ===== */
.bdg.menunggu{color:#9a7400;background:color-mix(in srgb,var(--warning) 22%,transparent);}.bdg.menunggu::before{background:var(--warning);}
html[data-theme="dark"] .bdg.menunggu{color:var(--warning);}
.bdg.disetujui{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent);}.bdg.disetujui::before{background:var(--success);}
.bdg.ditolak{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,transparent);}.bdg.ditolak::before{background:var(--danger);}
.bdg.published{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent);}.bdg.published::before{background:var(--success);}
.bdg.draft{color:var(--neutral);background:color-mix(in srgb,var(--neutral) 16%,transparent);}.bdg.draft::before{background:var(--neutral);}
.bdg.review{color:#9a7400;background:color-mix(in srgb,var(--warning) 22%,transparent);}.bdg.review::before{background:var(--warning);}
html[data-theme="dark"] .bdg.review{color:var(--warning);}
.bdg.lunas{color:var(--success);background:color-mix(in srgb,var(--success) 13%,transparent);}.bdg.lunas::before{background:var(--success);}
.bdg.proses{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);}.bdg.proses::before{background:var(--primary);}
.bdg.dp{color:#9a7400;background:color-mix(in srgb,var(--warning) 22%,transparent);}.bdg.dp::before{background:var(--warning);}
html[data-theme="dark"] .bdg.dp{color:var(--warning);}
.bdg.batal{color:var(--danger);background:color-mix(in srgb,var(--danger) 13%,transparent);}.bdg.batal::before{background:var(--danger);}

/* ===== APPROVAL STEPPER ===== */
.appr-stepper{display:flex;width:100%;margin:4px 0 4px;}
.appr-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;text-align:center;}
.appr-step::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:2px;background:var(--border-strong);z-index:0;}
.appr-step:first-child::before{display:none;}
.appr-step.done::before,.appr-step.active::before{background:var(--primary);}
.appr-step .sc{position:relative;z-index:1;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--surface);border:2px solid var(--border-strong);color:var(--muted);}
.appr-step.done .sc{background:var(--primary);border-color:var(--primary);color:#fff;}
.appr-step.active .sc{background:var(--surface);border-color:var(--primary);color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 16%,transparent);}
.appr-step.reject .sc{background:var(--danger);border-color:var(--danger);color:#fff;}
.appr-step .sl{font-size:11.5px;font-weight:600;color:var(--heading);display:flex;flex-direction:column;gap:1px;}
.appr-step .sl small{font-size:10px;font-weight:500;color:var(--muted);}
.appr-step:not(.done):not(.active):not(.reject) .sl{color:var(--muted);}

/* ===== ACTIVITY TIMELINE ===== */
.tl{display:flex;flex-direction:column;}
.tl-item{display:flex;gap:13px;position:relative;padding-bottom:18px;}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{content:"";position:absolute;left:15px;top:32px;bottom:-2px;width:2px;background:var(--border);}
.tl-item:last-child::before{display:none;}
.tl-dot{flex:0 0 32px;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;z-index:1;}
.tl-dot.pri{background:var(--primary);}.tl-dot.suc{background:var(--success);}.tl-dot.war{background:var(--warning);color:#3d2e00;}.tl-dot.dan{background:var(--danger);}.tl-dot.mut{background:var(--surface);border:2px solid var(--border-strong);color:var(--muted);}
.tl-c{flex:1;padding-top:2px;}
.tl-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
.tl-top b{font-size:13px;font-weight:700;color:var(--heading);}
.tl-time{font-size:10.5px;color:var(--faint);font-weight:600;flex:0 0 auto;}
.tl-c p{font-size:12px;color:var(--muted);margin:3px 0 0;line-height:1.5;}

/* approval action buttons */
.appr-actions{display:flex;gap:9px;width:100%;}
.appr-actions .btn{flex:1;}
.dr-note{background:var(--surface-3);border:1px solid var(--border);border-radius:9px;padding:11px 13px;font-size:12px;color:var(--text);line-height:1.55;}
.dr-note b{color:var(--heading);}
.attach{display:inline-flex;align-items:center;gap:9px;background:var(--surface-3);border:1px solid var(--border);border-radius:9px;padding:9px 12px;font-size:12px;color:var(--text);width:100%;}
.attach .fi{width:30px;height:30px;border-radius:7px;background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;flex:0 0 auto;}
.attach .am{flex:1;min-width:0;}
.attach .am b{display:block;font-weight:600;color:var(--heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.attach .am span{font-size:10.5px;color:var(--muted);}
.attach .dl{color:var(--primary);font-size:13px;}

/* ===== SEARCH GROUP ===== */
.search-group{display:inline-flex;align-items:center;background:var(--surface);border:1px solid var(--border-strong);border-radius:9px;overflow:hidden;flex:1;max-width:360px;height:33px;}
.search-group i{padding:0 10px;color:var(--faint);font-size:12.5px;flex:0 0 auto;}
.search-group input{flex:1;border:none;background:none;outline:none;font-family:inherit;font-size:12.5px;color:var(--text);padding:0;height:100%;}
.search-group input::placeholder{color:var(--faint);}
.search-group:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent);}
.search-group button{border:none;background:var(--primary);color:#fff;font-family:inherit;font-size:12px;font-weight:600;padding:0 13px;height:100%;cursor:pointer;white-space:nowrap;border-left:1px solid color-mix(in srgb,var(--primary) 60%,#000);}
.search-group button:hover{background:var(--secondary);}
.toolbar .form-select,.toolbar .form-select-sm,.toolbar select{height:33px!important;padding-top:0!important;padding-bottom:0!important;font-size:12.5px!important;border-radius:9px!important;}

/* ===== ACTIVE FILTER CHIPS ===== */
.active-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 16px 4px;border-top:1px solid var(--border);}
.fchip{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--primary);background:color-mix(in srgb,var(--primary) 11%,transparent);border:1px solid color-mix(in srgb,var(--primary) 28%,transparent);border-radius:20px;padding:5px 11px;cursor:pointer;}
.fchip i{font-size:10px;}
.fchip:hover{background:color-mix(in srgb,var(--primary) 18%,transparent);}
.fchip-clear{font-size:12px;color:var(--muted)!important;font-weight:600;}

/* ===== COMBOBOX ===== */
.combo {
  position: relative;
  width: 100%;
}

.combo-field {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  width: 100%;
  font-family: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: 8px 12px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}

.combo-field .combo-val.combo-placeholder {
  color: var(--faint);
}

.combo-field i {
  color: var(--muted);
  font-size: 11px;
  transition: transform .18s;
}

.combo.open .combo-field {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 18%, transparent);
}

.combo.open .combo-field i {
  transform: rotate(180deg);
}

.combo-pop {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 11px;
  box-shadow: var(--shadow-lg);
  z-index: 999;
  opacity: 0;
  transform: translateY(-6px);
  pointer-events: none;
  transition: opacity .15s, transform .15s;
  
  /* ✅ Gunakan flex column */
  display: flex;
  flex-direction: column;
  
  /* ✅ Batasi max-height dynamic berdasarkan viewport */
  max-height: min(400px, calc(100vh - 100px));
  
  /* ✅ Jangan overflow di sini */
  overflow: hidden;
}

.combo.open .combo-pop {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.combo-search {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 13px;
  border-bottom: 1px solid var(--border);
  
  /* ✅ Search TIDAK boleh scroll, flex-shrink: 0 */
  flex-shrink: 0;
}

.combo-search i {
  color: var(--faint);
  font-size: 12px;
}

.combo-search input {
  flex: 1;
  border: none;
  background: none;
  outline: none;
  font-family: inherit;
  font-size: 13px;
  color: var(--text);
}

.combo-list {
  /* ✅ List yang mengisi sisa ruang & yang scroll */
  flex: 1;
  overflow-y: auto;
  padding: 5px 5px 15px 5px; /* padding bawah lebih besar */
  min-height: 0; /* penting untuk flex scroll */
}

/* ✅ Scrollbar styling */
.combo-list::-webkit-scrollbar {
  width: 6px;
}

.combo-list::-webkit-scrollbar-track {
  background: transparent;
}

.combo-list::-webkit-scrollbar-thumb {
  background: var(--border);
  border-radius: 3px;
}

.combo-list::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.combo-opt {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 11px;
  border-radius: 8px;
  font-size: 12.5px;
  color: var(--text);
  cursor: pointer;
}

.combo-opt:hover {
  background: var(--surface-3);
}

.combo-opt.sel {
  background: color-mix(in srgb, var(--primary) 10%, transparent);
  color: var(--primary);
  font-weight: 600;
}

.combo-empty {
  padding: 16px;
  text-align: center;
  font-size: 12px;
  color: var(--faint);
}

/* Size variants */
.combo-sm .combo-field {
  font-size: 12px;
  padding: 6px 10px;
  border-radius: 8px;
}

.combo-sm .combo-pop {
  min-width: 170px;
}

.combo-sm .combo-opt {
  font-size: 12px;
  padding: 7px 10px;
}

/* ===== MOBILE BRAND BACKGROUND ===== */
@media(max-width:860px){
  .main{background:linear-gradient(180deg,#db3a34 0%,#e86060 24%,#f5a0a0 60%,#fad4d4 100%);background-attachment:fixed;}
  .tb{background:#c20000;border-bottom:1px solid rgba(255,255,255,.16);box-shadow:0 4px 16px -6px rgba(80,0,0,.5);}
  .tb-burger,.tb-ico{color:#fff;}
  .tb-ico:hover{background:rgba(255,255,255,.15);}
  .tb-user .u b{color:#fff;}
  .tb-user .u span{color:rgba(255,255,255,.82);}
  .content{background:transparent;}
  .page-head h1{color:#fff;}
  .page-head p,.page-head p b{color:rgba(255,255,255,.9);}
  .card{background:transparent;border:none;box-shadow:none;}
  .toolbar{padding:18px 16px 12px!important;border-bottom:none;}
  .search-group{max-width:none!important;flex:1;}
  .search-group button{display:none;}
  .count{color:rgba(255,255,255,.9)!important;}
  .pagi{border-top:1px solid rgba(255,255,255,.2);}
  .pagi .info{color:rgba(255,255,255,.9);}
  .card-list{background:transparent!important;padding:0!important;gap:11px!important;}
  .card-list .ec{background:#fff!important;border:none!important;border-radius:15px!important;box-shadow:0 12px 26px -12px rgba(80,0,0,.5);padding:12px 13px!important;gap:0!important;overflow:visible;}
  html[data-theme="dark"] .main{background:linear-gradient(180deg,#2e0b0b 0%,#1c1316 20%,#14161c 46%,var(--bg) 100%)!important;background-attachment:fixed;}
  html[data-theme="dark"] .tb{background:var(--surface);border-bottom:2px solid #c0202a;box-shadow:0 4px 18px -8px rgba(0,0,0,.7);}
  html[data-theme="dark"] .tb-burger,html[data-theme="dark"] .tb-ico{color:var(--text);}
  html[data-theme="dark"] .tb-user .u b{color:var(--heading);}
  html[data-theme="dark"] .tb-user .u span{color:var(--muted);}
  html[data-theme="dark"] .page-head h1{color:#fff;}
  html[data-theme="dark"] .page-head p,html[data-theme="dark"] .page-head p b{color:rgba(255,255,255,.78);}
  html[data-theme="dark"] .card-list .ec{background:var(--surface)!important;box-shadow:0 14px 28px -16px rgba(0,0,0,.75);}
  html[data-theme="dark"] .count,html[data-theme="dark"] .pagi .info{color:rgba(255,255,255,.75)!important;}
  html[data-theme="dark"] .pagi{border-top-color:rgba(255,255,255,.1);}
}

/* ===== BOOTSTRAP 5 CUSTOM SKIN ===== */
.form-control,.form-select,.form-control-sm,.form-control-lg{
  font-family:'Inter',system-ui,sans-serif!important;font-size:13px!important;
  color:var(--text)!important;background-color:var(--surface)!important;
  border:1px solid var(--border-strong)!important;border-radius:9px!important;
  padding:6px 12px!important;transition:border-color .15s,box-shadow .15s!important;line-height:1.5!important;
}
.form-control:focus,.form-select:focus{
  border-color:var(--primary)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)!important;
  background-color:var(--surface)!important;color:var(--text)!important;outline:none!important;
}
.form-control::placeholder{color:var(--faint)!important;}
.form-control:disabled,.form-control[readonly]{background-color:var(--surface-3)!important;color:var(--muted)!important;}
.form-control.is-invalid{border-color:var(--danger)!important;}
.form-control.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent)!important;}
.form-control.is-valid{border-color:var(--success)!important;}
.form-control-sm{border-radius:7px!important;font-size:12.5px!important;padding:.35rem .65rem!important;}
.form-control-lg{border-radius:11px!important;font-size:15px!important;}
.form-select{
  appearance:none!important;-webkit-appearance:none!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 4.5L13 6' fill='none' stroke='%2367707f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;background-position:right 10px center!important;
  background-size:10px 10px!important;padding-right:2.25rem!important;
}
.form-label{font-size:12.5px!important;font-weight:600!important;color:var(--heading)!important;margin-bottom:.35rem!important;}
.form-label .req{color:var(--danger);}
.form-text{font-size:11.5px!important;color:var(--muted)!important;}
.invalid-feedback{font-size:11.5px!important;display:flex!important;align-items:center!important;gap:5px!important;}
.input-group>.form-control,.input-group>.form-select{border-radius:0!important;}
.input-group .form-control:first-child,.input-group .form-select:first-child{border-radius:9px 0 0 9px!important;}
.input-group .form-control:last-child,.input-group .form-select:last-child{border-radius:0 9px 9px 0!important;}
.input-group-text{background-color:var(--surface-3)!important;border-color:var(--border-strong)!important;color:var(--muted)!important;font-size:13px!important;font-weight:600!important;}
textarea.form-control{min-height:78px!important;resize:vertical!important;}
.form-check-input{border-color:var(--border-strong)!important;background-color:var(--surface)!important;}
.form-check-input:checked{background-color:var(--primary)!important;border-color:var(--primary)!important;}
.form-check-input:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)!important;border-color:var(--primary)!important;}
.form-check-label{font-size:13px!important;color:var(--text)!important;}
.form-switch .form-check-input{background-color:var(--border-strong)!important;}
.form-switch .form-check-input:checked{background-color:var(--primary)!important;border-color:var(--primary)!important;}
.btn{border-radius:9px!important;font-family:'Inter',system-ui,sans-serif!important;font-weight:600!important;font-size:13px!important;}
.btn-sm{border-radius:7px!important;font-size:12px!important;}
.btn-lg{border-radius:11px!important;font-size:14.5px!important;}
.btn-primary{background-color:var(--primary)!important;border-color:var(--primary)!important;}
.btn-primary:hover{background-color:var(--secondary)!important;border-color:var(--secondary)!important;}
.btn-secondary{background-color:var(--surface-3)!important;border-color:var(--border-strong)!important;color:var(--heading)!important;}
.btn-secondary:hover{background-color:var(--border)!important;}
.btn-danger{background-color:var(--danger)!important;border-color:var(--danger)!important;}
.btn-success{background-color:var(--success)!important;border-color:var(--success)!important;}
.btn-warning{background-color:var(--warning)!important;border-color:var(--warning)!important;color:#3d2e00!important;}
.btn-outline-primary{color:var(--primary)!important;border-color:var(--primary)!important;}
.btn-outline-primary:hover{background-color:var(--primary)!important;color:#fff!important;}
.card{background-color:var(--surface)!important;border-color:var(--border)!important;border-radius:13px!important;}
.card-header{background-color:var(--surface-2)!important;border-color:var(--border)!important;font-weight:700!important;color:var(--heading)!important;}
.card-footer{background-color:var(--surface-2)!important;border-color:var(--border)!important;}
.table{color:var(--text)!important;border-color:var(--border)!important;}
.table th{color:var(--faint)!important;font-size:10.5px!important;font-weight:700!important;letter-spacing:.05em!important;text-transform:uppercase!important;background-color:var(--surface-2)!important;border-color:var(--border)!important;}
.table td{font-size:12.5px!important;border-color:var(--border)!important;}
.table-hover>tbody>tr:hover>*{background-color:var(--surface-2)!important;}
.table-striped>tbody>tr:nth-of-type(odd)>*{background-color:var(--surface-2)!important;}
.modal-content{background-color:var(--surface)!important;border-color:var(--border)!important;border-radius:14px!important;overflow:hidden!important;}
.modal-header{border-color:var(--border)!important;padding:16px 20px!important;}
.modal-title{font-size:15px!important;font-weight:700!important;color:var(--heading)!important;}
.modal-body{padding:20px!important;}
.modal-footer{border-color:var(--border)!important;padding:14px 20px!important;}
.nav-tabs .nav-link{font-size:13px!important;font-weight:600!important;color:var(--muted)!important;border-radius:8px 8px 0 0!important;}
.nav-tabs .nav-link.active{color:var(--primary)!important;background-color:var(--surface)!important;border-color:var(--border) var(--border) var(--surface)!important;}
.page-link{color:var(--text)!important;background-color:var(--surface)!important;border-color:var(--border-strong)!important;font-size:12.5px!important;font-weight:600!important;}
.page-item.active .page-link{background-color:var(--primary)!important;border-color:var(--primary)!important;color:#fff!important;}
.page-link:hover{color:var(--heading)!important;background-color:var(--surface-3)!important;}
.page-item.disabled .page-link{opacity:.5!important;}
html[data-theme="dark"] .form-control,html[data-theme="dark"] .form-select{color:var(--text)!important;background-color:var(--surface)!important;border-color:var(--border-strong)!important;}
html[data-theme="dark"] .form-control::placeholder{color:var(--faint)!important;}
html[data-theme="dark"] .input-group-text{background-color:var(--surface-3)!important;border-color:var(--border-strong)!important;color:var(--muted)!important;}
html[data-theme="dark"] .btn-secondary{background-color:var(--surface-3)!important;color:var(--text)!important;}
html[data-theme="dark"] .table{--bs-table-bg:var(--surface);--bs-table-striped-bg:var(--surface-2);--bs-table-hover-bg:var(--surface-3);}
html[data-theme="dark"] .modal-content{background-color:var(--surface)!important;border-color:var(--border)!important;}
html[data-theme="dark"] .card{background-color:var(--surface)!important;border-color:var(--border)!important;}

/* ===== LEGACY BRIDGE (old BEM → PINIX tokens) ===== */
/* Layout wrappers */
.content>.d-block>.container,.content>.container{max-width:none!important;padding-left:0!important;padding-right:0!important;}
.content .row{margin-left:0!important;margin-right:0!important;}
.content .row.u-mb-large{margin-bottom:18px!important;}
.content [class*="col-"]{padding-left:0!important;padding-right:0!important;}

/* Table container → PINIX card */
.c-table-responsive\@desktop{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden!important;}

/* Table reset */
.c-table{border:none!important;border-radius:0!important;background:transparent!important;}
.c-table__head--slim{background:var(--surface-2)!important;}
.c-table__cell{padding:10px 16px!important;color:var(--text)!important;font-size:12.5px!important;font-weight:400!important;border-top:1px solid var(--border)!important;border-bottom:1px solid var(--border)!important;}
.c-table__cell--head{color:var(--faint)!important;font-size:10px!important;font-weight:700!important;letter-spacing:.05em!important;text-transform:uppercase!important;background:var(--surface-2)!important;}
.c-table__row{border-color:var(--border)!important;}
.c-table__row--danger{background:color-mix(in srgb,var(--danger) 8%,var(--surface))!important;}
.c-table--highlight tbody tr:hover{background:var(--surface-2)!important;}

/* Card */
.c-card{background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:var(--shadow)!important;overflow:hidden;}
.c-card__header,.c-card__header.c-toolbar{padding:13px 16px!important;border-bottom:1px solid var(--border)!important;background:var(--surface-2)!important;display:flex;align-items:center;gap:10px;}
.c-card__body{padding:16px 20px!important;}
.c-toolbar__title{font-size:15px!important;font-weight:700!important;color:var(--heading)!important;margin:0!important;}
.content .o-page__card{max-width:560px;}

/* Form */
.c-field{margin-bottom:.85rem;}
.c-field__label{font-size:12.5px!important;font-weight:600!important;color:var(--heading)!important;display:block;margin-bottom:.35rem;}
.c-input{font-family:inherit!important;font-size:13px!important;color:var(--text)!important;background:var(--surface)!important;border:1px solid var(--border-strong)!important;border-radius:9px!important;padding:9px 13px!important;outline:none;width:100%;display:block;transition:border-color .15s,box-shadow .15s;}
.c-input:focus{border-color:var(--primary)!important;box-shadow:0 0 0 3px rgba(13,110,253,.13)!important;}
.c-field.has-icon-right{position:relative;}
.c-field.has-icon-right .c-input{padding-right:38px!important;}
.c-field__icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:14px;}

/* Buttons */
.c-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;font-size:12.5px!important;font-weight:600!important;border-radius:8px!important;padding:9px 15px!important;cursor:pointer!important;border:1px solid transparent!important;font-family:inherit!important;white-space:nowrap!important;text-decoration:none!important;line-height:1.4!important;}
.c-btn--info,.c-btn--primary,.c-btn--blue{background:var(--primary)!important;color:#fff!important;border-color:var(--primary)!important;}
.c-btn--info:hover,.c-btn--primary:hover,.c-btn--blue:hover{background:var(--secondary)!important;}
.c-btn--fullwidth{width:100%!important;}
.c-btn--small{padding:7px 11px!important;font-size:12px!important;}
.c-btn-group{display:inline-flex;gap:4px;}

/* Status colors */
.u-bg-facebook{background:var(--primary)!important;}
.u-bg-success{background:var(--success)!important;}
.u-bg-pinterest{background:var(--danger)!important;}
.u-color-secondary{color:#fff!important;}
.u-color-success{color:var(--success)!important;}
.u-color-danger{color:var(--danger)!important;}
.u-text-mute{color:var(--muted)!important;}

/* ===== COMBO (SEARCHABLE SELECT) ===== */
.combo{position:relative;width:100%;}
.combo-field{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;font-family:inherit;font-size:13px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:10px 12px;cursor:pointer;transition:.14s;outline:none;}
.combo-field .combo-val{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.combo-field .combo-val.combo-placeholder{color:var(--faint);}
.combo-field>.fas{color:var(--muted);font-size:11px;transition:transform .18s;flex:0 0 auto;}
.combo.open .combo-field{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 3px rgba(13,110,253,.13);}
.combo.open .combo-field>.fas{transform:rotate(180deg);}
.combo-pop{position:absolute;top:calc(100% + 5px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow-lg);z-index:50;opacity:0;transform:translateY(-5px);pointer-events:none;transition:.16s;overflow:hidden;}
.combo.open .combo-pop{opacity:1;transform:none;pointer-events:auto;}
.combo-search{display:flex;align-items:center;gap:9px;padding:9px 12px;border-bottom:1px solid var(--border);}
.combo-search i{color:var(--faint);font-size:12px;flex:0 0 auto;}
.combo-search input{flex:1;border:none;background:none;outline:none;font-family:inherit;font-size:13px;color:var(--text);}
.combo-list{max-height:190px;overflow-y:auto;padding:5px;}
.combo-opt{padding:9px 11px;border-radius:8px;font-size:12.5px;color:var(--text);cursor:pointer;}
.combo-opt:hover{background:var(--surface-3);}
.combo-opt.sel{background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary);font-weight:600;}
.combo-empty{padding:16px;text-align:center;font-size:12px;color:var(--faint);}
/* Varian ukuran combo (dulu pernah ada di blok combo lama/mati baris ~837, dihidupkan lagi
   di blok aktif). Tempel di WRAPPER (div pembungkus, bukan hasil render JS) — descendant
   selector tetap kena .combo-field di dalamnya. Height/radius eksplisit disamakan PERSIS
   dengan .form-control-sm (baris ~889: padding .35rem .65rem + line-height 1.5 + border 1px
   ≈ 32px) — bukan angka toolbar (33px) yang dipakai sebelumnya, supaya "sm" berarti sama
   di seluruh sistem (input, select, combo), bukan beda-beda per komponen. Butuh -lg? tambah
   rule serupa disamakan ke .form-control-lg saat memang dipakai. */
.combo-sm .combo-field{height:32px;padding:0 10px;font-size:12.5px;border-radius:7px;}

/* ===== PINIX OVERRIDE: Bootstrap #modalAlert ===== */
#modal-content{background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:12px!important;overflow:hidden!important;}
#modal-header{background:var(--surface)!important;border-bottom:1px solid var(--border)!important;border-top:none!important;padding:14px 20px!important;}
#modal-title-alert,#modal-title-confirm,#modal-title-info{font-size:15px!important;font-weight:700!important;color:var(--heading)!important;line-height:1.3!important;margin:0!important;}
#modal-header .btn-close,#modal-header .btn-close-white{filter:none!important;opacity:.55;box-shadow:none!important;}
#modal-header .btn-close:hover,#modal-header .btn-close-white:hover{opacity:1;}
#modalAlertText{background:var(--surface)!important;color:var(--text)!important;}

/* ===== costumSelect Pinix override ===== */
.select-single-label:hover,.select-multiple-option-row:hover{background:var(--surface-3);}
.select-single-label.sel,.select-multiple-option-row.sel{background:color-mix(in srgb,var(--primary) 10%,transparent);color:var(--primary);font-weight:600;}
.select-single-btn.disabled-select{background:var(--surface-3)!important;color:var(--muted)!important;}
.pinix-select-multiple .selectedValueSelectMultiple{gap:6px;min-width:0;}
.pinix-select-multiple .selected-count-multiple{height:22px;min-width:22px;display:inline-flex;align-items:center;justify-content:center;background:var(--primary);color:#fff;border-radius:999px;font-size:10px;font-weight:700;flex:0 0 auto;padding:0 7px;}
.pinix-select-multiple .text-tag-selected{flex:1;overflow:hidden;margin-left:0;min-width:0;}
.pinix-select-multiple .pinix-select-summary-badge{display:inline-block;max-width:100%;background:color-mix(in srgb,var(--primary) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--primary) 22%,var(--border));border-radius:999px;color:var(--text);font-size:12px;font-weight:600;line-height:1;padding:5px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pinix-select-multiple .pinix-select-actions{flex:0 0 auto;margin-left:8px;gap:4px;}
.pinix-select-multiple .remove-selected-multiple{height:20px;width:20px;display:flex;align-items:center;justify-content:center;color:var(--muted);border-radius:50%;cursor:pointer;}
.pinix-select-multiple .remove-selected-multiple:hover{background:var(--surface-3);color:var(--danger,#dc3545);}
.pinix-select-multiple .remove-selected-multiple i{font-size:10px;}
.pinix-select-multiple .container-tag-select-multiple{align-items:center;flex-wrap:nowrap;overflow-x:auto;gap:4px;padding:6px 6px 8px;border-bottom:1px solid var(--border);background:var(--surface);}
.pinix-multiselect-option{gap:9px;}
.pinix-multiselect-native{position:absolute;opacity:0;pointer-events:none;}
.pinix-multiselect-check{width:16px;height:16px;border:1px solid var(--border);border-radius:4px;display:flex;align-items:center;justify-content:center;flex:0 0 16px;color:transparent;background:var(--surface);}
.pinix-multiselect-option.sel .pinix-multiselect-check{background:var(--primary);border-color:var(--primary);color:#fff;}
.pinix-multiselect-check i{font-size:10px;}
.pinix-select-badge{display:inline-flex!important;align-items:center;gap:6px;flex:0 0 auto;border:1px solid var(--border);background:var(--surface-3);color:var(--text);font-size:11.5px;font-weight:600;border-radius:999px;padding:5px 8px;line-height:1;}
.pinix-select-badge .label-text{white-space:nowrap;}
.pinix-select-badge .remove-multiple-option{font-size:9px;color:var(--muted);}
.pinix-select-badge .remove-multiple-option:hover{color:var(--danger,#dc3545);}

/* ===== Approval active menu redesign ===== */
.approval-tabs-toolbar{align-items:center;}
.pinix-tabs{border-bottom:none!important;gap:6px;}
.pinix-tabs .nav-link{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border)!important;border-radius:8px!important;color:var(--muted)!important;background:var(--surface)!important;font-size:12.5px;font-weight:600;padding:8px 12px!important;}
.pinix-tabs .nav-link.active{color:var(--primary)!important;background:color-mix(in srgb,var(--primary) 10%,transparent)!important;border-color:color-mix(in srgb,var(--primary) 25%,var(--border))!important;}
.approval-filter-select{min-width:210px;max-width:280px;flex:0 1 240px;}
.approval-filter-wide{min-width:260px;max-width:360px;}
.toolbar .approval-filter-select.fld{gap:4px;}
.toolbar .approval-filter-select.fld label{font-size:11px;color:var(--muted);margin:0;}
.toolbar .approval-filter-select.fld select{height:38px;}
.approval-date-filter{display:flex;align-items:center;gap:8px;}
.approval-date-filter input{font-family:inherit;font-size:12.5px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 10px;outline:none;}
.approval-date-filter input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 15%,transparent);}
.cell-sub{font-size:11.5px;color:var(--muted);margin-top:3px;white-space:normal;}
.table-empty{border-top:1px solid var(--border);}
.approval-setting-body{padding:16px;}
.approval-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--border);margin-top:16px;}
.approval-level-panel{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden;margin-bottom:14px;}
.approval-level-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surface-2);border-bottom:1px solid var(--border);}
.approval-level-panel-head strong{font-size:13.5px;color:var(--heading);}
.approval-level-panel-body{padding:14px;}
.approval-approver-label{display:block;font-size:12px;font-weight:600;color:var(--text);margin:14px 0 8px;}
.approval-approver-row{display:grid;grid-template-columns:minmax(128px,160px) minmax(180px,1fr) 34px;gap:8px;align-items:center;margin-bottom:8px;}
.approval-readonly-box{background:var(--surface-3);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:12.5px;color:var(--text);font-weight:600;}
.approval-warning-box{display:flex;align-items:flex-start;gap:9px;background:color-mix(in srgb,var(--warning) 17%,transparent);border:1px solid color-mix(in srgb,var(--warning) 35%,var(--border));color:#806000;border-radius:9px;padding:10px 12px;font-size:12.5px;line-height:1.45;}
html[data-theme="dark"] .approval-warning-box{color:var(--warning);}
.pinix-fixed-note-col{width:220px!important;min-width:220px!important;max-width:220px!important;}
td.pinix-fixed-note-col>span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;line-height:1.45;}

@media(max-width:860px){
  .approval-tabs-toolbar{gap:10px;}
  .pinix-tabs{width:100%;}
  .pinix-tabs .nav-item{flex:1;}
  .pinix-tabs .nav-link{justify-content:center;width:100%;}
  .approval-level-page .toolbar{flex-wrap:wrap;}
  .approval-filter-select,.approval-filter-wide{min-width:100%;max-width:none;flex:1 1 100%;}
  .approval-date-filter{width:100%;}
  .approval-date-filter input{flex:1;min-width:0;}
  .table-empty{display:none;}
  .approval-approver-row{grid-template-columns:1fr 34px;}
  .approval-row-type,.approval-row-value{grid-column:1/-1;}
  .approval-approver-row .iconbtn{grid-column:2;justify-self:end;}
}

/* ===== Penjualan > Penjualan ===== */
.penjualan-card .table-wrap{max-width:100%;overflow:auto;}
.penjualan-card .table-data-penjualan{min-width:1100px;}
.penjualan-card .table-data-penjualan th,
.penjualan-card .table-data-penjualan td{vertical-align:middle;}
.penjualan-card .row-data-penjualan{cursor:pointer;}
.penjualan-card .row-data-penjualan-selected td{background:color-mix(in srgb,var(--primary) 10%,var(--surface))!important;}
.penjualan-card .reject-data-penjualan td,
.penjualan-card .mundur-data-penjualan td{color:var(--faint)!important;}
.penjualan-card .tunggakan-data-penjualan td{color:var(--danger)!important;}
.penjualan-card-list .ec{cursor:pointer;}
.subform-menu-fungsi-data-penjualan{padding:4px;}
.penjualan-menu-summary{border:1px solid var(--border);border-radius:12px;background:var(--surface-2);padding:13px 14px;margin-bottom:12px;}
.penjualan-menu-title{display:flex;align-items:center;gap:11px;margin-bottom:12px;}
.penjualan-menu-title .ic{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);font-size:15px;flex:0 0 38px;}
.penjualan-menu-title b{display:block;font-size:15px;font-weight:700;color:var(--heading);line-height:1.25;}
.penjualan-menu-title span{display:block;font-size:12px;color:var(--muted);margin-top:3px;}
.penjualan-menu-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.penjualan-menu-meta div{min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:8px 10px;}
.penjualan-menu-meta span{display:block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-bottom:3px;}
.penjualan-menu-meta b{display:block;font-size:12.5px;font-weight:600;color:var(--heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.penjualan-menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
.penjualan-menu-actions-title{grid-column:1/-1;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);padding:2px 1px 4px;}
.penjualan-menu-actions>.d-block{margin:0!important;}
.penjualan-menu-actions>.c-btn,
.penjualan-menu-actions>.c-btn-group{margin:0!important;}
.penjualan-menu-actions>.c-btn-group{grid-column:1/-1;width:100%!important;}
.subform-menu-fungsi-data-penjualan small{font-size:12px!important;color:var(--muted)!important;}
.subform-menu-fungsi-data-penjualan .nav-subform-menu-fungsi-data-penjualan{margin-top:0;border-radius:8px!important;min-height:38px;width:100%!important;padding-left:10px!important;padding-right:10px!important;}
.subform-menu-fungsi-data-penjualan .c-btn--warning{background:var(--warning)!important;border-color:var(--warning)!important;color:#3d2e00!important;}
.subform-menu-fungsi-data-penjualan .c-btn--success{background:var(--success)!important;border-color:var(--success)!important;color:#fff!important;}
.subform-menu-fungsi-data-penjualan .c-btn--danger{background:var(--danger)!important;border-color:var(--danger)!important;color:#fff!important;}
.subform-menu-fungsi-data-penjualan .c-btn-group{display:flex!important;gap:6px;margin-top:6px;}
.subform-menu-fungsi-data-penjualan .c-btn-group .c-btn{width:50%!important;border-radius:8px!important;}
.subform-menu-fungsi-data-penjualan .disabled{pointer-events:none;opacity:.45;filter:saturate(.4);}
@media(max-width:760px){
  .penjualan-card .table-wrap{display:none;}
  .penjualan-card .card-list{display:flex;}
  .penjualan-card .toolbar .search-group{width:100%;}
  .penjualan-card .toolbar .spacer{display:none;}
  .page-head .ph-actions{width:100%;}
  .page-head .ph-actions>.btn,
  .page-head .ph-actions>.btn-group{flex:1 1 auto;}
  .penjualan-menu-meta,
  .penjualan-menu-actions{grid-template-columns:1fr;}
}

/* ===== MERGED FROM pinix-shell.css (latest additions) ===== */
.fld input,.fld select,.fld textarea{font-family:inherit;font-size:13px;color:var(--heading);background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:10px 12px;outline:none;width:100%;}
.fld input:disabled,.fld select:disabled,.fld textarea:disabled{background:var(--surface-3);color:var(--muted);cursor:not-allowed;}
.fld input.is-invalid,.fld select.is-invalid,.fld textarea.is-invalid{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 4%,var(--surface));}
.fld input.is-invalid:focus,.fld textarea.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent);}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 3px rgba(13,110,253,.13);}
.fld input::placeholder,.fld textarea::placeholder{color:var(--faint);}
.combo-field .combo-val.placeholder{color:var(--faint);}
.combo-field .combo-val.placeholder{color:var(--faint);}
.pt-footer{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-top:1px solid var(--border);flex-wrap:wrap;gap:10px;}
.pt-footer .pt-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
.pt-info{font-size:12px;color:var(--muted);}
.pt-pages{display:flex;gap:4px;justify-content:flex-end;margin-left:auto;}
.pt-pages button{min-width:30px;height:30px;border-radius:7px;border:1px solid var(--border-2,var(--border));background:var(--panel,var(--surface));color:var(--text);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.pt-pages button.on{background:var(--primary);color:#fff;border-color:var(--primary);}
.pt-pages button:disabled{opacity:.4;cursor:not-allowed;}
.pt-pages button:hover:not(.on):not(:disabled){background:var(--panel-3,var(--surface-3));}
.pt-pg-size{display:inline-flex;align-items:center;gap:8px;}
.pt-pg-size select{min-width:90px;width:auto;}
.note-editable ul{list-style-type:disc!important;padding-left:24px!important;}
.note-editable ol{list-style-type:decimal!important;padding-left:24px!important;}
.note-editable ul ul,.note-editable ol ul{list-style-type:circle!important;}
.note-editable ul ol,.note-editable ol ol{list-style-type:lower-alpha!important;}
@media (max-width:575.98px){.pt-footer{justify-content:flex-end;}
  .pt-footer .pt-meta{width:100%;justify-content:flex-end;}
  .pt-info{width:100%;text-align:right;}
  .pt-pages{width:100%;flex-wrap:wrap;}}

/* ============================================================
   Bootstrap form bridge — markup Bootstrap murni, skin Pinix.
   Konvensi form baru: .row.g-3 > .col-* > .form-label + .form-control
   (lihat docs/superpowers/specs/2026-07-12-bootstrap-form-markup-design.md)
   ============================================================ */
/* Fase 1 asli (2026-07-12) menulis skin dasar .form-control/.form-select/.form-check/.form-text/
   .input-group-text di sini — belakangan ketahuan sudah ada blok "BOOTSTRAP 5 CUSTOM SKIN" legacy
   ber-!important (baris ~874, pre-existing SEBELUM sesi redesign ini, commit d5c3d51cb) yang meng-cover
   selector sama duluan. Rule Fase 1 yang jadi dead code (kalah !important) sudah dihapus; sisa di bawah
   ini HANYA yang genuinely masih berlaku (target selector/properti yang tidak disentuh blok legacy). */
.form-label .text-danger{color:var(--danger)!important;}
.form-control:disabled,.form-select:disabled{background-color:var(--surface-3);color:var(--muted);cursor:not-allowed;}
.form-control.is-invalid,.form-select.is-invalid{border-color:var(--danger);background-color:color-mix(in srgb,var(--danger) 4%,var(--surface));}
.form-control.is-invalid{padding-right:12px!important;}
.form-select.is-invalid{padding-right:30px!important;--bs-form-select-bg-icon:none;}
.form-select.is-invalid:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 16%,transparent);}
.form-select{cursor:pointer;}
.form-check-label{cursor:pointer;}
.input-group-text{border-radius:9px;}
.btn-outline-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow);}
.btn-outline-secondary:hover,.btn-outline-secondary:active{background:var(--surface-3);color:var(--text);border-color:var(--border-strong);}
.btn-outline-secondary:focus-visible{background:var(--surface-3);color:var(--text);border-color:var(--primary);box-shadow:0 0 0 3px rgba(13,110,253,.13);}
/* Footer fragment popup: .modal-footer DI DALAM .modal-body (full-bleed, meniru .modal-foot).
   Footer shell (#modal-alert-btn-wrapper dkk) adalah sibling .modal-body — tidak kena. */
.modal-body .modal-footer{display:flex;align-items:stretch;justify-content:flex-end;gap:10px;margin:20px -20px -20px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0;}
.modal-body .modal-footer>*{margin:0;}
/* Restore gutter Bootstrap untuk .row ber-kelas g-* di dalam .content.
   Rule legacy (.content .row / .content [class*="col-"], baris ~953-955) me-nol-kan
   margin/padding grid dengan !important untuk meratakan halaman lama — form konvensi
   baru memakai .row.g-* sehingga di-opt-out dari perataan itu. */
.content .row.g-1,.content .row.g-2,.content .row.g-3,.content .row.g-4,.content .row.g-5{margin-left:calc(var(--bs-gutter-x)*-.5)!important;margin-right:calc(var(--bs-gutter-x)*-.5)!important;}
.content .row.g-1>[class*="col-"],.content .row.g-2>[class*="col-"],.content .row.g-3>[class*="col-"],.content .row.g-4>[class*="col-"],.content .row.g-5>[class*="col-"]{padding-left:calc(var(--bs-gutter-x)*.5)!important;padding-right:calc(var(--bs-gutter-x)*.5)!important;}

/* Fase 3: tabel & toolbar list konvensi Bootstrap (scoped — .table global dipakai halaman legacy) */
.tbl-scroll .table{margin-bottom:0;--bs-table-bg:transparent;}
.toolbar .input-group{flex:1 1 auto;width:auto;min-width:180px;max-width:320px;}
/* height eksplisit (bukan padding) supaya PASTI sama tinggi dengan page-size selector
   (.toolbar select dikunci 33px!important oleh rule lama di atas) — padding non-!important
   tadinya no-op karena kalah dari .form-control{padding:9px 13px!important} (baris ~878) */
.toolbar .input-group .form-control,.toolbar .input-group .btn{height:33px!important;padding:0 10px!important;font-size:12.5px!important;}
/* .btn{border-radius:9px!important} (baris ~911) mengalahkan reset radius input-group
   Bootstrap — nol-kan lagi sisi dalam agar anggota group benar-benar menyatu */
.input-group>:not(:last-child):not(.dropdown-menu){border-top-right-radius:0!important;border-bottom-right-radius:0!important;}
.input-group>:not(:first-child):not(.dropdown-menu){border-top-left-radius:0!important;border-bottom-left-radius:0!important;}

/* Fase 4: badge chip + pagination Bootstrap dengan skin Pinix */
.badge.text-bg-light{background:var(--surface-3)!important;color:var(--muted)!important;border:1px solid var(--border);}
/* Bentuk mengikuti .pagi .pg (pagination Pinix lain, baris ~289): tombol terpisah kotak
   bulat 32x32 + gap, BUKAN strip menyatu default Bootstrap (yang butuh negative margin-left
   & radius hanya di ujung) — reset dua mekanisme itu di sini. */
.pagination{gap:4px;}
.pagination .page-link{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 6px;margin-left:0!important;border-radius:7px!important;font-size:12.5px;font-weight:600;cursor:pointer;background:var(--surface);border-color:var(--border);color:var(--text);}
.pagination .page-link:hover:not(:disabled){background:var(--surface-3);color:var(--heading);}
.pagination .page-link:focus{box-shadow:0 0 0 3px rgba(13,110,253,.13);}
.pagination .page-item.active .page-link{background:var(--primary);border-color:var(--primary);color:#fff;}
.pagination .page-item.disabled .page-link{opacity:.45;pointer-events:none;background:var(--surface);border-color:var(--border);color:var(--text);}
/* Ikat warna komponen Bootstrap ke token Pinix — ganti sekali di :root, semua ikut
   (hari ini hex-nya identik dengan bawaan Bootstrap, jadi tidak ada perubahan visual) */
.btn-primary{--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:var(--secondary);--bs-btn-hover-border-color:var(--secondary);--bs-btn-active-bg:var(--secondary);--bs-btn-active-border-color:var(--secondary);--bs-btn-disabled-bg:var(--primary);--bs-btn-disabled-border-color:var(--primary);}
.btn-danger{--bs-btn-bg:var(--danger);--bs-btn-border-color:var(--danger);--bs-btn-hover-bg:color-mix(in srgb,var(--danger) 85%,#000);--bs-btn-hover-border-color:color-mix(in srgb,var(--danger) 85%,#000);--bs-btn-active-bg:color-mix(in srgb,var(--danger) 80%,#000);--bs-btn-active-border-color:color-mix(in srgb,var(--danger) 80%,#000);--bs-btn-disabled-bg:var(--danger);--bs-btn-disabled-border-color:var(--danger);}
.btn-outline-danger{--bs-btn-color:var(--danger);--bs-btn-border-color:var(--danger);--bs-btn-hover-bg:var(--danger);--bs-btn-hover-border-color:var(--danger);--bs-btn-active-bg:var(--danger);--bs-btn-active-border-color:var(--danger);--bs-btn-disabled-color:var(--danger);--bs-btn-disabled-border-color:var(--danger);}
/* Petakan token Bootstrap ke token Pinix (dark mode ikut otomatis).
   Perlu manual: dark mode bawaan Bootstrap pakai atribut [data-bs-theme=dark],
   app ini pakai [data-theme=dark] sendiri — override Bootstrap tidak pernah otomatis aktif. */
:root{--bs-border-color:var(--border);--bs-secondary-color:var(--muted);--bs-body-color:var(--text);}
.bg-body-tertiary{background-color:var(--surface-2)!important;}
.badge.text-bg-secondary{background-color:var(--neutral)!important;}
.badge.text-bg-info{background-color:var(--info)!important;}
.badge.text-bg-danger{background-color:var(--danger)!important;}
.badge.text-bg-success{background-color:var(--success)!important;}
