/* Tambahan tema ERP (di atas app.css bergaya HMS) */
.min-w-0{min-width:0}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.side-link.disabled{opacity:.45;cursor:default}
.side-link.disabled:hover{background:none}
.sidebar-backdrop{display:none}
@media (max-width: 991.98px){
  .sidebar{transform:translateX(-100%)} body.sidebar-open .sidebar{transform:none}
  body.sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:1035}
  .main{margin-left:0} .topbar .menu-toggle{display:inline-flex;align-items:center;justify-content:center}
  .content{padding:16px 14px 40px}
}
.badge{font-weight:600;font-size:11px;border-radius:6px;padding:4px 8px}
.st-muted{background:#EEF0F3;color:#5B6472}.st-primary{background:#F3EDF2;color:#714B67}
.st-success{background:#E7F6EC;color:#1B7A3D}.st-warning{background:#FFF4DB;color:#8A5A00}
.st-danger{background:#FDECEC;color:#B42318}.st-info{background:#E6F4F5;color:#016A6F}
.table thead th{background:#d8bfd8;color:#3b2a3b;font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;border-bottom:0;white-space:nowrap}
.table td{vertical-align:middle}
.table-hover tbody tr:hover{background:#FBF8FA}
.statusbar{display:flex;flex-wrap:wrap;gap:0;margin:-4px 0 16px}
.sb-step{position:relative;padding:6px 16px 6px 22px;font-size:12px;font-weight:600;color:var(--muted);background:#fff;border:1px solid var(--border);margin-right:-1px}
.sb-step:first-child{border-radius:8px 0 0 8px;padding-left:14px}.sb-step:last-child{border-radius:0 8px 8px 0}
.sb-step.done{color:var(--primary-700);background:var(--primary-soft)}
.sb-step.active{color:#fff;background:var(--primary);border-color:var(--primary)}
.sb-step.cancelled{color:#B42318;background:#FDECEC;border-color:#F5C2C0;border-radius:8px}
.timeline{list-style:none;margin:0;padding:12px 16px}
.timeline li{position:relative;padding:0 0 12px 18px;border-left:2px solid var(--border);margin-left:4px}
.timeline li:last-child{padding-bottom:0}
.timeline li::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--primary-300)}
.timeline li.tl-approve::before,.timeline li.tl-auto_approve::before,.timeline li.tl-post::before{background:#1B7A3D}
.timeline li.tl-reject::before,.timeline li.tl-cancel::before{background:#B42318}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;font-size:13px}
.kv dt{color:var(--muted);font-weight:500}.kv dd{margin:0;font-weight:500;min-width:0}
.lines-table td{padding:4px 6px}.lines-table .form-control,.lines-table .form-select{font-size:12.5px;padding:4px 8px}
.lines-table .col-qty{width:110px}.lines-table .col-money{width:140px}.lines-table .col-uom{width:100px}.lines-table .col-del{width:36px}
.totals{min-width:280px}.totals td{padding:3px 0}.totals .grand{font-size:16px;font-weight:700;border-top:1px solid var(--border)}
.filter-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.filter-bar .form-control,.filter-bar .form-select{width:auto;min-width:150px}
.ed-red{color:#B42318;font-weight:600}.ed-amber{color:#8A5A00;font-weight:600}
.check-ok{color:#1B7A3D}.check-bad{color:#B42318}
.empty{padding:36px 16px;text-align:center;color:var(--muted)}
.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#714B67,#875A7B);padding:16px}
.login-card{width:100%;max-width:400px;border-radius:16px;border:0}
.feature-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}
.feature-row:last-child{border-bottom:0}
.form-switch .form-check-input{width:2.6em;height:1.4em;cursor:pointer}
.report-table td,.report-table th{padding:6px 10px}
.report-total td{font-weight:700;border-top:2px solid var(--text)}
@media print{.sidebar,.topbar,.page-head .btn,.filter-bar{display:none!important}.main{margin:0}}

/* ---------- Halaman login ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);background:#fff}
.auth-brand{position:relative;overflow:hidden;color:#fff;background:#5E3D56;
  background-image:linear-gradient(160deg,#714B67 0%,#5A3A52 55%,#43293D 100%)}
.auth-brand::before{content:"";position:absolute;inset:0;opacity:.09;
  background-image:linear-gradient(rgba(255,255,255,.9) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.9) 1px,transparent 1px);
  background-size:44px 44px;mask-image:linear-gradient(180deg,#000 0%,transparent 85%)}
.auth-brand-inner{position:relative;height:100%;display:flex;flex-direction:column;gap:36px;padding:44px 56px}
.auth-logo{display:flex;align-items:center;gap:12px}
.auth-logo strong{display:block;font-size:17px;letter-spacing:-.01em}
.auth-logo small{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.auth-mark{width:42px;height:42px;border-radius:11px;display:inline-grid;place-items:center;font-size:20px;background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.auth-hero{margin-top:auto;max-width:520px}
.auth-hero h1{font-size:clamp(26px,2.6vw,36px);line-height:1.15;font-weight:800;letter-spacing:-.02em;margin:0 0 14px;text-wrap:balance}
.auth-hero p{font-size:14.5px;line-height:1.6;opacity:.82;margin:0;max-width:60ch}
.auth-points{list-style:none;margin:0;padding:0;display:grid;gap:14px;max-width:520px}
.auth-points li{display:flex;gap:12px;align-items:flex-start;font-size:13px;opacity:.92}
.auth-points i{font-size:16px;width:34px;height:34px;flex:0 0 34px;border-radius:9px;display:grid;place-items:center;background:rgba(255,255,255,.12)}
.auth-points b{display:block;font-size:13.5px;margin-bottom:1px}
.auth-ledger{margin-top:auto;max-width:520px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(0,0,0,.14);
  font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;font-size:11.5px;overflow:hidden}
.auth-ledger div{display:grid;grid-template-columns:64px 1fr auto;gap:12px;padding:9px 14px;border-top:1px solid rgba(255,255,255,.1)}
.auth-ledger div:first-child{border-top:0}
.auth-ledger span:first-child{opacity:.6}.auth-ledger .dr{color:#B8E8D2}.auth-ledger .cr{color:#F4C9A8;padding-left:28px}
.auth-main{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px 24px;background:#FAF8FA}
.auth-card{width:100%;max-width:400px;margin:auto 0}
.auth-logo-mobile{display:none;color:var(--primary-700);margin-bottom:28px}
.auth-logo-mobile .auth-mark{background:var(--primary-soft);box-shadow:none;color:var(--primary-700)}
.auth-card h2{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 6px;color:var(--text)}
.auth-sub{color:var(--muted);margin:0 0 24px;font-size:13.5px}
.auth-field{margin-bottom:16px}
.auth-field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;color:var(--text)}
.auth-input{display:flex;align-items:center;gap:10px;height:46px;padding:0 6px 0 14px;border:1px solid #D9D2D8;border-radius:10px;background:#fff;transition:border-color .15s,box-shadow .15s}
.auth-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 4px rgba(135,90,123,.14)}
.auth-input.invalid{border-color:#D92D20;box-shadow:0 0 0 4px rgba(217,45,32,.1)}
.auth-input>i{color:#9A8F98;font-size:16px}
.auth-input input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-size:14px;color:var(--text);height:100%}
.auth-input input::placeholder{color:#B5ACB3}
.auth-eye{border:0;background:transparent;width:36px;height:36px;border-radius:8px;color:#8B8089}
.auth-eye:hover,.auth-eye:focus-visible{background:var(--primary-soft);color:var(--primary-700);outline:none}
.auth-caps{margin-top:6px;font-size:12px;color:#8A5A00}
.auth-row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 22px}
.auth-check{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted);cursor:pointer}
.auth-check input{width:16px;height:16px;accent-color:var(--primary)}
.auth-submit{width:100%;height:46px;border:0;border-radius:10px;background:var(--primary);color:#fff;font-weight:700;font-size:14px;
  display:flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,transform .05s}
.auth-submit:hover{background:var(--primary-700)}.auth-submit:active{transform:translateY(1px)}
.auth-submit:focus-visible{outline:3px solid rgba(135,90,123,.35);outline-offset:2px}
.auth-submit:disabled{opacity:.75;cursor:progress}
.auth-submit.loading i{animation:authspin .8s linear infinite}
@keyframes authspin{to{transform:rotate(360deg)}}
.auth-alert{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-radius:10px;font-size:13px;margin-bottom:18px;border:1px solid}
.auth-alert-danger{background:#FEF3F2;border-color:#FECDCA;color:#B42318}
.auth-alert-warning{background:#FFFAEB;border-color:#FEDF89;color:#93370D}
.auth-alert-info{background:#F3EDF2;border-color:#E3D3DF;color:#5A3A52}
.auth-help{margin:20px 0 0;font-size:12.5px;color:var(--muted);text-align:center}
.auth-foot{width:100%;max-width:400px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:11.5px;color:#9A8F98;margin-top:32px}
@media (max-width: 991.98px){
  .auth{grid-template-columns:1fr}
  .auth-brand{display:none}
  .auth-logo-mobile{display:flex}
  .auth-main{justify-content:flex-start;padding-top:48px}
}
@media (prefers-reduced-motion: reduce){.auth-submit.loading i{animation:none}}

/* pilihan bahasa di halaman login */
.auth-lang{display:flex;justify-content:flex-end;gap:4px;margin-bottom:18px}
.auth-lang a{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--muted,#6c757d);text-decoration:none;padding:4px 10px;border-radius:999px;border:1px solid transparent}
.auth-lang a:hover{border-color:#e3d6df}
.auth-lang a.active{background:#f3ecf1;color:#714B67;border-color:#e3d6df}
/* layar operator */
.op-card{border:1px solid var(--border,#e5e7eb);transition:box-shadow .15s,transform .15s}
.op-card:hover{box-shadow:0 6px 18px rgba(113,75,103,.12);transform:translateY(-1px)}
.op-card.op-running{border-left:4px solid #875A7B}
.op-card.op-waiting{border-left:4px solid #D97706}
.op-step{font-size:1.15rem;font-weight:700;color:var(--text,#1f2328);margin-bottom:2px}
/* perencanaan */
.row-late>td{background:#FFF7F6}
.mrp-k{font-size:.72rem;padding:.15rem .4rem;border-radius:6px;white-space:nowrap}
.load-tbl th,.load-tbl td{text-align:center;font-size:.78rem;padding:.35rem .25rem;min-width:46px}
.load-tbl td.wc,.load-tbl th.wc{text-align:left;min-width:170px;position:sticky;left:0;background:#fff;z-index:1}
.load-cell{border-radius:6px;padding:.25rem .1rem;font-variant-numeric:tabular-nums}
.ld-0{color:#98A2B3}.ld-ok{background:#E7F6EC;color:#1B7A3D}.ld-hi{background:#FFF4DB;color:#8A5A00}.ld-over{background:#FDECEC;color:#B42318;font-weight:600}
.ld-off{background:repeating-linear-gradient(45deg,#F4F5F7,#F4F5F7 4px,#ECEEF1 4px,#ECEEF1 8px);color:#98A2B3}
.ld-mrp{display:block;font-size:.66rem;opacity:.85}
.gantt{position:relative;overflow-x:auto}
.gantt-grid{display:grid;min-width:max-content;grid-template-columns:var(--lab,200px) repeat(var(--days,14),78px)}
@media (max-width:576px){.gantt-grid{--lab:112px}.g-label{white-space:normal}}
.g-head,.g-lane{display:contents}
.g-label{position:sticky;left:0;background:#fff;z-index:2;padding:.35rem .6rem;font-size:.78rem;border-bottom:1px solid #EEF0F3;border-right:1px solid #EEF0F3;white-space:nowrap}
.g-day{font-size:.72rem;text-align:center;padding:.3rem 0;border-bottom:1px solid #EEF0F3;border-right:1px solid #F3F4F6;color:#5B6472}
.g-day.today{color:#714B67;font-weight:600}
.g-cell{position:relative;height:40px;border-bottom:1px solid #EEF0F3;border-right:1px solid #F3F4F6}
.g-cell.off{background:repeating-linear-gradient(45deg,#FAFAFB,#FAFAFB 4px,#F1F2F4 4px,#F1F2F4 8px)}
.g-bar{position:absolute;top:6px;min-width:6px;height:28px;border-radius:6px;color:#fff;font-size:.68rem;line-height:28px;padding:0 4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-decoration:none;box-shadow:0 1px 2px rgba(16,24,40,.12)}
.g-bar:hover{color:#fff;filter:brightness(1.08)}
.g-bar.draft{opacity:.55;border:1px dashed rgba(255,255,255,.9)}
.g-bar.late{outline:2px solid #B42318;outline-offset:-1px}
.fc-in{width:84px;text-align:right}

/* ---- dashboard manajemen: grafik SVG (seri-1 biru #2a78d6, seri-2 oranye #eb6834 — palet tervalidasi CVD) */
.viz{width:100%;height:auto;display:block;overflow:visible}
.viz-grid{stroke:#ECEAEE;stroke-width:1}.viz-base{stroke:#9A93A0}
.viz-tick{font-size:11px;fill:#6B6470;font-variant-numeric:tabular-nums}
.viz-val{font-size:11.5px;font-weight:700;fill:#2b2430}
.viz-s1{fill:#2a78d6}.viz-s2{fill:#eb6834}
.viz-target{stroke:#3b3540;stroke-width:2;stroke-dasharray:5 3}
.viz-hit{fill:transparent}.viz-hit:hover{fill:rgba(113,75,103,.07)}
.viz-line{fill:none;stroke:#2a78d6;stroke-width:2;stroke-linejoin:round}
.viz-dot{fill:#2a78d6;stroke:#fff;stroke-width:2}.viz-dot.viz-neg{fill:#e34948}
.lg{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#52514e;margin-right:14px}
.lg i{display:inline-block;width:10px;height:10px;border-radius:2px}.lg i.s1{background:#2a78d6}.lg i.s2{background:#eb6834}
.lg i.tg{height:0;width:14px;border-top:2px dashed #3b3540;border-radius:0}
.hb{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;gap:4px 10px;align-items:center;font-size:12.5px}
.hb .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb .trk{height:10px;background:#F3F1F4;border-radius:0 4px 4px 0}
.hb .bar{height:10px;background:#2a78d6;border-radius:0 4px 4px 0;min-width:2px}
.hb .v{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.dtabs{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px}
.delta{font-size:12px;font-weight:600;white-space:nowrap}.delta.up{color:#1B7A3D}.delta.down{color:#B42318}.delta.flat{color:#6B6470}
.kpi .k-value.sm{font-size:1.15rem}
.ed-cell{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.ed-h-expired{color:#B42318}.ed-h-d90{color:#B54708}.ed-h-d180{color:#8A5A00}
.meter{height:6px;background:#F3F1F4;border-radius:3px;overflow:hidden;margin-top:6px}.meter>span{display:block;height:100%;background:#2a78d6}
.meter>span.warn{background:#eda100}.meter>span.bad{background:#e34948}
.viz-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* ---- absensi */
.att-grid th,.att-grid td{font-size:11.5px}.att-grid thead th{padding:4px 3px}.att-off{background:#efe3ee!important}
.sticky-col{position:sticky;left:0;background:#fff;z-index:1;min-width:170px}.att-grid thead .sticky-col{background:#d8bfd8}
.att{display:inline-block;min-width:24px;padding:3px 2px;border-radius:4px;font-weight:600;font-size:10.5px;text-align:center;line-height:1.2}
.att-click{cursor:pointer}.att-click:hover{outline:2px solid #875A7B}
.att-H{background:#E7F6EC;color:#1B7A3D}.att-T{background:#FFF4DB;color:#8A5A00}.att-A{background:#FDECEC;color:#B42318}
.att-L,.att-LN,.att-CB{background:#EEF0F3;color:#5B6472}.att-D{background:#E6F4F5;color:#016A6F}
.att-C,.att-S,.att-I,.att-M{background:#E8EEFB;color:#2a5bb5}.att-U{background:#FDECEC;color:#8a1f15}
.att-\00B7,.att--{color:#b8b3bb}
/* fase 8 — kinerja sales */
.ach-warn{color:#9a6700}
.tree-name{display:flex;align-items:center;gap:6px;min-width:220px}
.tree-name .tn-ind{display:inline-block;flex:none}
.tree-name .tn-lv{font-size:11px;color:#6b6670;border:1px solid #e3dfe6;border-radius:10px;padding:0 6px;white-space:nowrap}
tr.tree-0>td{font-weight:600;background:#faf8fb}
.tgt-grid input{min-width:92px;text-align:right;padding:2px 6px;font-size:13px}
.tgt-grid td,.tgt-grid th{white-space:nowrap}
.tgt-grid .split td{font-size:12px;color:#6b6670;background:#fcfbfd}
.tier-grid input{text-align:right}
/* fase 9 — mobile / PWA */
.bottom-nav{display:none}
@media (max-width:991px){
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:1030;background:#fff;border-top:1px solid #e7e3e9;
    padding:4px 4px calc(4px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(40,20,35,.06)}
  .bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 2px;color:#6b6670;text-decoration:none;
    font-size:11px;font-weight:500;position:relative;border-radius:10px;min-height:48px;justify-content:center}
  .bottom-nav a i{font-size:20px;line-height:1}
  .bottom-nav a.active{color:#714B67}.bottom-nav a.active i{transform:translateY(-1px)}
  .bottom-nav a.bn-main i{background:#714B67;color:#fff;border-radius:14px;padding:6px 14px;font-size:19px}
  .bottom-nav a.bn-main.active i{background:#5c3c54}
  .bn-badge{position:absolute;top:2px;left:calc(50% + 6px);background:#e34948;color:#fff;font-size:10px;font-weight:700;min-width:17px;
    height:17px;border-radius:9px;padding:0 4px;display:flex;align-items:center;justify-content:center;font-style:normal}
  .content{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .topbar{padding-top:max(env(safe-area-inset-top),0px)}
}
@media (display-mode: standalone){ .topbar{position:sticky;top:0;z-index:1020} }
.m-hello{margin:2px 0 14px}
.m-alert{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#fff7e6;border:1px solid #f3dca8;color:inherit;text-decoration:none;margin-bottom:14px}
.m-alert:hover{color:inherit;background:#fff2d6}
.m-card{text-decoration:none;color:inherit;display:block}.m-card:hover{color:inherit;border-color:#d9cfd6}
.m-section{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#6b6670;margin:4px 2px 8px}
.m-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
@media (max-width:420px){.m-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.m-tile{display:flex;flex-direction:column;gap:6px;padding:14px;border-radius:14px;background:#fff;border:1px solid #ebe7ee;color:inherit;text-decoration:none;min-height:104px}
.m-tile:hover,.m-tile:focus-visible{border-color:#cdbfc9;color:inherit;box-shadow:0 2px 10px rgba(60,30,52,.06)}
.m-tile .m-lbl{font-weight:600;font-size:14px;line-height:1.25}.m-tile .m-sub{font-size:12px;color:#6b6670;margin-top:-3px}
.m-ico{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;font-size:19px;flex:none;background:#f3eef2;color:#714B67}
.m-ico.warn{background:#ffe9b8;color:#8a5a00}
.m-tile.t1 .m-ico{background:#e8f0fb;color:#1f5fb4}.m-tile.t2 .m-ico{background:#e7f6ef;color:#17784b}
.m-tile.t3 .m-ico{background:#f3eef2;color:#714B67}.m-tile.t4 .m-ico{background:#fdeee6;color:#b04a16}
.m-tile.t5 .m-ico{background:#eef0ff;color:#4a4fb0}.m-tile.t6 .m-ico{background:#fff4d6;color:#8a5a00}
.m-stat{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:10px 6px;border-radius:12px;background:#fff;border:1px solid #ebe7ee;color:inherit;text-decoration:none;min-height:72px;text-align:center}
.m-stat .m-num{font-weight:700;font-size:18px;line-height:1.2}.m-stat .m-cap{font-size:11.5px;color:#6b6670;line-height:1.2}
a.m-stat:hover{color:inherit;border-color:#cdbfc9}
.scan-box{position:relative;border-radius:12px;overflow:hidden;background:#111;aspect-ratio:4/3}
.scan-box video{width:100%;height:100%;object-fit:cover;display:block}
.scan-frame{position:absolute;inset:18% 14%;border:2px solid rgba(255,255,255,.85);border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.25)}
.toast-box{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));z-index:1090;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none;width:min(92vw,420px)}
@media (min-width:992px){.toast-box{bottom:24px}}
.erp-toast{background:#2b2630;color:#fff;padding:9px 14px;border-radius:10px;font-size:13.5px;box-shadow:0 6px 20px rgba(0,0,0,.2);transition:opacity .35s,transform .35s;max-width:100%}
.erp-toast.bad{background:#b42318}.erp-toast.out{opacity:0;transform:translateY(6px)}
.att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.att-item{position:relative;border:1px solid #ebe7ee;border-radius:10px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.att-thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:#f6f4f7;color:#b42318;font-size:34px;overflow:hidden}
.att-thumb img{width:100%;height:100%;object-fit:cover}
.att-meta{display:flex;flex-direction:column;padding:5px 7px;font-size:11.5px;min-width:0}
.att-del{position:absolute;top:4px;right:4px}.att-del .btn{padding:1px 6px;background:rgba(255,255,255,.9)}
.m-alert{min-width:0;overflow:hidden}
/* menu samping bertingkat */
.side-search{position:relative;padding:10px 12px 4px;flex:0 0 auto}
.side-search i{position:absolute;left:24px;top:50%;transform:translateY(-35%);font-size:13px;color:rgba(255,255,255,.65);pointer-events:none}
.side-search input{width:100%;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:9px;color:#fff;padding:7px 10px 7px 32px;font-size:13px;outline:none}
.side-search input::placeholder{color:rgba(255,255,255,.6)}
.side-search input:focus{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.4)}
.side-group{margin:1px 0}
.side-head{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;color:rgba(255,255,255,.92);padding:9px 11px;border-radius:8px;font-size:13px;font-weight:600;text-align:left;cursor:pointer}
.side-head:hover{background:rgba(255,255,255,.1)}
.side-head>i:first-child{font-size:15px;width:20px;text-align:center;color:rgba(255,255,255,.8)}
.side-head span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-chev{font-size:11px;opacity:.7;transition:transform .18s}
.side-group.open>.side-head .side-chev,.side-nav.searching .side-group.found .side-chev{transform:rotate(180deg)}
.side-group.has-active>.side-head{color:#fff}
.side-items{display:none;padding:2px 0 6px 10px;margin-left:10px;border-left:1px solid rgba(255,255,255,.16)}
.side-group.open>.side-items,.side-nav.searching .side-group.found>.side-items{display:block}
.side-items .side-link{padding:7px 10px;font-weight:500;font-size:12.8px}
.side-items .side-link i{font-size:14px}
.side-empty{color:rgba(255,255,255,.7);font-size:12.5px;padding:12px}
/* select yang bisa diketik (Tom Select) */
.ts-wrapper.single .ts-control>.item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.ts-wrapper.form-select.focus{border-color:#a98aa1;box-shadow:0 0 0 .2rem rgba(113,75,103,.18)}
.ts-wrapper.form-select{min-width:0;padding:0}
:root{--ts-pr-clear-button:0px}  /* bawaan Tom Select "0" tanpa satuan → calc tidak valid → teks menabrak panah */
.ts-wrapper.form-select .ts-control,.ts-wrapper.single .ts-control{padding-right:2.6rem!important}
.ts-wrapper.form-select-sm .ts-control{padding-right:2.4rem!important}
.filter-bar .ts-wrapper.form-select,.d-flex>.ts-wrapper.form-select,.input-group>.ts-wrapper.form-select{min-width:150px;flex:0 1 auto}
.filter-bar .ts-wrapper.form-select-sm{min-width:130px}
.ts-wrapper.form-select.disabled{background-color:#f1eff2;opacity:.75}
.ts-dropdown{z-index:1090;border-radius:8px;box-shadow:0 10px 28px rgba(40,20,35,.16);font-size:14px}
.ts-dropdown .option{padding:7px 12px}
.ts-dropdown .active{background:#f3eef2;color:#2b2630}
.ts-dropdown .no-results{padding:8px 12px;color:#6b6670}
.lines-table .ts-wrapper{min-width:180px}

/* form & profil karyawan bertab */
.emp-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;border-bottom:0;gap:2px}
.emp-tabs .nav-link{white-space:nowrap;color:#5d5862;font-weight:600;font-size:13.5px;border-radius:10px 10px 0 0;padding:9px 14px}
.emp-tabs .nav-link.active{color:var(--bs-primary,#714B67);background:#fff;border-color:#e6e1e8 #e6e1e8 #fff}
.emp-tabs .nav-link:hover:not(.active){background:#f3eff4;border-color:transparent}
.emp-tab-card{border-top-left-radius:0}
.form-section{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#7a6f7e;margin-bottom:10px}
.career-box{background:#faf8fb;transition:background .25s}
.career-box.changed{background:#fff6e5;box-shadow:inset 3px 0 0 #e0a100}
.emp-lines td{vertical-align:middle}
.field-off{opacity:.45;pointer-events:none}
.emp-hero{display:flex;gap:14px;align-items:center}
.emp-avatar{width:56px;height:56px;border-radius:16px;background:#efe7ee;color:#714B67;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;flex:0 0 auto}
.career-tl{list-style:none;margin:0;padding:0 0 0 6px;position:relative}
.career-tl:before{content:"";position:absolute;left:20px;top:6px;bottom:6px;width:2px;background:#ece6ee}
.career-tl li{position:relative;display:flex;gap:14px;padding:10px 0}
.tl-dot{width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid #d9cfdc;color:#714B67;display:flex;align-items:center;justify-content:center;flex:0 0 auto;z-index:1;font-size:14px}
.tl-dot.t-promotion{border-color:#2f9e5b;color:#2f9e5b}.tl-dot.t-demotion,.tl-dot.t-warning{border-color:#d9534f;color:#d9534f}
.tl-dot.t-exit{border-color:#8a8490;color:#8a8490}.tl-dot.t-join,.tl-dot.t-rejoin{border-color:#714B67;background:#714B67;color:#fff}
.tl-dot.t-award{border-color:#e0a100;color:#e0a100}
.tl-body{flex:1 1 auto;min-width:0}
.tl-date{font-size:12px;color:#7a7480}
/* nominal dengan pemisah ribuan: cukup lebar untuk 12.150.000,50 */
.lines-table .money-input,table .money-input{min-width:118px}
.money-input{font-variant-numeric:tabular-nums}
/* foto utama / logo data induk */
.att-acts{position:absolute;top:4px;right:4px;display:flex;gap:4px}.att-acts .btn{padding:1px 6px;background:rgba(255,255,255,.92)}
.att-thumb{position:relative}.att-thumb .bi-file-earmark-word{color:#2b579a}.att-thumb .bi-file-earmark-excel{color:#217346}
.att-cover-badge{position:absolute;left:5px;bottom:5px;background:#714B67;color:#fff;font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px}
.att-item.is-cover{border-color:#b893ae;box-shadow:0 0 0 2px rgba(113,75,103,.12)}
.photo-box{width:120px;height:120px;border-radius:16px;background:#f3eef2;border:1px solid #ebe3ea;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#a58da0;font-size:44px;flex:0 0 auto}
.photo-box img{width:100%;height:100%;object-fit:contain;background:#fff}
.photo-box.round,.thumb.round{border-radius:50%}.photo-box.round img,.thumb.round img{object-fit:cover}
.thumb{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:#f3eef2;color:#a58da0;overflow:hidden;flex:0 0 auto;vertical-align:middle;font-size:16px}
.thumb img{width:100%;height:100%;object-fit:cover}
.emp-avatar img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.emp-avatar{overflow:hidden}
.brand-logo img{width:100%;height:100%;object-fit:contain;border-radius:inherit;background:#fff}
.filter-bar .period-filter .form-select{min-width:0;width:auto}
.filter-bar .period-filter select[name=y]{min-width:118px}.filter-bar .period-filter select[name=m]{min-width:130px}
.selfie{width:44px;height:58px;object-fit:cover;border-radius:6px;border:1px solid var(--bs-border-color,#ddd)}
