html.simponi-loading body #app{visibility:hidden}html.simponi-navigating body #app{visibility:visible}html.simponi-loading .sidebar,html.simponi-loading .topbar,html.simponi-loading .main-content{transition:none!important}
:root{--primary:#0f2747;--secondary:#087fc9;--light-blue:#eaf5fc;--bg:#f4f7fa;--white:#fff;--success:#22a06b;--warning:#f59e0b;--danger:#dc3545;--text:#263238;--muted:#6b7280;--border:#e5e9ef;--sidebar:258px;--topbar:70px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,sans-serif;font-size:13px}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--secondary);text-decoration:none}.sidebar{position:fixed;z-index:30;left:0;top:0;bottom:0;width:var(--sidebar);background:var(--primary);color:#fff;transition:none;display:flex;flex-direction:column;overflow:auto}.side-brand{height:82px;display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark{width:40px;height:40px;border-radius:8px;background:#fff;color:var(--primary);display:grid;place-items:center;font-size:18px;flex:none}.brand-mark.small{width:34px;height:34px}.side-brand strong{font-size:17px;letter-spacing:.5px}.side-brand small{display:block;color:#b8c7d8;font-size:8px;line-height:1.4;margin-top:2px}.sidebar nav{padding:12px 10px;flex:1}.nav-item{width:100%;border:0;background:transparent;color:#d9e4ef;padding:11px 12px;border-radius:6px;display:flex;align-items:center;justify-content:space-between;text-align:left;margin:2px 0;font-size:12px}.nav-item span{display:flex;align-items:center;gap:12px}.nav-item i{width:17px;text-align:center}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.1);color:#fff}.submenu{display:none;padding:2px 0 5px 42px}.nav-group.open .submenu{display:block}.submenu a{display:block;color:#b8c7d8;padding:8px 8px;border-left:1px solid rgba(255,255,255,.14);font-size:11px}.submenu a:hover,.submenu a.active{color:#fff;background:rgba(255,255,255,.06)}.chev{transition:.2s}.nav-group.open .chev{transform:rotate(180deg)}.side-bottom{padding:10px;border-top:1px solid rgba(255,255,255,.1)}.topbar{position:fixed;z-index:20;left:var(--sidebar);right:0;top:0;height:var(--topbar);background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 22px;gap:16px;transition:none}.icon-btn{border:0;background:transparent;color:#536273;width:35px;height:35px;border-radius:6px}.icon-btn:hover{background:var(--bg)}.breadcrumb{display:flex;align-items:center;gap:9px;color:#8993a1}.breadcrumb i{font-size:9px}.breadcrumb b{color:var(--text);font-weight:600}.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.top-actions label{display:flex;align-items:center;gap:6px;color:#7a8593;font-size:11px}.top-actions select{border:1px solid var(--border);padding:7px 26px 7px 8px;border-radius:5px;background:#fff;color:var(--text)}.notif{position:relative}.notif em{position:absolute;top:1px;right:1px;background:var(--danger);color:#fff;border-radius:20px;font-style:normal;font-size:8px;min-width:14px;height:14px;display:grid;place-items:center}.user-menu{position:relative}.user-menu>button{border:0;background:transparent;display:flex;align-items:center;gap:8px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:700;font-size:10px}.avatar.soft{background:var(--light-blue);color:var(--secondary)}.user-label{text-align:left;display:flex;flex-direction:column;line-height:1.3}.user-label small{color:var(--muted);font-size:9px}.user-menu>button>i{font-size:9px;color:#8993a1}.dropdown{display:none;position:absolute;right:0;top:43px;width:170px;background:#fff;border:1px solid var(--border);box-shadow:0 10px 28px rgba(15,39,71,.12);border-radius:7px;padding:5px}.dropdown.show{display:block}.dropdown a,.dropdown button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:9px;color:var(--text);font-size:11px}.dropdown a:hover,.dropdown button:hover{background:var(--bg)}.dropdown i{width:20px}.main-content{margin-left:var(--sidebar);padding-top:var(--topbar);min-height:100vh;transition:none}.page-container{padding:24px}.sidebar-collapsed .sidebar{width:72px}.sidebar-collapsed .side-brand div:last-child,.sidebar-collapsed .nav-text{display:none}
.sidebar-collapsed .side-brand{justify-content:center;padding:12px}
.sidebar-collapsed .nav-item{justify-content:center;padding-left:8px;padding-right:8px}
.sidebar-collapsed .nav-label{justify-content:center}
.sidebar-collapsed .nav-item .chev,.sidebar-collapsed .submenu{display:none}.sidebar-collapsed .topbar{left:72px}.sidebar-collapsed .main-content{margin-left:72px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.eyebrow{font-size:9px;color:var(--secondary);font-weight:700;letter-spacing:1.2px;margin-bottom:4px}.page-head h1{margin:0;font-size:22px;color:var(--primary)}.page-head p{margin:6px 0 0;color:var(--muted);font-size:11px}.btn{border:1px solid transparent;border-radius:6px;padding:9px 13px;font-weight:600;font-size:11px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn-primary{background:var(--secondary);color:#fff}.btn-primary:hover{background:#076fae}.btn-secondary{background:#fff;border-color:var(--border);color:#475569}.btn-danger{background:var(--danger);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-warning{background:var(--warning);color:#fff}.btn-block{width:100%;padding:11px}.filter-card,.panel{background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 8px rgba(15,39,71,.025)}.filter-card{padding:15px;display:grid;grid-template-columns:1fr 1fr 1.5fr 1fr 1fr auto;gap:10px;margin-bottom:16px}.filter-card label,.form-grid label{display:block;font-size:10px;color:#697586;font-weight:600;margin-bottom:5px}.filter-card input,.filter-card select,.form-control,.filter-card button{width:100%;height:35px;border:1px solid var(--border);border-radius:5px;background:#fff;padding:0 9px;color:var(--text)}.filter-card button{border:0;height:35px;margin-top:15px}.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}.kpi{background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px;display:flex;gap:12px;align-items:center;box-shadow:0 2px 8px rgba(15,39,71,.025)}.kpi-icon{width:40px;height:40px;border-radius:7px;display:grid;place-items:center;font-size:16px;flex:none}.kpi-icon.blue{background:#eaf5fc;color:#087fc9}.kpi-icon.cyan{background:#e8f8fb;color:#1595a8}.kpi-icon.green{background:#eaf8f1;color:#22a06b}.kpi-icon.orange{background:#fff5e5;color:#f59e0b}.kpi-icon.red{background:#fff0f1;color:#dc3545}.kpi span{display:block;color:#738092;font-size:9px}.kpi strong{display:block;color:var(--primary);font-size:15px;margin:3px 0}.kpi small{color:#8993a1;font-size:9px}.kpi small.up{color:var(--success)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.panel-head h3{margin:0;font-size:13px;color:var(--primary)}.panel-head span{font-size:9px;color:var(--muted)}.panel-head>a{font-size:10px}.legend{display:flex;gap:7px;align-items:center}.legend i{width:8px;height:8px;border-radius:50%;background:#087fc9}.legend i:nth-of-type(2){background:#22a06b}.two-col{display:grid;grid-template-columns:1.6fr 1fr;gap:14px;margin-top:14px}.panel{overflow:hidden}.panel .panel-head{padding:15px 16px 0}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:10px}th{background:#f8fafc;color:#64748b;font-weight:700;text-align:left;white-space:nowrap}th,td{padding:10px 12px;border-bottom:1px solid #edf0f4;vertical-align:middle}tbody tr:hover{background:#fbfdff}.badge{display:inline-flex;padding:4px 7px;border-radius:20px;font-size:8px;font-weight:700;white-space:nowrap}.draft{background:#eef0f3;color:#68717e}.diajukan{background:#eaf5fc;color:#087fc9}.menunggu-validasi{background:#fff5df;color:#b36d00}
.menunggu-persetujuan-tingkat-2{background:#f3e8ff;color:#7c3aed}.disetujui,.selesai{background:#eaf8f1;color:#168052}.ditolak{background:#fff0f1;color:#c52c3c}.melebihi-pagu{background:#c52c3c;color:#fff}.melebihi-rencana{background:#fff5df;color:#b36d00}.di-bawah-rencana{background:#eaf5fc;color:#087fc9}.sesuai-rencana{background:#eaf8f1;color:#168052}.belum-ada-aktivitas{background:#eef0f3;color:#68717e}
.chart-legend-list{display:flex;flex-direction:column;gap:5px;margin-top:10px;padding-top:10px;border-top:1px solid #edf0f4}
.chart-legend-item{display:flex;align-items:flex-start;gap:8px;font-size:10px;color:#42505f;line-height:1.5}
.chart-legend-item i{width:12px;height:12px;border-radius:3px;flex:none;display:inline-block;margin-top:2px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.chart-legend-item b{color:#1c2b3a;font-weight:700;margin-right:2px}
.deviation-legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:10px;color:#5b6675;margin-top:4px}
.deviation-legend span{display:inline-flex;align-items:center;gap:6px}
.deviation-legend i{width:9px;height:9px;border-radius:3px;display:inline-block}.approval-list{padding:0 16px 12px}.approval{display:flex;align-items:center;gap:9px;padding:11px 0;border-bottom:1px solid #edf0f4}.approval>div:nth-child(2){flex:1}.approval b{display:block;font-size:10px}.approval small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.modal-backdrop{position:fixed;inset:0;background:rgba(15,39,71,.48);z-index:100;display:grid;place-items:center;padding:20px}.modal{background:#fff;width:min(620px,100%);max-height:90vh;overflow:auto;border-radius:9px;box-shadow:0 20px 60px rgba(0,0,0,.2)}.modal-wide{width:min(900px,100%)}.modal-head{padding:14px 17px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0;font-size:14px;color:var(--primary)}.modal-head button{border:0;background:transparent;font-size:17px;color:#738092}.modal-body{padding:17px;min-width:0}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;min-width:0}.form-grid .full{grid-column:1/-1;min-width:0}.form-control{height:36px;width:100%;min-width:0;box-sizing:border-box}textarea.form-control{height:80px;padding:9px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.confirm-box{text-align:center;padding:10px}.confirm-icon{font-size:38px;color:var(--warning);margin-bottom:8px}.toast{position:fixed;right:22px;bottom:22px;z-index:200;background:#fff;border:1px solid var(--border);box-shadow:0 10px 30px rgba(15,39,71,.15);border-left:4px solid var(--success);padding:12px 15px;border-radius:6px;display:flex;gap:9px;align-items:center;font-size:11px}.toast i{color:var(--success)}.progress{height:7px;background:#edf1f5;border-radius:20px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--secondary);border-radius:20px}.login-page{background:var(--bg)}@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.filter-card{grid-template-columns:repeat(3,1fr)}.chart-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}}@media(max-width:760px){:root{--sidebar:0px}.sidebar{transform:translateX(-100%);width:258px}.sidebar-collapsed .sidebar{width:258px;transform:translateX(0)}.topbar{left:0;padding:0 12px}.main-content,.sidebar-collapsed .main-content{margin-left:0}.sidebar-collapsed .topbar{left:0}.breadcrumb{display:none}.top-actions label{display:none}.user-label{display:none}.page-container{padding:16px}.kpi-grid{grid-template-columns:1fr 1fr}.filter-card{grid-template-columns:1fr 1fr}.filter-card button{grid-column:span 2}.chart-grid{grid-template-columns:1fr}.chart-panel.large{grid-column:auto}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}}

.nav-label{display:flex;align-items:center;gap:12px;min-width:0}
.nav-label>.nav-text{display:block;white-space:nowrap}
.sidebar-collapsed .nav-label{gap:0}
.validation-types{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.validation-type{border:1px solid var(--border);background:#fff;border-radius:8px;padding:12px 13px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--primary);font-size:11px;font-weight:600;text-align:left;transition:.2s}
.validation-type span{display:flex;align-items:center;gap:9px}
.validation-type span i{color:var(--secondary)}
.validation-type b{min-width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#eef2f6;color:#64748b;font-size:10px}
.validation-type:hover,.validation-type.active{border-color:var(--secondary);background:var(--light-blue)}
.validation-type.has-pending b{background:#fff1d8;color:#a15d00}
.validation-total{display:inline-flex;align-items:center;gap:7px;background:#eef1f5;color:#4a5568;border:1px solid #dde2e8;border-radius:20px;padding:8px 12px;font-size:10px;font-weight:700}
.validation-total.is-pending{background:#1e8e3e;color:#fff;border-color:#1a7a35;box-shadow:0 1px 4px rgba(30,142,62,.35)}
.validation-panel{min-height:280px}
.empty-state{text-align:center;padding:55px 20px;color:var(--muted)}
.empty-state i{font-size:30px;color:#b4c0cc;margin-bottom:10px}
.empty-state p{margin:0;font-size:11px}
.validation-note{font-size:9px;color:var(--danger);line-height:1.35;max-width:180px}
.validation-note i{margin-right:5px}
.validation-note.approved{color:var(--success)}
.validation-note.l2-pending{color:#7c3aed}
.muted-note{color:#98a2ae;font-size:9px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.detail-grid>div{padding:12px 14px;border:1px solid var(--border);border-radius:6px;background:#fafbfd}
.detail-grid .full,.detail-rejection{grid-column:1/-1}
.detail-grid small{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}
.detail-grid b{font-size:15px;line-height:1.4}
.validator-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:3px 0;font-size:15px}
.validator-level{display:inline-block;min-width:78px;font-size:12px;font-weight:700;color:var(--muted)}
.validator-date{font-size:12px;color:var(--muted)}
.detail-rejection{border:1px solid #f3c6cc!important;background:#fff7f8!important}
.detail-rejection b{color:var(--danger)}
.detail-rejection p{margin:6px 0 0;font-size:10px;line-height:1.5}
.reject-intro{display:flex;gap:12px;padding:11px 12px;background:#fff7f8;border:1px solid #f3c6cc;border-radius:7px;margin-bottom:15px}
.reject-intro>i{font-size:22px;color:var(--danger);margin-top:2px}
.reject-intro b{font-size:12px;color:var(--primary)}
.reject-intro p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.5}
.reject-textarea{height:110px!important;padding:10px!important;resize:vertical}
.required{color:var(--danger)}
.reject-counter{display:flex;justify-content:space-between;color:#98a2ae;font-size:9px;margin-top:5px}
.reject-counter #rejectError{color:var(--danger)}
@media(max-width:900px){.validation-types{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){
 .validation-types{grid-template-columns:1fr}
 .detail-grid{grid-template-columns:1fr}
 .detail-grid .full,.detail-rejection{grid-column:auto}
 .sidebar-collapsed .side-brand div:last-child{display:block}
 .sidebar-collapsed .side-brand{justify-content:flex-start;padding:14px 18px}
 .sidebar-collapsed .nav-text{display:block}
 .sidebar-collapsed .nav-item{justify-content:space-between;padding-left:12px;padding-right:12px}
 .sidebar-collapsed .nav-label{justify-content:flex-start;gap:12px}
 .sidebar-collapsed .nav-item .chev{display:block}
}

/* === SIDEBAR FIX / ACTIVE MENU === */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:258px;overflow-y:auto;overflow-x:hidden}
.topbar{position:fixed;left:258px;right:0;top:0}
.main-content{margin-left:258px}
.sidebar-collapsed .sidebar{width:72px}
.sidebar-collapsed .topbar{left:72px}
.sidebar-collapsed .main-content{margin-left:72px}
.nav-group.open>.nav-item{background:rgba(255,255,255,.08);color:#fff}
.nav-group.open>.nav-item .chev{transform:rotate(180deg)}
.submenu a.active{color:#fff;background:rgba(255,255,255,.12);font-weight:600;border-left-color:#5ab7ee}
.submenu{max-height:none;overflow:visible}

@media(max-width:760px){
 :root{--sidebar:258px}
 .sidebar{width:258px;transform:translateX(-100%)}
 .sidebar-collapsed .sidebar{width:258px;transform:translateX(0)}
 .topbar,.sidebar-collapsed .topbar{left:0}
 .main-content,.sidebar-collapsed .main-content{margin-left:0}
 body:not(.sidebar-collapsed)::after{display:none}
 .sidebar-collapsed::after{content:"";position:fixed;inset:0;background:rgba(15,39,71,.28);z-index:25}
 .sidebar{z-index:30}
 .topbar{z-index:20}
}
.row-actions{display:flex;align-items:center;gap:5px;white-space:nowrap}.row-actions .btn{padding:6px 8px;font-size:10px}

/* === V6 SIDEBAR / NO FLICKER OVERRIDES === */
html.simponi-loading body{overflow:hidden}
.sidebar{transition:width .18s ease}
.topbar,.main-content{transition:margin-left .18s ease,left .18s ease}
.sidebar-collapsed .sidebar{width:72px}
.sidebar-collapsed .topbar{left:72px}
.sidebar-collapsed .main-content{margin-left:72px}
.sidebar-collapsed .side-brand{justify-content:center;padding:12px}
.sidebar-collapsed .side-brand > div:last-child{display:none}
.sidebar-collapsed .nav-text{display:none}
.sidebar-collapsed .nav-item{justify-content:center;padding-left:8px;padding-right:8px}
.sidebar-collapsed .nav-label{justify-content:center;gap:0}
.sidebar-collapsed .nav-item .chev{display:none}
.sidebar-collapsed .submenu{display:none!important}
.sidebar-collapsed .nav-group.open>.nav-item{background:rgba(255,255,255,.1)}
.sidebar-collapsed .nav-item i{margin:0}
.row-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}
.row-actions .btn{padding:7px 9px;font-size:10px;border:0;box-shadow:0 1px 2px rgba(15,39,71,.08)}
.btn-info{background:#0ea5e9;color:#fff}.btn-info:hover{background:#0284c7}
.budget-change{display:inline-flex;align-items:center;gap:4px;font-weight:700}
.budget-change.up,.budget-direction.up,.budget-preview.up{color:var(--success)}
.budget-change.down,.budget-direction.down,.budget-preview.down{color:var(--danger)}
.budget-direction{display:inline-flex;align-items:center;gap:5px;font-weight:700;white-space:nowrap}
.budget-preview{height:36px;border:1px solid var(--border);border-radius:5px;background:#fafbfd;padding:0 10px;display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700}
.budget-preview.neutral{color:#64748b}
.budget-form-grid small{font-weight:400;color:#98a2ae}
.budget-kpi{grid-template-columns:repeat(5,1fr)}
@media(max-width:1100px){.budget-kpi{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){
 html.simponi-loading body{overflow:hidden}
 .sidebar{width:258px;transform:translateX(-100%);transition:transform .18s ease}
 .sidebar-collapsed .sidebar{width:258px;transform:translateX(0)}
 .topbar,.sidebar-collapsed .topbar{left:0}
 .main-content,.sidebar-collapsed .main-content{margin-left:0}
 .sidebar-collapsed .side-brand{justify-content:flex-start;padding:14px 18px}
 .sidebar-collapsed .side-brand > div:last-child{display:block}
 .sidebar-collapsed .nav-text{display:block}
 .sidebar-collapsed .nav-item{justify-content:space-between;padding-left:12px;padding-right:12px}
 .sidebar-collapsed .nav-label{justify-content:flex-start;gap:12px}
 .sidebar-collapsed .nav-item .chev{display:block}
 .sidebar-collapsed .nav-group.open .submenu{display:block!important}
 body.sidebar-collapsed::after{content:"";position:fixed;inset:0;background:rgba(15,39,71,.28);z-index:25}
}


/* === V7 SIDEBAR BOOT / STABLE TOGGLE === */
html.simponi-precollapsed .sidebar{width:72px}
html.simponi-precollapsed .topbar{left:72px}
html.simponi-precollapsed .main-content{margin-left:72px}
html.simponi-precollapsed .side-brand{justify-content:center;padding:12px}
html.simponi-precollapsed .side-brand > div:last-child,html.simponi-precollapsed .nav-text{display:none}
html.simponi-precollapsed .nav-item{justify-content:center;padding-left:8px;padding-right:8px}
html.simponi-precollapsed .nav-label{justify-content:center;gap:0}
html.simponi-precollapsed .nav-item .chev,html.simponi-precollapsed .submenu{display:none!important}
html.simponi-premobile-open .sidebar{width:258px;transform:translateX(0)}
html.simponi-premobile-open .topbar{left:0}
html.simponi-premobile-open .main-content{margin-left:0}
html.simponi-precollapsed .sidebar,html.simponi-precollapsed .topbar,html.simponi-precollapsed .main-content,html.simponi-premobile-open .sidebar,html.simponi-premobile-open .topbar,html.simponi-premobile-open .main-content{transition:none!important}
.file-chip{display:inline-flex;align-items:center;gap:6px;max-width:260px;padding:5px 8px;border:1px solid var(--border);border-radius:5px;background:#f8fafc;color:#475569;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-chip i{color:var(--secondary)}
.nota-dinas-current{padding:8px 10px;border:1px dashed var(--border);border-radius:6px;background:#fafbfd}
.nota-dinas-current small{display:block;color:#7b8794;font-size:9px;margin-top:5px}
.btn-primary,.btn-success,.btn-warning,.btn-danger,.btn-info{border:0!important;box-shadow:0 1px 2px rgba(15,39,71,.08)}
.row-actions .btn{min-height:30px}
@media(max-width:760px){
 html.simponi-precollapsed .sidebar{width:258px;transform:translateX(-100%)}
 html.simponi-precollapsed .topbar,html.simponi-premobile-open .topbar{left:0}
 html.simponi-precollapsed .main-content,html.simponi-premobile-open .main-content{margin-left:0}
 html.simponi-premobile-open::after{content:"";position:fixed;inset:0;background:rgba(15,39,71,.28);z-index:25}
}

/* === V8: COMPACT, CONSISTENT TRANSACTION ACTIONS === */
.row-actions{display:flex;align-items:center;gap:4px;white-space:nowrap}
.row-actions .action-btn{width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;padding:0!important;border:0!important;border-radius:5px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;font-size:10px!important;line-height:1!important;box-shadow:none!important}
.row-actions .action-btn i{margin:0!important;width:auto!important}
.row-actions .action-view{background:#087fc9!important;color:#fff!important}
.row-actions .action-edit{background:#f59e0b!important;color:#fff!important}
.row-actions .action-delete{background:#dc3545!important;color:#fff!important}
.row-actions .action-submit{background:#22a06b!important;color:#fff!important}
.row-actions .action-btn:hover:not(:disabled){filter:brightness(.94);transform:translateY(-1px)}
.row-actions .action-btn.is-disabled,.row-actions .action-btn:disabled{opacity:.32!important;cursor:not-allowed!important;filter:grayscale(.8)!important;transform:none!important}
.file-stack{display:flex;flex-direction:column;gap:4px;max-width:220px}
.file-stack .file-chip{max-width:220px}
.file-help{display:block;color:#7b8794;font-size:9px;margin-top:5px}
.current-file{margin-top:6px}
.attachment-required{padding-top:2px}

/* === V8: SIDEBAR STABLE / NO VISUAL FLICKER === */
html,body{overflow-x:hidden}
.sidebar,.topbar,.main-content{transition:none!important}
.sidebar{will-change:auto}
.sidebar-collapsed .sidebar{width:72px!important}
.sidebar-collapsed .topbar{left:72px!important}
.sidebar-collapsed .main-content{margin-left:72px!important}
html.simponi-precollapsed .sidebar{width:72px!important}
html.simponi-precollapsed .topbar{left:72px!important}
html.simponi-precollapsed .main-content{margin-left:72px!important}
html.simponi-precollapsed .sidebar,.sidebar-collapsed .sidebar{overflow-x:hidden}
@media(max-width:760px){
 .sidebar,.sidebar-collapsed .sidebar{width:258px!important}
 .sidebar{transform:translateX(-100%)}
 .sidebar-collapsed .sidebar,html.simponi-premobile-open .sidebar{transform:translateX(0)}
 .topbar,.sidebar-collapsed .topbar,html.simponi-premobile-open .topbar{left:0!important}
 .main-content,.sidebar-collapsed .main-content,html.simponi-premobile-open .main-content{margin-left:0!important}
}

/* === V9: PDF VIEWER / NOTA DINAS === */
.pdf-view-mini{display:inline-flex!important;align-items:center!important;gap:4px!important;padding:4px 7px!important;min-height:24px!important;border:0!important;border-radius:5px!important;background:#087fc9!important;color:#fff!important;font-size:9px!important;line-height:1!important;white-space:nowrap!important}
.pdf-view-mini:hover{filter:brightness(.94)}
.pdf-detail-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:#f8fafc}
.pdf-viewer-wrap{display:flex;flex-direction:column;gap:10px;min-height:62vh}
.pdf-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:#f8fafc}
.pdf-viewer-head b{display:block;font-size:12px;color:var(--text)}
.pdf-viewer-head small{display:block;margin-top:2px;color:#7b8794;font-size:9px}
.pdf-viewer-frame{width:100%;height:62vh;border:1px solid var(--border);border-radius:6px;background:#fff}
@media(max-width:760px){.pdf-viewer-head{align-items:flex-start;flex-direction:column}.pdf-viewer-frame{height:58vh}}

/* === V10: VALIDATION SPLIT + VALIDATION HISTORY === */
.validation-split{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,1fr);gap:14px;align-items:start}
.validation-pending-panel,.validation-history-panel{min-width:0;min-height:360px}
.validation-history-filter{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:0 16px 12px;border-bottom:1px solid var(--border);align-items:end}
.validation-history-filter label{display:block;font-size:10px;color:#697586;font-weight:600;margin-bottom:5px}
.validation-history-filter .form-control{height:34px}
.validation-reset-btn{height:34px;padding:0 10px!important;white-space:nowrap}
.validation-history-panel .table-wrap{max-height:520px;overflow:auto}
.validation-history-panel table{min-width:650px}
.validation-history-panel th,.validation-history-panel td{padding:8px 9px}
.validation-history-panel .badge{font-size:8px}
.validation-history-panel .row-actions{justify-content:flex-start}
.validation-history-panel .empty-state{min-height:260px}
.validation-pending-panel .table-wrap{max-height:520px;overflow:auto}
.validation-pending-panel table{min-width:760px}
@media(max-width:1200px){
 .validation-split{grid-template-columns:1fr}
 .validation-history-panel{min-height:300px}
 .validation-history-panel .table-wrap{max-height:360px}
}
@media(max-width:760px){
 .validation-history-filter{grid-template-columns:1fr 1fr}
 .validation-reset-btn{grid-column:1/-1}
}

.source-check-row{display:flex;gap:10px;margin-top:8px}.source-check-row .permission-check{flex:1}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}.permission-check{display:flex;align-items:center;gap:9px;border:1px solid var(--border);border-radius:7px;padding:9px 11px;background:#fbfdff;font-size:10px;cursor:pointer}.permission-check input{width:15px;height:15px;accent-color:#087fc9}.permission-actions{display:flex;gap:7px;margin-top:9px}.permission-summary{display:inline-flex;padding:4px 7px;border-radius:12px;background:#eef6fb;color:#087fc9;font-weight:700;font-size:9px}.permission-chip-wrap{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.permission-chip{display:inline-flex;padding:5px 8px;border-radius:12px;background:#eef6fb;color:#087fc9;font-size:9px;font-weight:600}@media(max-width:760px){.permission-grid{grid-template-columns:1fr}}

.account-tree-name{display:flex;align-items:flex-start;gap:7px;min-width:220px}.account-tree-name>span:last-child{display:flex;flex-direction:column;gap:2px}.account-tree-name small{color:#4b5563;font-size:12px;font-weight:500}.account-tree-marker{color:#087fc9;font-size:11px;width:12px}.account-child-row{background:#fcfdff}.grand-total-note{display:block;color:#8a95a3;font-size:8px;margin-top:2px}.breakdown-list{border:1px solid var(--border);border-radius:6px;overflow:hidden}.breakdown-item{display:flex;justify-content:space-between;gap:10px;padding:9px 10px;border-bottom:1px solid #edf0f4;background:#fff;font-size:10px}.breakdown-item:last-child{border-bottom:0}.info-box{padding:10px 12px;background:#f5f9fc;border:1px solid #dcecf7;border-radius:6px;color:#617080;font-size:10px}.info-box i{color:#087fc9;margin-right:5px}

/* V15: account hierarchy, budget balance, compact numeric fields */
.account-tree-toggle{border:0;background:transparent;color:#087fc9;width:16px;height:18px;padding:0;display:inline-grid;place-items:center;cursor:pointer}.account-tree-toggle:hover{color:#075f97}.account-tree-marker{display:inline-grid;place-items:center;width:16px;color:#087fc9}.account-subtotal-row td{background:#f8fbfd;border-top:1px dashed #b9d8ea;border-bottom:1px solid #dcecf7;padding:9px 10px;color:#12385a}.account-subtotal-row td:first-child{padding-left:18px}.account-subtotal-row strong{font-size:10px;color:#0b4773}.account-subtotal-row small{display:block;margin-top:2px;color:#7a8796;font-size:8px;font-weight:400}.account-subtotal-row td:nth-child(4),.account-subtotal-row td:nth-child(5){text-align:right}.account-subtotal-row td:nth-child(4) strong,.account-subtotal-row td:nth-child(5) strong{font-size:11px}.account-grand-total{display:flex;justify-content:space-between;align-items:center;margin:0 16px 16px;padding:12px 14px;background:#f7fbfe;border:1px solid #dcecf7;border-radius:7px}.account-grand-total span{display:block;font-size:11px;font-weight:700;color:var(--primary)}.account-grand-total small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.account-grand-total strong{font-size:15px;color:var(--primary)}.budget-balance{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid #d9eaf5;background:#f7fbfe;border-radius:6px}.budget-balance>div{display:flex;flex-direction:column;gap:2px}.budget-balance small{font-size:9px;color:#718096;font-weight:600}.budget-balance strong{font-size:14px;color:#087fc9}.budget-balance>span{font-size:9px;color:#7a8796;text-align:right}.budget-balance.empty{justify-content:flex-start;color:#7a8796}.budget-balance.empty i{color:#087fc9}.numeric-input{text-align:right;font-variant-numeric:tabular-nums}.account-row.account-child-row td:first-child{border-left:0}.account-row td{transition:background .1s}.modal-backdrop{cursor:default}.modal{cursor:default}

.account-no,.account-no-head{width:34px;text-align:center;color:#6b7f89;font-weight:700;font-variant-numeric:tabular-nums}.account-no-head{font-size:9px}.account-subtotal-row td{background:#eaf5f3;border-top:2px solid #9edfd1;border-bottom:1px solid #c9e7e1;padding:10px}.account-subtotal-row td:nth-child(6){text-align:right}.account-subtotal-row strong{color:#0b4f6c;font-size:11px}.account-subtotal-row small{display:block;color:#68818b;font-size:8px;margin-top:2px}

/* --- Tambahan hasil migrasi PHP: flash message & util kecil --- */
.page-flash{display:flex;align-items:center;gap:10px;padding:14px 18px;border-radius:10px;font-weight:600;font-size:14px;position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:210;max-width:min(620px,92vw);box-shadow:0 12px 32px rgba(15,39,71,.18);animation:flashIn .25s ease}
.page-flash.flash-success{background:#e7f8f0;color:#0f7a4d;border:1px solid #b7ecd4}
.page-flash.flash-error{background:#fdeceb;color:#b23122;border:1px solid #f5c6c0}
@keyframes flashIn{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:640px){.page-flash{top:10px;font-size:12px;padding:11px 14px}}
.empty-cell{text-align:center;color:#8a97a3;padding:24px !important}
.row-hidden{display:none}
a.action-btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
a.action-btn.is-disabled{pointer-events:none;opacity:.4}
button.action-btn:disabled{opacity:.4;cursor:not-allowed}
.login-hint{text-align:center}
.context-controls{display:flex;align-items:center;gap:14px}
.context-field{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;white-space:nowrap}
.context-field select{width:auto!important;min-width:88px}
.brand-mark-logo{background:#fff;padding:4px;overflow:hidden}
.brand-mark-logo img{width:100%;height:100%;object-fit:contain}
.pdf-modal .modal-body{padding:14px}
.pdf-modal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;font-size:11px;color:#556}
.pdf-modal-frame-wrap{border:1px solid var(--border);border-radius:6px;overflow:hidden;background:#525659}
.pdf-modal-frame-wrap iframe{width:100%;height:70vh;border:0;display:block;background:#fff}
.current-logo-preview{display:flex;align-items:center;gap:12px;margin-top:8px}
.current-logo-preview img{width:56px;height:56px;object-fit:contain;border:1px solid var(--border);border-radius:6px;background:#fff;padding:4px}
@media(max-width:760px){.context-controls{display:none}}

/* =====================================================================
   V16 — Penyesuaian dengan rancangan frontend awal (screenshot)
   Form transaksi berbentuk MODAL, KPI Perubahan Anggaran, pohon Kode
   Rekening yang bisa expand/collapse, dan panel Restore Backup.
   ===================================================================== */

/* --- Modal form transaksi --------------------------------------------- */
.modal-form{width:min(920px,100%)}
.modal-form .modal-head h3{font-size:15px;font-weight:700}
.modal-form .modal-body{padding:18px 20px 20px}
.modal-form .form-grid{gap:14px 18px}
.modal-form label{display:block;font-size:11px;color:#5b6675;font-weight:500;margin-bottom:6px}
.modal-form .form-control{height:38px;border:1px solid #d8dfe7;border-radius:6px;font-size:12px;color:#1f2937}
.modal-form textarea.form-control{height:96px;padding:10px 11px;line-height:1.5}
.modal-form .form-control:focus{outline:0;border-color:var(--secondary);box-shadow:0 0 0 3px rgba(8,127,201,.12)}
.modal-form .form-control::placeholder{color:#9aa6b4}
.modal-form .modal-actions{margin-top:20px;padding-top:0}
.modal-form .modal-actions .btn{padding:10px 18px;font-size:12px;border-radius:6px}
.modal-form .half{grid-column:span 1}
.modal-form .field-note{display:block;margin-top:5px;color:#8b96a4;font-size:9px}
.field-note i{margin-right:4px}
.modal-form .required{color:var(--danger);font-weight:700}
.modal-open{overflow:hidden}
.modal-backdrop.is-static{cursor:default}

/* Kotak "Sisa Anggaran" di dalam form modal */
.modal-form .budget-balance{padding:12px 14px;border-radius:7px;background:#f5fafd;border-color:#dbebf5}
.modal-form .budget-balance small{font-size:10px;color:#64748b;font-weight:500}
.modal-form .budget-balance strong{font-size:17px;font-weight:700;color:#0b76bd;letter-spacing:.2px}
.modal-form .budget-balance>span{font-size:10px;color:#8b96a4;line-height:1.5}

/* v21 — kotak sisa Rencana Belanja pada form Surat Pesanan: sama seperti
   .budget-balance, tapi berubah merah begitu Total PO melebihi sisanya. */
.budget-balance.over-budget{background:#fdeceb;border-color:#f5c6c0;flex-wrap:wrap}
.budget-balance.over-budget strong{color:var(--danger)}
.budget-balance .rb-warning{flex-basis:100%;margin-top:6px;font-size:10px;font-weight:600;color:var(--danger);display:flex;align-items:center;gap:6px}
.text-danger{color:var(--danger)}

/* --- Filter card sederhana (pencarian + tombol filter) ---------------- */
.filter-card.filter-simple{grid-template-columns:minmax(0,1fr) auto;align-items:end}
.filter-card.filter-simple .btn{height:35px;margin-top:0}
.filter-card .filter-toggle-extra{display:none}
.filter-card.show-extra .filter-toggle-extra{display:block}
.filter-card.filter-simple.show-extra{grid-template-columns:minmax(0,1.4fr) 1fr 1fr auto}

/* --- KPI Perubahan Anggaran ------------------------------------------- */
.kpi-grid.kpi-perubahan{grid-template-columns:repeat(5,minmax(0,1fr))}
.kpi-grid.kpi-perubahan .kpi{padding:16px 18px;gap:14px;border-radius:9px}
.kpi-grid.kpi-perubahan .kpi-icon{width:44px;height:44px;border-radius:9px;font-size:17px}
.kpi-grid.kpi-perubahan .kpi span{font-size:10px;color:#77848f}
.kpi-grid.kpi-perubahan .kpi strong{font-size:19px;margin:5px 0 3px;font-weight:700}
.kpi-grid.kpi-perubahan .kpi small{font-size:9px;color:#95a0ab}
@media(max-width:1400px){.kpi-grid.kpi-perubahan{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.kpi-grid.kpi-perubahan{grid-template-columns:1fr 1fr}}

/* Arah perubahan pada tabel histori */
.arah-pill{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:10px;white-space:nowrap}
.arah-pill.up{color:#16a34a}
.arah-pill.down{color:#dc2626}
.arah-pill.flat{color:#8b96a4}
.change-cell{font-weight:700;white-space:nowrap}
.change-cell.up{color:#16a34a}
.change-cell.down{color:#dc2626}
.doc-pdf-btn{display:inline-flex!important;align-items:center;gap:6px;padding:6px 10px!important;min-height:26px!important;border:0!important;border-radius:5px!important;background:#087fc9!important;color:#fff!important;font-size:9px!important;font-weight:600!important;white-space:nowrap}
.doc-pdf-btn:hover{filter:brightness(.94)}

/* --- Kode Rekening: pohon expand / collapse --------------------------- */
/* Baris tabel ini bisa memuat 1-3 baris teks pada kolom "Kode Rekening /
   Kegiatan" (kode+nama, lalu opsional Group Uraian & Volume x Satuan),
   sedangkan kolom lain (Jenis Belanja, Sumber Pagu, dst) cuma satu baris —
   dulu seluruh sel memakai vertical-align:middle (aturan umum table di atas)
   sehingga teks multi-baris itu numpuk/tampak berantakan dibanding sel
   sebelahnya yang rata tengah. Tabel ini dikunci rata ATAS + padding vertikal
   lebih longgar supaya rapi berapa pun jumlah barisnya. */
table.tree-table th,table.tree-table td{vertical-align:top;padding-top:12px;padding-bottom:12px}
table.tree-table th.col-no{width:46px;text-align:left}
table.tree-table td.col-no{color:#6b7f89;font-weight:600;font-variant-numeric:tabular-nums}
.tree-cell{display:flex;align-items:flex-start;gap:8px;min-width:230px}
.tree-cell .tree-toggle{border:0;background:transparent;color:#0b76bd;width:18px;height:18px;padding:0;display:inline-grid;place-items:center;font-size:11px;flex:none;cursor:pointer;margin-top:1px}
.tree-cell .tree-toggle:hover{color:#075f97}
.tree-cell .tree-branch{display:inline-grid;place-items:center;width:18px;flex:none;color:#7fb4d6;font-size:11px;line-height:1;margin-top:2px}
.tree-cell .tree-label{display:flex;flex-direction:column;gap:4px;min-width:0;line-height:1.4}
.tree-cell .tree-label b{font-size:11px;color:#1e293b;font-weight:700;word-break:break-word}
.tree-cell .tree-label small{color:#4b5563;font-size:12px;font-weight:500;word-break:break-word}
.lra-child td:first-child{padding-left:26px;color:#556074}
tr.tree-child > td{background:#fdfefe}
tr.tree-child.is-hidden,tr.tree-subtotal.is-hidden{display:none}
tr.tree-subtotal > td{background:#eaf7f3;border-top:2px solid #9ddfd0;border-bottom:1px solid #c9e7e1;padding:11px 12px;vertical-align:middle}
tr.tree-subtotal .subtotal-label b{display:block;font-size:11px;color:#0b5c53;font-weight:700}
tr.tree-subtotal .subtotal-label small{display:block;margin-top:2px;color:#5f8a83;font-size:9px;font-weight:400}
tr.tree-subtotal .subtotal-value{font-size:12px;font-weight:700;color:#0b5c53;white-space:nowrap}
.account-grand-total{margin:14px 16px 16px;padding:14px 16px;border-radius:8px}
.account-grand-total strong{font-size:17px;font-weight:700}
.account-grand-total small{font-size:9px}
.badge.pagu-blud{background:#eaf5fc;color:#0b76bd}
.badge.pagu-apbd{background:#f1f0fb;color:#6d5fc7}

/* --- Backup & Restore -------------------------------------------------- */
.backup-actions{display:flex;gap:8px;flex-wrap:wrap}
.restore-panel{margin-bottom:16px}
.restore-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:16px}
.restore-box{border:1px solid var(--border);border-radius:8px;padding:14px 15px;background:#fbfdff}
.restore-box h4{margin:0 0 4px;font-size:12px;color:var(--primary)}
.restore-box p{margin:0 0 12px;font-size:10px;color:var(--muted);line-height:1.55}
.restore-box .form-control{margin-bottom:10px}
.restore-warning{display:flex;gap:11px;align-items:flex-start;margin:0 16px 16px;padding:12px 14px;border:1px solid #f6dfae;background:#fffaf0;border-radius:8px;color:#8a6100;font-size:10px;line-height:1.6}
.restore-warning i{font-size:15px;margin-top:1px}
.badge.restore{background:#f1f0fb;color:#6d5fc7}
.badge.backup{background:#eaf5fc;color:#0b76bd}
@media(max-width:900px){.restore-grid{grid-template-columns:1fr}}
[hidden]{display:none!important}

/* =====================================================================
   V17 — Pagination tabel, filter rentang tanggal, export/import,
   dan tombol cetak/PDF Surat Pesanan.
   ===================================================================== */

/* --- Pagination ------------------------------------------------------- */
.table-pagination{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--border);background:#fcfdfe}
.table-pagination .pg-left{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.table-pagination label{display:flex!important;align-items:center;gap:6px;margin:0;font-size:10px;color:#697586;font-weight:600}
.table-pagination select.pg-size{height:28px;padding:0 6px;border:1px solid var(--border);border-radius:5px;background:#fff;color:var(--text);font-size:10px}
.table-pagination .pg-info{font-size:10px;color:#8b96a4}
.table-pagination .pg-pages{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.pg-btn{min-width:28px;height:28px;padding:0 8px;border:1px solid var(--border);border-radius:5px;background:#fff;color:#475569;font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}
.pg-btn:hover:not(.is-disabled):not(.is-active){background:var(--light-blue);border-color:#bfdff3;color:#0b76bd}
.pg-btn.is-active{background:var(--secondary);border-color:var(--secondary);color:#fff}
.pg-btn.is-disabled{opacity:.4;pointer-events:none}
.pg-gap{padding:0 2px;color:#a8b2bd;font-size:10px}
.table-pagination.is-single .pg-pages{display:none}
@media(max-width:760px){.table-pagination{justify-content:center}.table-pagination .pg-left{justify-content:center}}

/* --- Filter rentang tanggal (Histori Validasi) ------------------------ */
.range-filter{display:grid;grid-template-columns:1fr 1fr auto;gap:9px;align-items:end;padding:0 16px 13px;border-bottom:1px solid var(--border);margin-bottom:2px}
.range-filter label{display:block;font-size:10px;color:#697586;font-weight:600;margin-bottom:5px}
.range-filter .form-control{height:34px;font-size:11px}
.range-filter .btn{height:34px;padding:0 12px;white-space:nowrap}
.range-empty{display:none;text-align:center;padding:42px 20px;color:var(--muted)}
.range-empty i{font-size:26px;color:#b4c0cc;margin-bottom:9px;display:block}
.range-empty p{margin:0;font-size:11px}
@media(max-width:760px){.range-filter{grid-template-columns:1fr 1fr}.range-filter .btn{grid-column:1/-1}}

/* --- Export / Import master data -------------------------------------- */
.head-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* v28 — permintaan user: seluruh isi toolbar (kolom filter/pencarian +
   tombol aksi seperti Reset/Export Excel/Tambah Data) digabung jadi SATU
   kartu putih bergaris tepi, bukan dua kotak terpisah dengan tombol
   "mengambang" sendiri di luar. Sekarang bingkai/latar/bayangan dipindah
   ke .list-toolbar itu sendiri, sedangkan .filter-card di dalamnya dibuat
   polos (tanpa bingkai/padding sendiri) supaya menyatu rapi dengan tombol
   di sebelahnya dalam satu kotak yang sama. */
.list-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:flex-end;margin-bottom:16px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 2px 8px rgba(15,39,71,.025);padding:15px}
.list-toolbar>.filter-card{flex:1 1 0%;min-width:0;margin-bottom:0;background:none;border:0;box-shadow:none;padding:0;border-radius:0}
.list-toolbar>.head-actions,.list-toolbar>.validation-total,.list-toolbar>.backup-actions{flex:none}
@media(max-width:760px){.list-toolbar{justify-content:flex-start}.list-toolbar>.head-actions{width:100%}.list-toolbar>.head-actions .btn{flex:1}}
.import-file-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:0}
.import-file-row .form-control{flex:1 1 200px;margin-bottom:0}
.import-file-row .head-actions{flex:none}
.import-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:16px}
.import-box{border:1px solid var(--border);border-radius:8px;padding:14px 15px;background:#fbfdff}
.import-box h4{margin:0 0 4px;font-size:12px;color:var(--primary)}
.import-box p{margin:0 0 12px;font-size:10px;color:var(--muted);line-height:1.6}
.import-box .form-control{margin-bottom:10px}
.import-note{margin:0 16px 16px;padding:12px 14px;border:1px solid #dcecf7;background:#f7fbfe;border-radius:8px;font-size:10px;color:#5a6b7a;line-height:1.7}
.import-note code{background:#eaf2f8;padding:1px 5px;border-radius:3px;color:#0b5c8a;font-size:9px}
.import-result{margin:0 16px 16px;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.import-result-head{padding:10px 13px;background:#f8fafc;border-bottom:1px solid var(--border);font-size:11px;font-weight:700;color:var(--primary)}
.import-result ul{margin:0;padding:10px 13px 12px 30px;font-size:10px;color:#5a6b7a;line-height:1.8}
.import-result li.err{color:#b23122}
@media(max-width:900px){.import-grid{grid-template-columns:1fr}}

/* --- Kolom kombinasi (dropdown bergaya seragam tapi tetap bisa diketik
   manual bila pilihan belum ada di daftar) — dipakai pada Nama Penyedia
   & Satuan (Surat Pesanan). Memakai <input list="..."> + <datalist> asli
   supaya tidak terpotong (clipped) di dalam modal yang bisa discroll,
   seperti yang terjadi pada dropdown kustom (.dd-panel) sebelumnya. ------ */
.combo-field{position:relative}
.combo-input{padding-right:28px!important}
.combo-field::after{content:"\f0d7";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#8b96a4;
  pointer-events:none;font-size:11px}
td>.combo-input,.item-table .combo-input{padding-right:22px!important}
.item-table td:has(> .combo-input){position:relative}
.item-table td:has(> .combo-input)::after{content:"\f0d7";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;right:16px;top:50%;transform:translateY(-50%);color:#8b96a4;
  pointer-events:none;font-size:10px}

/* --- Field tanggal: kursor pointer di seluruh area kolom (bukan hanya ikon
   kalender), dengan sedikit sentuhan gaya agar terlihat jelas bisa diklik. */
input[type="date"].form-control{cursor:pointer;color-scheme:light}
input[type="date"].form-control::-webkit-calendar-picker-indicator{cursor:pointer;padding:4px;border-radius:4px;opacity:.65}
input[type="date"].form-control::-webkit-calendar-picker-indicator:hover{opacity:1;background:var(--light-blue)}
input[type="date"].form-control:hover{border-color:#c3d6e6}
input[type="date"].form-control:focus{border-color:var(--secondary);box-shadow:0 0 0 3px rgba(8,127,201,.12);outline:0}

/* --- Rincian barang Surat Pesanan (grid item dinamis) ------------------ */
.item-table{width:100%;border-collapse:collapse;margin-top:4px}
.item-table th{background:#f8fafc;color:#64748b;font-size:9px;font-weight:700;text-align:left;padding:8px 8px;border-bottom:1px solid var(--border);white-space:nowrap}
.item-table td{padding:6px;border-bottom:1px solid #edf0f4;vertical-align:middle}
.item-table .form-control{height:32px;font-size:11px}
.item-table td.item-no{width:34px;text-align:center;color:#6b7f89;font-weight:600;font-size:10px}
.item-table td.item-act{width:36px;text-align:center}
.item-total-cell{font-size:11px;font-weight:700;color:#0b5c8a;white-space:nowrap;text-align:right;padding-right:8px!important}
.item-remove{width:26px;height:26px;border:0;border-radius:5px;background:#fdecea;color:#c5342c;display:inline-grid;place-items:center;font-size:10px}
.item-remove:hover{background:#f9d7d3}
.ppn-box{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,200px);gap:12px;margin-top:12px}
.ppn-box [hidden]{display:none}
.item-sum-rows{display:flex;flex-direction:column;gap:6px;min-width:220px}
.item-sum-rows>div[hidden]{display:none}
.item-foot-multi{align-items:flex-start}
.item-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;padding:11px 13px;background:#f5fafd;border:1px solid #dbebf5;border-radius:7px}
.item-foot .item-grand{font-size:15px;font-weight:700;color:#0b76bd}
.item-foot small{display:block;font-size:9px;color:#7a8796;margin-top:3px;font-weight:400}
.item-terbilang{font-size:10px;color:#5a6b7a;font-style:italic;max-width:52%;text-align:right;line-height:1.5}
.btn-add-item{margin-top:9px}

/* --- Tombol cetak / PDF ------------------------------------------------ */
.action-print{background:#6d5fc7!important;color:#fff!important}
.action-pdf{background:#c0392b!important;color:#fff!important}
.action-revise{background:#0ea5a4!important;color:#fff!important}

/* =====================================================================
   V18 — Pengaturan logo kop (kiri/kanan) & halaman sampul dokumen
   ===================================================================== */
.logo-kop-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.logo-kop-box{border:1px solid var(--border);border-radius:8px;padding:14px 15px;background:#fbfdff}
.logo-kop-box h4{margin:0 0 10px;font-size:12px;color:var(--primary);display:flex;align-items:center;gap:7px}
.logo-kop-box h4 i{color:var(--secondary);font-size:10px}
.logo-kop-preview{height:96px;display:grid;place-items:center;border:1px dashed #cfdae4;border-radius:7px;background:#fff;margin-bottom:12px;padding:8px}
.logo-kop-preview img{max-width:100%;max-height:80px;object-fit:contain}
.logo-kop-empty{display:flex;flex-direction:column;align-items:center;gap:6px;color:#a3aeba;font-size:10px}
.logo-kop-empty i{font-size:20px;color:#c3ccd6}
.logo-size-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.inline-check{display:flex!important;align-items:center;gap:8px;font-weight:400!important;margin:10px 0 0!important;font-size:11px!important;color:var(--text)!important;cursor:pointer}
.inline-check input{width:15px;height:15px;accent-color:#087fc9;margin:0}
.cover-image-row{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;align-items:start;margin-top:4px}
.cover-image-preview{height:150px;display:grid;place-items:center;border:1px dashed #cfdae4;border-radius:7px;background:#fff;padding:10px}
.cover-image-preview img{max-width:100%;max-height:130px;object-fit:contain}
@media(max-width:900px){.logo-kop-grid,.cover-image-row{grid-template-columns:1fr}}

/* Kop dokumen dengan dua logo */
.kop{display:flex;align-items:center;gap:12px;justify-content:space-between}
.kop-side{flex:none;display:grid;place-items:center}
.kop-side img{display:block;object-fit:contain}
.kop-text{flex:1;text-align:center;min-width:0}
.cover-image{text-align:center;margin:18px 0}
.cover-image img{object-fit:contain;max-width:100%}

/* =====================================================================
   V19 — Filter transaksi, footer copyright, tahun terkunci
   ===================================================================== */
.filter-card.filter-trx{grid-template-columns:minmax(0,1.6fr) repeat(4,minmax(0,1fr)) auto;align-items:end}
.filter-card.filter-pa{grid-template-columns:repeat(2,minmax(0,1fr)) minmax(0,1.6fr) minmax(0,1fr) auto;align-items:end}
.filter-card.filter-trx .btn,.filter-card.filter-pa .btn{height:35px;margin-top:0;white-space:nowrap}
@media(max-width:1200px){
  .filter-card.filter-trx,.filter-card.filter-pa{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filter-card.filter-trx .btn,.filter-card.filter-pa .btn{grid-column:1/-1}
}
@media(max-width:640px){.filter-card.filter-trx,.filter-card.filter-pa{grid-template-columns:1fr}}

/* Tahun anggaran terkunci di topbar */
.context-locked{display:inline-flex;align-items:center;gap:7px;height:31px;padding:0 11px;border:1px solid var(--border);
  border-radius:5px;background:#f4f7fa;color:var(--text);font-weight:600;font-size:11px;cursor:not-allowed}
.context-locked i{font-size:9px;color:#98a2ae}

/* Footer copyright */
.app-footer{margin:26px -24px -24px;padding:16px 24px;border-top:1px solid var(--border);background:#fff;
  color:#8b96a4;font-size:11px;text-align:center;letter-spacing:.2px}
.app-footer b{color:var(--primary)}
@media(max-width:760px){.app-footer{margin:20px -16px -16px;padding:14px 16px}}

/* --- Dashboard tunggal: judul bagian & kartu ringkasan transaksi ------- */
.section-title{display:flex;align-items:center;gap:9px;margin:24px 0 12px;font-size:13px;font-weight:700;color:var(--primary);letter-spacing:.2px}
.section-title:first-of-type{margin-top:4px}
.section-title i{width:24px;height:24px;border-radius:6px;background:var(--light-blue);color:var(--secondary);display:grid;place-items:center;font-size:11px}
.kpi-grid.kpi-status{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.kpi-grid.kpi-status{grid-template-columns:repeat(2,minmax(0,1fr))}}

.trx-card-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:4px}
.trx-card{display:block;padding:15px 16px;background:#fff;border:1px solid var(--border);border-radius:9px;
  box-shadow:0 2px 8px rgba(15,39,71,.025);text-decoration:none;color:inherit;cursor:default}
.trx-card-head{display:flex;align-items:center;gap:11px;margin-bottom:11px}
.trx-card-icon{width:36px;height:36px;flex:none;border-radius:8px;background:var(--light-blue);color:var(--secondary);display:grid;place-items:center;font-size:14px}
.trx-card-head b{display:block;font-size:12px;color:var(--primary)}
.trx-card-head small{display:block;font-size:9px;color:#8b96a4;margin-top:2px}
.trx-card-value{font-size:16px;font-weight:700;color:var(--primary);margin-bottom:10px}
.trx-card-split{display:flex;gap:14px;font-size:12px}
.trx-card-split .up{color:#16a34a}
.trx-card-split .down{color:#dc2626}
.trx-card-status{display:flex;flex-wrap:wrap;gap:5px}
.trx-card-status .badge{font-size:8px}
@media(max-width:1400px){.trx-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1100px){.trx-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.trx-card-grid{grid-template-columns:1fr}}
.section-title-toggle{cursor:pointer;user-select:none;justify-content:flex-start}
.section-title-toggle:focus-visible{outline:2px solid var(--secondary);outline-offset:3px;border-radius:4px}
.section-toggle-chev{margin-left:auto!important;background:transparent!important;color:#8b96a4!important;width:20px!important;height:20px!important;font-size:11px!important;transition:transform .25s ease}
.section-title-toggle.is-collapsed .section-toggle-chev{transform:rotate(-90deg)}
.collapsible{overflow:hidden;transition:max-height .32s ease}
.collapsible-inner{padding-top:2px}
.chart-unavailable{height:100%;min-height:180px;display:flex;align-items:center;justify-content:center;text-align:center;color:#9aa6b4;font-size:11px;gap:8px;padding:10px}
.chart-unavailable i{color:#e0a13b}
.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.chart-panel.large{grid-column:1/-1}
@media(max-width:900px){.chart-grid{grid-template-columns:1fr}.chart-panel.large{grid-column:auto}}

/* --- Ubah password ---------------------------------------------------- */
.password-field{position:relative}
.password-field .form-control{padding-right:38px}
.password-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:30px;height:30px;border:0;
  background:transparent;color:#8b96a4;border-radius:5px;display:grid;place-items:center;font-size:12px}
.password-toggle:hover{background:#f1f5f9;color:var(--secondary)}
.password-meter{height:5px;border-radius:20px;background:#eef1f5;margin-top:7px;overflow:hidden}
.password-meter span{display:block;height:100%;width:0;border-radius:20px;transition:.2s}
.password-meter span.lv1{width:33%;background:#dc3545}
.password-meter span.lv2{width:66%;background:#f59e0b}
.password-meter span.lv3{width:100%;background:#22a06b}
.field-note.note-ok{color:#16804f}
.field-note.note-err{color:#c5342c}

/* =====================================================================
   V19 — Dropdown khusus (selalu membuka ke bawah)
   Elemen <select> asli tetap ada namun disembunyikan; yang tampil adalah
   tombol pemicu + panel pilihan yang digambar tepat di bawahnya.
   ===================================================================== */
.dd{position:relative;width:100%}
.dd select.dd-native{position:absolute;opacity:0;pointer-events:none;width:100%;height:100%;left:0;top:0;z-index:-1}
.dd-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  text-align:left;background:#fff;border:1px solid var(--border);border-radius:5px;color:var(--text);
  font-size:12px;font-weight:400;padding:0 10px;cursor:pointer}
.dd-trigger:hover:not(:disabled){border-color:#c3d6e6}
.dd.is-open .dd-trigger{border-color:var(--secondary);box-shadow:0 0 0 3px rgba(8,127,201,.12)}
.dd-trigger:disabled,.dd.is-disabled .dd-trigger{background:#f4f7fa;color:#98a2ae;cursor:not-allowed}
.dd-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-label.is-placeholder{color:#9aa6b4}
.dd-caret{font-size:9px;color:#8b96a4;transition:transform .16s}
/* Dropdown berteks panjang (Kode Rekening, Uraian Kegiatan, dsb): teks pada
   pemicu & daftar dibungkus ke bawah supaya terbaca penuh, tinggi menyesuaikan. */
.dd.dd-wrap .dd-trigger,.modal-form .dd.dd-wrap .dd-trigger{height:auto;min-height:38px;padding-top:7px;padding-bottom:7px;align-items:flex-start}
.dd.dd-wrap .dd-label{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.4}
.dd.dd-wrap .dd-caret{margin-top:4px;flex-shrink:0}

.dd.is-open .dd-caret{transform:rotate(180deg);color:var(--secondary)}

/* Panel pilihan — SELALU di bawah pemicu (top:100%), tidak pernah membalik ke atas */
.dd-panel{position:absolute;top:calc(100% + 5px);left:0;right:0;z-index:60;display:flex;flex-direction:column;
  background:#fff;border:1px solid #dbe4ec;border-radius:8px;box-shadow:0 12px 32px rgba(15,39,71,.16);
  overflow:hidden;animation:ddIn .13s ease-out}
@keyframes ddIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
.dd-search{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--border);background:#fbfdff}
.dd-search i{font-size:10px;color:#98a2ae}
.dd-search input{flex:1;border:0;outline:0;background:transparent;font-size:11px;color:var(--text);padding:0}
.dd-list{overflow-y:auto;padding:5px}
.dd-item{padding:9px 11px;border-radius:6px;font-size:11.5px;color:var(--text);cursor:pointer;
  white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.4}
.dd-item:hover{background:var(--light-blue);color:#0b5c8a}
.dd-item.is-selected{background:var(--secondary);color:#fff;font-weight:600}
.dd-item.is-selected:hover{background:#0770b0;color:#fff}
.dd-item.is-disabled{opacity:.45;cursor:not-allowed}
.dd-empty{padding:16px 12px;text-align:center;color:#98a2ae;font-size:10px}
.dd-list::-webkit-scrollbar{width:8px}
.dd-list::-webkit-scrollbar-thumb{background:#cfdae4;border-radius:20px}
.dd-list::-webkit-scrollbar-thumb:hover{background:#b3c3d1}

/* Penyesuaian tinggi di beberapa konteks */
.filter-card .dd-trigger,.range-filter .dd-trigger{height:35px}
.modal-form .dd-trigger{height:38px}
.item-table .dd-trigger{height:32px;font-size:11px}
.table-pagination .dd{width:auto;min-width:64px}
.table-pagination .dd-trigger{height:28px;font-size:10px;padding:0 8px}
/* Dropdown pada topbar & halaman login */
.top-actions .dd{width:auto;min-width:96px}
.top-actions .dd-trigger{height:31px;font-size:11px;padding:0 9px}
.top-actions .dd-panel{min-width:130px;left:auto;right:0}
.login-card .dd{margin-bottom:14px}
.login-card .dd-trigger{height:42px;font-size:13px;padding:0 13px;border-radius:7px}

/* Perbaikan: aturan lama `.filter-card button{border:0}` ikut menghapus bingkai
   tombol pemicu dropdown dan tombol aksi di dalam kartu filter. */
.filter-card .dd-trigger{border:1px solid var(--border)!important;background:#fff!important;margin-top:0!important;border-radius:5px!important}
.filter-card .dd.is-open .dd-trigger{border-color:var(--secondary)!important}
.filter-card .dd-trigger:disabled{background:#f4f7fa!important}
.filter-card .btn{margin-top:0!important;border-radius:6px!important}
.filter-card .btn-secondary{border:1px solid var(--border)!important;background:#fff!important;color:#475569!important}
.filter-card .btn-secondary:hover{background:var(--light-blue)!important;border-color:#bfdff3!important;color:#0b5c8a!important}
.filter-card .btn-primary{border:0!important;background:var(--secondary)!important;color:#fff!important}
.table-pagination .dd-trigger{border:1px solid var(--border)!important;background:#fff!important}

/* ------------------------------------------------------------------
 * Notifikasi (lonceng topbar + dropdown + halaman "Lihat Semua")
 * ------------------------------------------------------------------ */
.notif-menu{position:relative}
.notif-dropdown{width:340px;padding:0;right:0;top:43px;max-height:420px;display:none;flex-direction:column;overflow:hidden}
.notif-dropdown.show{display:flex}
.notif-dropdown-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}
.notif-dropdown-head b{font-size:12px;color:var(--primary)}
.notif-dropdown button.notif-markall{width:auto;display:inline;border:0;background:transparent;color:var(--secondary);font-size:10px;font-weight:600;padding:0;cursor:pointer}
.notif-markall:hover{text-decoration:underline}
.notif-dropdown-list{overflow-y:auto;max-height:320px}
.notif-item-form{margin:0}
.notif-dropdown button.notif-item{width:100%;border:0;background:#fff;display:flex;gap:10px;align-items:flex-start;text-align:left;padding:11px 14px;border-bottom:1px solid #f1f5f9;cursor:pointer;color:var(--text);font-size:11px}
.notif-dropdown button.notif-item:hover{background:var(--bg)}
.notif-item.unread{background:#eaf5fc}
.notif-dropdown button.notif-item.unread:hover{background:#dcecf7}
.notif-item-icon{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:12px;color:#fff}
.notif-item-icon.nt-submit{background:#087fc9}
.notif-item-icon.nt-approved{background:#22a06b}
.notif-item-icon.nt-rejected{background:#dc3545}
.notif-item-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.notif-item-text b{font-size:10.5px;color:var(--text);font-weight:700}
.notif-item-text small{font-size:10px;color:#697586;white-space:normal;line-height:1.4}
.notif-item-text em{font-style:normal;font-size:9px;color:#9aa5b1;margin-top:1px}
.notif-empty{padding:30px 14px;text-align:center;color:#9aa5b1}
.notif-empty i{font-size:22px;margin-bottom:8px;display:block}
.notif-empty p{margin:0;font-size:11px}
.notif-dropdown a.notif-dropdown-foot{display:block;width:100%;text-align:center;padding:10px;font-size:10.5px;font-weight:600;color:var(--secondary);border-top:1px solid var(--border)}
.notif-dropdown-foot:hover{background:var(--bg)}

.notif-list-full{display:flex;flex-direction:column}
.notif-full-item{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid #f1f5f9}
.notif-full-item.unread{background:#eaf5fc}
.notif-full-icon{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:14px;color:#fff;background:#087fc9}
.notif-full-icon.notif-t-approved{background:#22a06b}
.notif-full-icon.notif-t-rejected{background:#dc3545}
.notif-full-body{flex:1;min-width:0}
.notif-full-body b{display:block;font-size:11.5px;color:var(--text)}
.notif-full-body p{margin:3px 0;font-size:11px;color:#556074}
.notif-full-body small{font-size:9.5px;color:#9aa5b1}
.notif-full-actions{flex:none;display:flex;gap:6px;align-items:center}
.notif-btn-sm{padding:6px 9px;font-size:9.5px}
.notif-empty-full{padding:50px 14px;text-align:center;color:#9aa5b1}
.notif-empty-full i{font-size:28px;margin-bottom:10px;display:block}

/* ------------------------------------------------------------------
   Alert box (dipakai halaman Kode Rekening & Pengingat/Deadline)
------------------------------------------------------------------ */
.alert{padding:10px 12px;border-radius:6px;font-size:10px;display:flex;gap:8px;align-items:flex-start;line-height:1.5}
.alert i{margin-top:1px}
.alert-info{background:#f5f9fc;border:1px solid #dcecf7;color:#617080}
.alert-info i{color:#087fc9}
.alert-warning{background:#fff8e8;border:1px solid #f5dfa8;color:#7a5b06}
.alert-warning i{color:#b36d00}
.alert-danger{background:#fff5f5;border:1px solid #f3c2c2;color:#8a1f1f}
.alert-danger i{color:#c52c3c}

/* ------------------------------------------------------------------
   Pengingat & Deadline — banner ringkasan di Dashboard
------------------------------------------------------------------ */
.reminder-banner{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;
  background:linear-gradient(90deg,#fff5f5,#fffaf0);border:1px solid #f3c2c2;border-radius:9px;
  padding:14px 18px;margin-bottom:18px}
.reminder-banner-text{display:flex;gap:12px;align-items:center;flex:1;min-width:220px}
.reminder-banner-icon{width:38px;height:38px;border-radius:9px;background:#fde8e8;color:#c52c3c;
  display:grid;place-items:center;font-size:16px;flex:none}
.reminder-banner-text b{display:block;font-size:12px;color:#7a1f1f}
.reminder-banner-text span{display:block;font-size:10px;color:#8a5a5a;margin-top:2px}
.reminder-banner-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ------------------------------------------------------------------
   Timeline — Riwayat Perubahan Kode Rekening (Master Data > Kode Rekening)
------------------------------------------------------------------ */
.timeline{padding:18px 22px 6px;position:relative}
.timeline-item{position:relative;display:flex;gap:14px;padding-bottom:22px}
.timeline-item:last-child{padding-bottom:2px}
.timeline-item:not(:last-child)::before{content:"";position:absolute;left:15px;top:32px;bottom:0;width:2px;background:#e6ebf1}
.timeline-marker{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;
  font-size:11px;color:#fff;z-index:1;box-shadow:0 0 0 4px #fff}
.tl-dot-approved{background:var(--success,#22a06b)}
.tl-dot-rejected{background:var(--danger,#dc3545)}
.tl-dot-pending{background:#f59e0b}
.timeline-content{flex:1;background:#fbfdff;border:1px solid #edf0f4;border-radius:8px;padding:11px 14px;min-width:0}
.timeline-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.timeline-head b{font-size:11px;color:var(--primary)}
.timeline-date{font-size:9px;color:#8993a1}
.timeline-amounts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:10px;color:#475569;margin-bottom:6px}
.timeline-amounts i{color:#b4c0cc;font-size:9px}
.timeline-reason{font-size:10px;color:#596575;margin-bottom:6px;font-style:italic}
.timeline-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:9px;color:#8993a1}
.timeline-meta i{margin-right:4px}
.timeline-meta a{color:#087fc9;text-decoration:none;font-weight:600}
.timeline-meta a:hover{text-decoration:underline}
.timeline-rejected{color:var(--danger,#dc3545)}
@media(max-width:760px){.timeline{padding:14px 8px 4px}.timeline-item:not(:last-child)::before{left:15px}}

/* ------------------------------------------------------------------
   V19 — Browse Master Kode Rekening Standar (Master Data > Kode Rekening)
------------------------------------------------------------------ */
.input-with-btn{display:flex;gap:8px;align-items:stretch}
.input-with-btn .form-control{flex:1;min-width:0}
.input-with-btn .btn{white-space:nowrap;flex:none}
.bas-browse-list{margin-top:12px;max-height:340px;overflow:auto;border:1px solid var(--border,#e6ebf1);border-radius:7px}
.bas-item{display:flex;align-items:center;gap:12px;padding:10px 12px;cursor:pointer;border-bottom:1px solid #f0f3f7}
.bas-item:last-child{border-bottom:0}
.bas-item:hover{background:#f5fafd}
.bas-item-code{flex:none;min-width:150px;font-weight:700;font-size:11px;color:#087fc9;font-variant-numeric:tabular-nums}
.bas-item-name{font-size:11px;color:#334155}
.bas-empty{padding:16px 14px;text-align:center;color:#8993a1;font-size:11px}
.bas-empty i{margin-right:6px}
.tree-group-label{color:#0b76bd!important}
.tree-group-label i{margin-right:3px}
.tree-rincian-note{font-variant-numeric:tabular-nums}

/* ------------------------------------------------------------------
   Tabel data panjang: hanya AREA TABEL yang di-scroll (bukan seluruh
   halaman) supaya sidebar/topbar & panel lain di bawahnya tetap
   terlihat tanpa harus scroll panjang. Header kolom dibuat sticky
   supaya tetap terlihat selama tabel di-scroll. */
.table-wrap{max-height:64vh;overflow-y:auto}
.table-wrap table thead th{position:sticky;top:0;z-index:1;background:#f8fafc}
@media(max-width:760px){.table-wrap{max-height:56vh}}

/* Badge "Proyeksi Pendapatan" pada daftar & detail Rencana Belanja —
   perbandingan acuan antara Proyeksi Pendapatan bulan tsb dengan TOTAL
   seluruh Rencana Belanja unit kerja pada bulan yang sama. */
.badge.proyeksi-aman{background:#eaf8f1;color:#168052}
.badge.proyeksi-lebih{background:#fff0f1;color:#c52c3c}
.badge.proyeksi-kosong{background:#eef0f3;color:#68717e}
.proyeksi-note{display:block;margin-top:3px;font-size:8px;font-weight:400;color:#7a8796;white-space:nowrap}

/* v24 — status pembayaran PO (Belum Bayar / Sebagian / Lunas / Terlambat) */
.badge.bayar-belum{background:#eef0f3;color:#68717e}
.badge.bayar-sebagian{background:#fff5df;color:#b36d00}
.badge.bayar-lunas{background:#eaf8f1;color:#168052}
.badge.bayar-lewat{background:#fff0f1;color:#c52c3c}
.terima-form label{display:block;margin-bottom:5px}

/* =====================================================================
   v25 — SIDEBAR AUTO-HIDE + PIN, HEADER TABEL NAVY, ROLLOVER BARIS
   Blok ini sengaja diletakkan PALING AKHIR dan menggantikan seluruh aturan
   sidebar lama (.sidebar-collapsed / simponi-precollapsed) yang sekarang
   tidak dipakai lagi. Status diatur lewat kelas pada <html>:
     .sb-pinned  sidebar tersemat (menempel, konten bergeser)
     .sb-open    sidebar terbuka sebagai lapisan (mode auto-hide)
     .sb-anim    animasi aktif (dipasang JS setelah render pertama)
   ===================================================================== */
:root{
  --sb-dur:.34s;
  --sb-ease:cubic-bezier(.22,.8,.3,1);
  --table-head:#13315c;      /* navy header tabel */
  --table-head-line:#0c2140;
  --row-hover:#e3effc;       /* warna rollover baris */
  --row-hover-accent:#087fc9;
}

/* ---------- Sidebar: keadaan dasar = tersembunyi di luar layar ---------- */
html body .sidebar{
  width:var(--sidebar)!important;
  transform:translateX(-100%)!important;
  visibility:hidden;
  z-index:40;
  box-shadow:none;
  overscroll-behavior:contain;
}
html.sb-open body .sidebar{
  transform:translateX(0)!important;
  visibility:visible;
}
/* Keadaan dasar (tidak tersemat / layar kecil): topbar & konten memakai lebar penuh */
html body .topbar{left:0!important}
html body .main-content{margin-left:0!important}
/* Mode lapisan: bayangan lembut supaya sidebar terlihat "melayang" di atas konten */
html.sb-open:not(.sb-pinned) body .sidebar{
  box-shadow:14px 0 42px rgba(8,20,40,.32),1px 0 0 rgba(255,255,255,.06);
}

/* Desktop tersemat: sidebar menempel, topbar & konten bergeser sebesar lebar sidebar */
@media (min-width:761px){
  html.sb-pinned body .sidebar{transform:translateX(0)!important;visibility:visible}
  html.sb-pinned body .topbar{left:var(--sidebar)!important}
  html.sb-pinned body .main-content{margin-left:var(--sidebar)!important}
  html.sb-pinned body .sidebar{box-shadow:none}
}
/* Di layar kecil status "tersemat" diabaikan: selalu laci (drawer) */
@media (max-width:760px){
  html body .sidebar{width:min(86vw,var(--sidebar))!important}
}

/* ---------- Animasi (hanya setelah render pertama) ---------- */
html.sb-anim body .sidebar{
  transition:transform var(--sb-dur) var(--sb-ease),
             box-shadow var(--sb-dur) var(--sb-ease),
             visibility 0s linear var(--sb-dur)!important;
}
html.sb-anim.sb-open body .sidebar{
  transition:transform var(--sb-dur) var(--sb-ease),
             box-shadow var(--sb-dur) var(--sb-ease),
             visibility 0s linear 0s!important;
}
@media (min-width:761px){
  html.sb-anim.sb-pinned body .sidebar{
    transition:transform var(--sb-dur) var(--sb-ease),
               box-shadow var(--sb-dur) var(--sb-ease),
               visibility 0s linear 0s!important;
  }
}
html.sb-anim body .topbar{transition:left var(--sb-dur) var(--sb-ease)!important}
html.sb-anim body .main-content{transition:margin-left var(--sb-dur) var(--sb-ease)!important}

/* Isi menu muncul halus setelah sidebar meluncur masuk */
html.sb-anim .sidebar .side-brand,
html.sb-anim .sidebar nav,
html.sb-anim .sidebar .side-bottom{opacity:0;transition:opacity .2s ease}
html.sb-anim.sb-open .sidebar .side-brand,
html.sb-anim.sb-open .sidebar nav,
html.sb-anim.sb-open .sidebar .side-bottom{opacity:1;transition-delay:.08s}
@media (min-width:761px){
  html.sb-anim.sb-pinned .sidebar .side-brand,
  html.sb-anim.sb-pinned .sidebar nav,
  html.sb-anim.sb-pinned .sidebar .side-bottom{opacity:1;transition-delay:.08s}
}

/* ---------- Tombol pin pada brand sidebar ---------- */
.side-brand{position:relative}
.side-brand .brand-text{min-width:0;flex:1}
.pin-btn{
  flex:none;margin-left:auto;width:30px;height:30px;border-radius:7px;
  border:1px solid rgba(255,255,255,.16);background:rgba(8,127,201,.38);color:#fff;
  display:grid;place-items:center;font-size:12px;padding:0;
  transition:background .2s ease,color .2s ease,border-color .2s ease,transform .2s ease;
}
.pin-btn i{transition:transform .32s var(--sb-ease)}
.pin-btn:hover{background:rgba(8,127,201,.75);transform:translateY(-1px)}
.pin-btn:focus-visible{outline:2px solid #5ab7ee;outline-offset:2px}
/* Tidak tersemat: tombol meredup & pin miring (menandakan "dilepas") */
html:not(.sb-pinned) .pin-btn{background:rgba(255,255,255,.06);color:#9fb3c8;border-color:rgba(255,255,255,.1)}
html:not(.sb-pinned) .pin-btn i{transform:rotate(45deg)}
html:not(.sb-pinned) .pin-btn:hover{background:rgba(255,255,255,.16);color:#fff}
@media (max-width:760px){.pin-btn{display:none}}

/* ---------- Zona tepi kiri (hover untuk memunculkan sidebar) ---------- */
.sb-edge{position:fixed;left:0;top:var(--topbar);bottom:0;width:12px;z-index:35;display:none}
.sb-edge::after{
  content:"";position:absolute;left:0;top:50%;width:4px;height:72px;transform:translateY(-50%);
  border-radius:0 6px 6px 0;background:var(--secondary);opacity:.45;
  transition:opacity .2s ease,width .2s ease;
}
.sb-edge:hover::after{opacity:.95;width:6px}
@media (hover:hover) and (min-width:761px){
  html:not(.sb-pinned):not(.sb-open) .sb-edge{display:block}
}

/* ---------- Latar gelap (khusus laci di layar kecil) ---------- */
.sb-backdrop{
  position:fixed;inset:0;z-index:39;background:rgba(15,39,71,.5);
  opacity:0;pointer-events:none;transition:opacity var(--sb-dur) var(--sb-ease);
}
@media (max-width:760px){
  html.sb-open .sb-backdrop{opacity:1;pointer-events:auto}
}
@media (min-width:761px){.sb-backdrop{display:none}}

/* ---------- Submenu & chevron lebih halus ---------- */
.nav-item .chev{transition:transform .28s var(--sb-ease)}
/* Animasi "meluncur turun" HANYA dipicu lewat JS (kelas .submenu-anim, lihat
   toggleSubmenu() di app.js) saat submenu sungguh-sungguh baru dibuka oleh
   klik pengguna. Sebelumnya animasi ini menempel pada kelas statis
   ".nav-group.open .submenu" — karena aplikasi ini berpindah halaman dengan
   reload penuh (bukan SPA), setiap halaman baru pada grup menu yang sama
   memuat ulang submenu dalam keadaan "open" sehingga animasi ikut terputar
   ULANG setiap kali item submenu diklik, terlihat seperti bergetar/melompat
   padahal grupnya sudah terbuka sejak sebelumnya.*/
.nav-group .submenu.submenu-anim{animation:sbSubmenuIn .26s var(--sb-ease)}
@keyframes sbSubmenuIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}

/* Hormati preferensi "kurangi gerakan" */
@media (prefers-reduced-motion:reduce){
  html.sb-anim body .sidebar,html.sb-anim body .topbar,html.sb-anim body .main-content,
  html.sb-anim .sidebar .side-brand,html.sb-anim .sidebar nav,html.sb-anim .sidebar .side-bottom{transition-duration:.01s!important;transition-delay:0s!important}
  .nav-group .submenu.submenu-anim{animation:none}
}

/* =====================================================================
   TABEL: header navy (teks putih) + rollover baris
   ===================================================================== */
table thead th,
.table-wrap table thead th,
.item-table thead th,
.item-table th,
table.tree-table thead th{
  background:var(--table-head)!important;
  color:#fff!important;
  font-weight:700;
  letter-spacing:.2px;
  border-bottom:1px solid var(--table-head-line)!important;
  text-shadow:none;
}
/* header lengket saat tabel di-scroll tetap solid (tidak tembus pandang) */
.table-wrap table thead th{position:sticky;top:0;z-index:2}

/* Rollover: seluruh baris berwarna biru muda + aksen tipis di sisi kiri */
tbody tr>td,tbody tr>th{transition:background-color .14s ease,box-shadow .14s ease}
tbody tr:hover>td,tbody tr:hover>th{background:var(--row-hover)!important}
tbody tr:hover>td:first-child,tbody tr:hover>th:first-child{box-shadow:inset 3px 0 0 var(--row-hover-accent)}
tbody tr.empty-row-placeholder:hover>td{background:transparent!important;box-shadow:none}

/* Kolom "No." bernomor bulat (dipakai Audit Log; renumber otomatis oleh tables.js) */
th.col-no,td.row-no{width:54px;text-align:center}
td.row-no span{
  display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 5px;border-radius:999px;
  background:var(--secondary);color:#fff;font-size:10px;font-weight:700;line-height:1;
}

/* =====================================================================
   MENU AKSI BARIS — satu tombol "Aksi" yang membuka daftar pilihan
   (dipakai tabel Kode Rekening; JS: toggleRowMenu() di app.js)
   ===================================================================== */
table.tree-table th:last-child,
table.tree-table td.col-aksi{text-align:center;width:64px}
.row-menu{display:inline-block;position:relative}
.row-menu-btn{
  width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:6px;background:#fff;color:#475569;font-size:13px;line-height:1;
  transition:background-color .12s ease,border-color .12s ease,color .12s ease;
}
.row-menu-btn:hover,.row-menu.is-open .row-menu-btn{background:var(--light-blue);border-color:#b9dcf2;color:var(--secondary)}
.row-menu-btn:focus-visible{outline:2px solid var(--secondary);outline-offset:1px}
.row-menu-panel{
  position:fixed;z-index:90;min-width:176px;padding:5px;
  background:#fff;border:1px solid var(--border);border-radius:8px;
  box-shadow:0 12px 28px rgba(15,39,71,.16);text-align:left;
}
.row-menu-panel[hidden]{display:none}
.row-menu-item{
  display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;margin:0;
  border:0;border-radius:5px;background:transparent;color:var(--text);
  font-size:11px;font-weight:600;text-align:left;text-decoration:none;cursor:pointer;white-space:nowrap;
}
.row-menu-item i{width:14px;text-align:center;font-size:11px}
.row-menu-item:hover,.row-menu-item:focus-visible{background:var(--bg);outline:0}
.row-menu-item.mi-view i{color:#087fc9}
.row-menu-item.mi-edit i{color:#f59e0b}
.row-menu-item.mi-add i{color:#22a06b}
.row-menu-item.mi-delete,.row-menu-item.mi-delete i{color:#dc3545}
.row-menu-item.mi-delete:hover{background:#fff0f1}
.row-menu-sep{height:1px;margin:4px 6px;background:#edf0f4}
.row-menu-form{margin:0;display:block}


/* v26 — Notifikasi sebagai pop-up: tidak hilang sendiri, ditutup dengan tombol "Mengerti". */
.flash-modal{position:fixed;inset:0;z-index:2000;background:rgba(15,39,71,.45);display:flex;align-items:center;justify-content:center;padding:18px;animation:flashFade .18s ease}
.flash-dialog{background:#fff;border-radius:16px;width:min(440px,100%);padding:26px 26px 22px;text-align:center;box-shadow:0 24px 60px rgba(15,39,71,.28);border-top:5px solid #2f6fe0;animation:flashPop .2s ease}
.flash-dialog.flash-error{border-top-color:#e0455a}
.flash-dialog.flash-success{border-top-color:#22a05b}
.flash-icon{width:54px;height:54px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;font-size:26px;background:#e4efff;color:#2f6fe0}
.flash-error .flash-icon{background:#ffe8ec;color:#e0455a}
.flash-success .flash-icon{background:#e2f6da;color:#22a05b}
.flash-dialog h3{margin:0 0 8px;font-size:17px;color:#0f2747}
.flash-dialog p{margin:0 0 18px;font-size:13.5px;line-height:1.55;color:#374151;word-break:break-word}
.flash-dialog .btn{min-width:120px;justify-content:center}
.form-restored-note{margin:0 0 12px;padding:8px 12px;border-radius:8px;background:#fff0d8;border:1px solid #fae5c3;color:#8a5a12;font-size:12px}
@keyframes flashFade{from{opacity:0}to{opacity:1}}
@keyframes flashPop{from{transform:translateY(8px) scale(.97);opacity:0}to{transform:none;opacity:1}}

/* v27 — menu aksi baris: item tambahan (Surat Pesanan: cetak, PDF, revisi, ajukan) + kolom Aksi */
th.col-aksi{text-align:center;width:64px}
.row-menu-item.mi-print i{color:#7c5cd6}
.row-menu-item.mi-pdf i{color:#c0392b}
.row-menu-item.mi-revise i{color:#0e9aa7}
.row-menu-item.mi-submit i{color:#22a06b}

/* v28 — Desain ulang pop-up notifikasi: kartu lembut tanpa garis atas, ikon bercincin, tombol berwarna tanpa outline hitam. */
.flash-modal{background:rgba(15,39,71,.38);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.flash-dialog{--fc:#2f6fe0;--fc2:#5b95f0;--fs:#e8f0fe;
  position:relative;overflow:hidden;width:min(400px,100%);padding:34px 28px 26px;border:0;border-radius:22px;
  background:radial-gradient(120% 90px at 50% 0,var(--fs) 0,#fff 100%) no-repeat,#fff;
  box-shadow:0 30px 70px rgba(15,39,71,.30),0 2px 0 rgba(255,255,255,.8) inset;
  animation:flashPop .28s cubic-bezier(.2,.9,.3,1.2)}
.flash-dialog.flash-success{--fc:#1fa463;--fc2:#43c488;--fs:#e6f7ee;border-top:0}
.flash-dialog.flash-error{--fc:#e0455a;--fc2:#f06f82;--fs:#ffeaee;border-top:0}
.flash-icon{position:relative;width:68px;height:68px;margin:0 auto 16px;font-size:30px;color:#fff;
  background:linear-gradient(145deg,var(--fc2),var(--fc));box-shadow:0 10px 22px -6px var(--fc)}
.flash-error .flash-icon,.flash-success .flash-icon{background:linear-gradient(145deg,var(--fc2),var(--fc));color:#fff}
.flash-icon::before,.flash-icon::after{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--fc);opacity:.18}
.flash-icon::after{inset:-17px;opacity:.09}
.flash-dialog h3{font-size:19px;font-weight:800;letter-spacing:-.01em;margin-bottom:6px}
.flash-dialog p{font-size:13px;color:#5b6677;margin-bottom:22px}
.flash-btn{display:block;width:100%;padding:11px 18px;border:0;border-radius:12px;cursor:pointer;
  font:inherit;font-size:13px;font-weight:700;color:#fff;letter-spacing:.01em;
  background:linear-gradient(135deg,var(--fc2),var(--fc));box-shadow:0 8px 18px -8px var(--fc);
  outline:0;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}
.flash-btn:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 12px 22px -8px var(--fc)}
.flash-btn:active{transform:translateY(0)}
.flash-btn:focus,.flash-btn:focus-visible{outline:0;box-shadow:0 0 0 4px rgba(255,255,255,.9),0 0 0 7px var(--fs),0 8px 18px -8px var(--fc)}
@media (prefers-reduced-motion:reduce){.flash-dialog,.flash-modal{animation:none}}

/* v28b — pop-up notifikasi diperkecil */
.flash-dialog{width:min(320px,100%);padding:22px 20px 18px;border-radius:18px}
.flash-icon{width:50px;height:50px;margin:0 auto 12px;font-size:22px;box-shadow:0 8px 16px -6px var(--fc)}
.flash-icon::before{inset:-6px}
.flash-icon::after{inset:-12px}
.flash-dialog h3{font-size:16px;margin-bottom:4px}
.flash-dialog p{font-size:12px;line-height:1.5;margin-bottom:16px}
.flash-btn{padding:9px 16px;border-radius:10px;font-size:12px}

/* v29 — Tombol toolbar (Reset, Export Excel, dll) = biru solid seperti "Tambah Data", di SEMUA menu;
   tombol Aksi baris (⋮) = oranye solid. */
.filter-card .btn-secondary,.page-head .btn-secondary{border:0!important;background:var(--secondary)!important;color:#fff!important;box-shadow:0 1px 2px rgba(15,39,71,.08)}
.filter-card .btn-secondary:hover,.page-head .btn-secondary:hover{background:#066fb2!important;color:#fff!important}
.filter-card .btn-secondary i,.page-head .btn-secondary i{color:#fff}
.row-menu-btn{border:0;background:#f59e0b;color:#fff;box-shadow:0 1px 2px rgba(15,39,71,.12)}
.row-menu-btn:hover,.row-menu.is-open .row-menu-btn{background:#d98708;border:0;color:#fff}
.row-menu-btn:focus-visible{outline:2px solid #fcd38a;outline-offset:2px}

/* v30 — Sub menu sidebar = ukuran huruf sama dengan menu utama (12px) */
.sidebar .submenu{padding:2px 0 5px 30px}
.sidebar .submenu a{font-size:12px;padding:9px 12px;line-height:1.35}

/* v30 — Dropdown filter PPTK dilebarkan agar nama lengkap terbaca
   (panel melebar ke kiri dari tepi kanan kolom filter) */
.filter-card .filter-wide-dd .dd-panel{left:auto;right:0;width:max-content;min-width:100%;max-width:min(380px,90vw)}
.filter-card .filter-wide-dd .dd-item{white-space:normal;line-height:1.35;font-size:12px}

/* Tambah Breakdown massal (Kode Rekening) */
.kr-batch{margin-top:18px;border:1px solid #e3e8ef;border-radius:8px;padding:14px 14px 12px;background:#fafbfd}
.kr-batch-title{display:flex;flex-direction:column;gap:2px;margin-bottom:10px;font-size:13px}
.kr-batch-title small{color:#6b7787;font-size:11px}
.kr-batch-head,.kr-batch-row{display:grid;grid-template-columns:minmax(180px,2.4fr) .8fr 1fr 1.2fr 1.3fr 38px;gap:8px;align-items:center}
.kr-batch-head{font-size:11px;color:#5b6675;font-weight:500;margin-bottom:6px;padding:0 2px}
.kr-batch-head .required{color:#dc2626;font-style:normal}
.kr-batch-row{margin-bottom:8px}
#krBatchRows{max-height:300px;overflow-y:auto;padding-right:2px}
.kr-batch-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 8px}
.kr-batch-total{text-align:right;display:flex;flex-direction:column}
.kr-batch-total small{color:#6b7787;font-size:11px}
.kr-batch-total strong{font-size:15px;color:#0f2a4a}
.kr-b-del:disabled{opacity:.35;cursor:not-allowed}
@media (max-width:760px){.kr-batch-head{display:none}.kr-batch-row{grid-template-columns:1fr 1fr;padding-bottom:8px;border-bottom:1px dashed #d8dfe7}.kr-batch-row>input:first-child{grid-column:1/-1}}

/* Warna selang-seling baris tabel — sengaja SAMAR supaya tidak menutupi isi tabel.
   Diberi class .zebra-alt oleh tables.js (hanya pada baris yang sedang tampil).
   Ubah nilai --zebra untuk menebalkan / menipiskan. Hover tetap menang (lihat --row-hover). */
:root{--zebra:#f7f9fc}
tbody tr.zebra-alt>td,tbody tr.zebra-alt>th{background-color:var(--zebra)}

/* ---- Modal Detail pada halaman Validasi / Persetujuan Akhir ---- */
.val-detail-backdrop{z-index:90}
.val-detail-modal .detail-grid{gap:10px}
.val-detail-modal .detail-grid>div{padding:9px 12px}
.val-detail-modal .detail-grid small{font-size:10px}
.val-detail-modal .detail-grid b{font-size:12px}
.val-detail-items{margin-top:12px}
.val-detail-actions{margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}
.val-detail-buttons{display:flex;justify-content:flex-end;gap:10px}
.val-detail-buttons form{display:contents}
.val-detail-buttons .btn{padding:10px 20px;font-size:12px}
.val-reject-box label{display:block;font-size:11px;color:#5b6675;font-weight:600;margin-bottom:6px}
.val-reject-box textarea.form-control{height:90px;padding:10px 11px}
.val-reject-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.val-detail-btn{padding:7px 12px}

/* Tombol "Detail" (Validasi & Persetujuan) = oranye, sama dengan tombol Aksi baris (⋮) */
.btn.val-detail-btn,.btn-secondary.val-detail-btn{border:0!important;background:#f59e0b!important;color:#fff!important;box-shadow:0 1px 2px rgba(15,39,71,.12)}
.btn.val-detail-btn:hover{background:#d98708!important;color:#fff!important}
.val-detail-btn i{color:#fff}


/* =====================================================================
   Detail dalam POP-UP (assets/js/detail-modal.js)
   Berlaku untuk semua "Lihat Detail": Transaksi, Perubahan Anggaran,
   Manajemen User, Kode Rekening. Memakai gaya modal yang sudah ada.
   ===================================================================== */
.detail-popup-backdrop{z-index:90}
.detail-popup{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}
.detail-popup .modal-head{flex:0 0 auto;align-items:flex-start;gap:12px}
.detail-popup-title{display:flex;flex-direction:column;gap:2px;min-width:0}
.detail-popup-title h3{margin:0}
.detail-popup-title span{font-size:11px;color:var(--muted);word-break:break-all}
.detail-popup-title span:empty{display:none}
.detail-popup-x{border:0;background:transparent;color:#667085;width:30px;height:30px;border-radius:6px;cursor:pointer;font-size:15px;flex:0 0 auto}
.detail-popup-x:hover{background:#eef2f6;color:#1f2937}
.detail-popup .modal-body{flex:1 1 auto;overflow:auto;padding:16px 20px 18px}
.detail-popup-foot{flex:0 0 auto;display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border);background:#fafbfd}
.detail-popup-foot .btn{padding:9px 18px;font-size:12px}
.detail-popup-loading{padding:36px 0;text-align:center;color:var(--muted);font-size:13px}
.detail-popup-loading i{margin-right:6px}
/* isi halaman detail dipakai ulang apa adanya: rapikan agar pas di dalam modal */
.detail-popup .panel{border:0;box-shadow:none;background:transparent;margin:0 0 14px;padding:0}
.detail-popup .panel-head{padding-left:0!important;padding-right:0!important}
.detail-popup .detail-grid{gap:10px;padding:0 0 12px!important}
.detail-popup .detail-grid>div{padding:9px 12px}
.detail-popup .detail-grid small{font-size:10px}
.detail-popup .detail-grid b{font-size:12px}
.detail-popup .table-wrap[style],.detail-popup form[style]{padding-left:0!important;padding-right:0!important}
.detail-popup .info-box[style]{margin-left:0!important;margin-right:0!important}
.detail-popup .account-grand-total{margin-left:0;margin-right:0}
.detail-popup-toolbar{margin:0 0 12px;padding:0;display:flex;justify-content:flex-end;background:transparent;border:0;box-shadow:none}
.detail-popup-toolbar .head-actions{display:flex;gap:8px}
.detail-popup .validator-box .validator-row{padding:0;font-size:12px}
@media(max-width:760px){.detail-popup .detail-grid{grid-template-columns:1fr}}
