/* ======================================================================
   AIS css_utama.css - ZKoss 5.x Bootstrap-like UI Core
   Target: ZK 5.x Breeze, kompatibel dengan Java/ZUL/JSP lama.

   Catatan:
   - File ini menjadi pusat seluruh styling utama aplikasi.
   - File theme pilihan tenant/sekolah/PT hanya berisi token warna.
   - Urutan load: zk.wcs -> css_utama.css -> theme pilihan.
   - MyThemeProvider menambahkan timemilis agar cache browser tidak menahan CSS lama.
   ====================================================================== */
:root {
  --ais-theme-primary:#007131;
  --ais-theme-primary-rgb:0,113,49;
  --ais-theme-primary-dark:#005c28;
  --ais-theme-accent:#e27d21;
  --ais-theme-accent-rgb:226,125,33;
  --ais-theme-accent-dark:#b95f12;
  --ais-theme-primary-bg:linear-gradient(92deg,#006b32 0%,#0f8a4b 42%,#e27d21 100%);
  --ais-theme-contrast:#fff;
  --theme-primary:#007131;
  --theme-primary-dark:#005c28;
  --theme-light:rgba(var(--ais-theme-primary-rgb),.10);
  --theme-hover:#e27d21;
  --theme-gradient:linear-gradient(92deg,#006b32 0%,#0f8a4b 42%,#e27d21 100%);
  --theme-scrollbar-thumb:#007131;
  --theme-text-on-primary:#fff;
  --theme-text-shadow:0 1px 4px rgba(0,0,0,.28);
  --ais-bg:#f5f7fb;
  --ais-bg-soft:#f8fafc;
  --ais-surface:#fff;
  --ais-surface-2:#fbfdff;
  --ais-border:#dce6ef;
  --ais-border-soft:#edf2f7;
  --ais-text:#1f2937;
  --ais-text-muted:#64748b;
  --ais-link:#006b32;
  --ais-danger:#dc2626;
  --ais-warning:#e27d21;
  --ais-success:#16a34a;
  --ais-info:#2563eb;
  --ais-radius-sm:6px;
  --ais-radius:10px;
  --ais-radius-lg:16px;
  --ais-shadow-xs:0 1px 2px rgba(15,23,42,.06);
  --ais-shadow:0 8px 24px rgba(15,23,42,.10);
  --ais-shadow-lg:0 18px 45px rgba(15,23,42,.18);
  --ais-focus:rgba(var(--ais-theme-accent-rgb),.24);
  --ais-font:Poppins,Arial,Helvetica,sans-serif;
}
html,body{width:100%!important;min-height:100%!important;margin:0!important;background:var(--ais-bg)!important;color:var(--ais-text)!important;font-family:var(--ais-font)!important;overflow-x:hidden!important;}
body.breeze{background:radial-gradient(circle at top left,rgba(var(--ais-theme-accent-rgb),.10),transparent 28%),radial-gradient(circle at top right,rgba(var(--ais-theme-primary-rgb),.10),transparent 26%),var(--ais-bg)!important;}
*,*:before,*:after{box-sizing:border-box;}
.z-label,.z-a,.z-radio-cnt,.z-checkbox-cnt,.z-toolbarbutton-cnt,div.z-column-cnt,div.z-row-cnt,div.z-listcell-cnt,div.z-listheader-cnt,div.z-treecell-cnt,div.z-treecol-cnt,.z-window-embedded-header,.z-window-modal-header,.z-window-highlighted-header,.z-window-overlapped-header,.z-window-popup-header,.z-panel-header,.z-fieldset legend,.z-loading,input,textarea,select,button{font-family:var(--ais-font)!important;}
.z-label,.z-radio-cnt,.z-checkbox-cnt,.z-a,div.z-row-cnt,div.z-listcell-cnt,div.z-treecell-cnt{font-size:12px!important;line-height:1.45!important;}
.z-a,a.z-a,.z-a:visited{color:var(--ais-link)!important;text-decoration:none!important;}
.z-a:hover,a.z-a:hover,a.z-a span.z-label:hover{color:var(--ais-theme-accent)!important;text-decoration:none!important;}
::-webkit-scrollbar{width:8px;height:8px;}::-webkit-scrollbar-track{background:#eef2f7;border-radius:999px;}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--ais-theme-primary),var(--ais-theme-accent));border-radius:999px;border:1px solid rgba(255,255,255,.7);}::-webkit-scrollbar-thumb:hover{background:var(--ais-theme-accent-dark);}

/* =========================== SHELL UTAMA =========================== */
.main-responsive-root,.zk55-responsive-shell,.main-responsive-root .z-window-embedded-cnt,.main-responsive-root .z-window-embedded-cnt-noborder,.main-responsive-main-grid,.main-responsive-main-grid>.z-grid-body,.main-responsive-frame,.main-responsive-center,.main-responsive-tabbox,.main-responsive-tabpanels,.main-responsive-home-panel{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;}
.main-responsive-root,.zk55-responsive-shell{background:var(--ais-bg)!important;}
.main-responsive-main-grid,.main-responsive-main-grid>.z-grid-body,.main-responsive-main-grid .z-row-inner,.main-responsive-main-grid .z-cell,.main-responsive-main-grid tr.z-row,.main-responsive-main-grid tr.z-grid-odd,.main-responsive-main-grid tr.z-grid-odd td.z-row-inner{background:transparent!important;border:0!important;padding:0!important;}
/* Menimpa inline height sangat besar, misalnya 3000px, agar area kerja mengikuti layar. */
.main-responsive-frame{height:calc(100vh - 112px)!important;min-height:520px!important;max-height:none!important;overflow:hidden!important;background:var(--ais-bg)!important;}
.main-responsive-center,.main-responsive-center .z-center-body,.main-responsive-tabbox,.main-responsive-tabpanels,.main-responsive-home-panel{height:100%!important;overflow:hidden!important;background:var(--ais-bg)!important;}
.main-responsive-home-panel{overflow:auto!important;padding:10px!important;}

/* =========================== HEADER / NAVBAR ======================== */

.gridHeader,
.headerHbox,
.rowHeader,
.ais-theme-header,
.navigasi {
    background: var(--ais-theme-primary-bg) !important;
    color: var(--ais-theme-contrast) !important;
}

.headerHbox .z-label,
.headerHbox .z-a,
.headerHbox .z-toolbarbutton-cnt,
.gridHeader .z-label,
.gridHeader .z-a,
.gridHeader .z-toolbarbutton-cnt,
.rowHeader .z-label,
.rowHeader .z-a,
.rowHeader .z-toolbarbutton-cnt,
.ais-theme-header .z-label,
.ais-theme-header .z-a,
.ais-theme-header .z-toolbarbutton-cnt,
.user_button_profile,
.users_online_button,
.menu_item {
    color: var(--ais-theme-contrast) !important;
}

.main-responsive-header,.main-responsive-header-grid{background:var(--ais-theme-primary-bg)!important;color:var(--ais-theme-contrast)!important;}
.main-responsive-header{position:relative!important;min-height:86px!important;box-shadow:0 10px 28px rgba(15,23,42,.16)!important;border-bottom:1px solid rgba(255,255,255,.18)!important;overflow:visible!important;z-index:20!important;}
.main-responsive-header:before{content:"";position:absolute;left:0;top:0;right:0;bottom:0;background:linear-gradient(135deg,rgba(255,255,255,.16),transparent 36%,rgba(255,255,255,.08));pointer-events:none;}
.main-responsive-header-grid,.main-responsive-header-grid .z-grid-body,.main-responsive-header-grid .z-row-inner,.main-responsive-header-grid .z-cell,.main-responsive-header .z-row-cnt{position:relative!important;z-index:2!important;background:transparent!important;border:0!important;overflow:visible!important;}
.main-responsive-header img,.headerHbox img,.gridHeader img{max-height:48px!important;object-fit:contain!important;}
.title1,.main-responsive-header .title1,.gridHeader .title1{display:block!important;color:#fff!important;font-size:18px!important;font-weight:800!important;line-height:1.2!important;letter-spacing:.1px!important;text-shadow:var(--theme-text-shadow)!important;white-space:normal!important;}
.motto,.main-responsive-header .motto,.gridHeader .motto,.alamat{display:block!important;color:rgba(255,255,255,.86)!important;font-size:11.5px!important;font-weight:500!important;line-height:1.25!important;text-shadow:0 1px 3px rgba(0,0,0,.24)!important;white-space:normal!important;}
.main-responsive-header .z-label,.main-responsive-header .z-a,.main-responsive-header .z-toolbarbutton-cnt,.fa-big{color:var(--ais-theme-contrast)!important;}
.user_button_profile,.main-responsive-header-actions .z-a,.main-responsive-header-actions .z-toolbarbutton,.main-responsive-header-actions .z-toolbarbutton-cnt{display:inline-block!important;padding:5px 8px!important;border-radius:999px!important;color:#fff!important;text-shadow:none!important;transition:background .15s ease,transform .15s ease!important;}
.user_button_profile:hover,.main-responsive-header-actions .z-a:hover,.main-responsive-header-actions .z-toolbarbutton:hover{background:rgba(255,255,255,.16)!important;color:#fff!important;transform:translateY(-1px);}
.users_online_button,.main-responsive-online-button,.main-responsive-online-button .z-toolbarbutton-cnt{display:inline-block!important;margin-top:3px!important;padding:4px 10px!important;border-radius:999px!important;background:rgba(255,255,255,.16)!important;border:1px solid rgba(255,255,255,.24)!important;color:#fff!important;font-size:10px!important;font-weight:600!important;line-height:1.3!important;text-shadow:none!important;}

/* Shortcut modul di bawah header dibuat horizontal-scroll agar tidak melayang. */
/* Baris tombol modul: transparan agar mengikuti background header tema */
.main-responsive-module-row,.headerHbox.main-responsive-module-row{min-height:38px!important;background:transparent!important;border-top:1px solid rgba(255,255,255,.14)!important;}
.main-responsive-module-row .z-row-cnt,.main-responsive-module-row .z-row-inner,.main-responsive-module-row .z-cell{background:transparent!important;border:0!important;}
.main-responsive-module-row .z-toolbarbutton,.main-responsive-module-row .z-toolbarbutton-body,.main-responsive-module-row .z-toolbarbutton-cnt{display:inline-block!important;vertical-align:middle!important;}
.main-responsive-module-row .z-toolbarbutton{margin:4px 3px!important;border-radius:999px!important;background:rgba(255,255,255,.11)!important;border:1px solid rgba(255,255,255,.16)!important;transition:background .16s ease,transform .16s ease,box-shadow .16s ease!important;}
.main-responsive-module-row .z-toolbarbutton-cnt{padding:6px 10px!important;color:#fff!important;font-size:11px!important;font-weight:600!important;line-height:1.2!important;}
.main-responsive-module-row .z-toolbarbutton:hover,.main-responsive-module-row .z-toolbarbutton-over{background:rgba(255,255,255,.22)!important;box-shadow:0 6px 18px rgba(0,0,0,.14)!important;transform:translateY(-1px);}
.main-responsive-module-row img{max-width:16px!important;max-height:16px!important;margin-right:3px!important;vertical-align:-3px!important;}

/* =========================== SIDEBAR ================================ */
.navigasi,.main-responsive-sidebar,.z-west.main-responsive-sidebar,.main-responsive-sidebar .z-west-body{background:var(--ais-theme-primary-bg)!important;color:var(--ais-theme-contrast)!important;}
.main-responsive-sidebar,.z-west.main-responsive-sidebar{height:calc(100vh - 112px)!important;max-height:calc(100vh - 112px)!important;min-height:520px!important;overflow-y:auto!important;overflow-x:hidden!important;border-right:1px solid rgba(255,255,255,.10)!important;box-shadow:inset -1px 0 0 rgba(255,255,255,.08),8px 0 24px rgba(15,23,42,.10)!important;}
.main-responsive-sidebar .z-west-header,.navigasi .z-west-header,.z-west-header,.z-center-header,.z-east-header,.z-north-header,.z-south-header{background:rgba(255,255,255,.12)!important;border:0!important;border-bottom:1px solid rgba(255,255,255,.13)!important;color:#fff!important;font-size:12px!important;font-weight:700!important;line-height:20px!important;padding:7px 10px!important;text-shadow:none!important;}
.main-responsive-sidebar .z-grid,.main-responsive-sidebar .z-grid-body,.main-responsive-sidebar tr.z-row,.main-responsive-sidebar td.z-row-inner,.main-responsive-sidebar .z-cell,.main-responsive-sidebar .z-row-cnt,.navigasi .z-grid,.navigasi .z-grid-body,.navigasi tr.z-row,.navigasi td.z-row-inner,.navigasi .z-cell,.navigasi .z-row-cnt{background:transparent!important;border:0!important;color:#fff!important;}
.main-responsive-sidebar .z-a,.main-responsive-sidebar .z-label,.navigasi .z-a,.navigasi .z-label,.cari_menu{color:var(--ais-theme-contrast)!important;text-shadow:none!important;}
.main-responsive-sidebar tr.z-row:hover,.main-responsive-sidebar tr.z-row-over,.navigasi tr.z-row:hover,.navigasi tr.z-row-over{background:rgba(255,255,255,.12)!important;}

/* =========================== GRID / TABLE =========================== */
.z-grid,.z-listbox,.z-dottree,div.z-tree{background:var(--ais-surface)!important;border:1px solid var(--ais-border)!important;border-radius:var(--ais-radius)!important;box-shadow:var(--ais-shadow-xs)!important;overflow:hidden!important;}
.main-responsive-main-grid,.main-responsive-header-grid,.main-responsive-sidebar .z-grid,.navigasi .z-grid{border:0!important;border-radius:0!important;box-shadow:none!important;}
div.z-grid-body,div.z-listbox-body,div.z-dottree-body,div.z-tree-body{background:transparent!important;border:0!important;overflow:hidden !important;overflow-y:auto !important;width:100%!important;}
div.z-grid-header,div.z-listbox-header,div.z-dottree-header,div.z-tree-header{background:#f8fafc!important;border-bottom:1px solid var(--ais-border)!important;}
div.z-grid-header tr.z-columns,div.z-grid-header tr.z-auxhead,div.z-listbox-header tr.z-listhead,div.z-dottree-header tr.z-treecols,div.z-tree-header tr.z-treecols{background:#f8fafc!important;background-image:none!important;}
th.z-column,th.z-listheader,th.z-treecol{background:linear-gradient(180deg,#fff 0%,#f8fafc 100%)!important;border-right:1px solid var(--ais-border-soft)!important;border-bottom:1px solid var(--ais-border)!important;padding:0!important;}
div.z-column-cnt,div.z-listheader-cnt,div.z-treecol-cnt{color:#334155!important;font-size:11px!important;font-weight:700!important;letter-spacing:.01em!important;padding:8px 9px!important;text-transform:none!important;}
tr.z-row td.z-row-inner,tr.z-row .z-cell,tr.z-listitem td.z-listcell,tr.z-treerow td.z-treecell{background:#fff!important;border:0!important;border-bottom:1px solid var(--ais-border-soft)!important;padding:0!important;}
tr.z-grid-odd td.z-row-inner,tr.z-grid-odd .z-cell,tr.z-listitem-odd td.z-listcell{background:#fbfdff!important;}
tr.z-row-over>td.z-row-inner,tr.z-row-over>.z-cell,tr.z-listitem-over>td.z-listcell,tr.z-treerow-over>td.z-treecell{background:var(--theme-light)!important;color:#111827!important;}
tr.z-row-seld>td.z-row-inner,tr.z-listitem-seld>td.z-listcell,tr.z-treerow-seld>td.z-treecell{background:rgba(var(--ais-theme-primary-rgb),.10)!important;}
div.z-row-cnt,div.z-listcell-cnt,div.z-treecell-cnt{color:#334155!important;padding:7px 9px!important;}
tr.z-group,td.z-group-inner{background:var(--ais-theme-primary-bg)!important;border:0!important;color:#fff!important;}
.z-group-inner .z-group-cnt,.z-group-inner .z-group-cnt .z-label{color:#fff!important;font-size:11px!important;font-weight:700!important;padding:5px 8px!important;text-shadow:none!important;}
.z-grid-empty-body td,.z-listbox-empty-body td{padding:18px!important;color:var(--ais-text-muted)!important;text-align:center!important;background:#fff!important;}

/* =========================== TABS =================================== */
.z-tabbox,.z-tabbox-ver{background:transparent!important;border:0!important;}
.z-tabs-scroll,.z-tabs,.z-tabs-ver-scroll,.z-tabs-ver{background:transparent!important;border:0!important;}
.z-tabs .z-tabs-cnt,.z-tabs-ver .z-tabs-ver-cnt{background:transparent!important;border:0!important;margin:0!important;padding:4px 4px 0 4px!important;}
.z-tabs-cnt li,.z-tab,.z-tab-seld,.z-tab-ver,.z-tab-ver-seld{border:0!important;background:transparent!important;margin-right:3px!important;}
.z-tab-hl,.z-tab-hr,.z-tab-hm,.z-tab-ver-hl,.z-tab-ver-hr,.z-tab-ver-hm{background:#fff!important;background-image:none!important;border:1px solid var(--ais-border)!important;border-bottom:0!important;border-radius:10px 10px 0 0!important;padding:0!important;}
.z-tab .z-tab-text,.z-tab-seld .z-tab-text{font-size:12px!important;padding:8px 13px!important;color:#475569!important;font-weight:600!important;}
.z-tab-seld .z-tab-hl,.z-tab-seld .z-tab-hr,.z-tab-seld .z-tab-hm,.z-tab-ver-seld .z-tab-ver-hl,.z-tab-ver-seld .z-tab-ver-hr,.z-tab-ver-seld .z-tab-ver-hm{background:#fff!important;border-color:rgba(var(--ais-theme-primary-rgb),.35)!important;box-shadow:0 -2px 10px rgba(15,23,42,.07)!important;}
.z-tab-seld .z-tab-text,.z-tab-ver-seld .z-tab-ver-text{color:var(--ais-theme-primary)!important;font-weight:800!important;}
.z-tabpanel,.z-tabbox-ver .z-tabpanels-ver{background:var(--ais-surface)!important;border:1px solid var(--ais-border)!important;border-radius:0 0 var(--ais-radius) var(--ais-radius)!important;padding:8px!important;overflow:hidden!important;}
.main-responsive-tabbox .z-tabpanel,.main-responsive-tabbox .z-tabpanels,.main-responsive-tabbox .z-tabpanels-cnt{height:100%!important;}

/* =========================== FORM & BUTTON ========================== */
.z-textbox,.z-decimalbox,.z-intbox,.z-longbox,.z-doublebox,.z-combobox-inp,.z-bandbox-inp,.z-datebox-inp,.z-timebox-inp,.z-spinner-inp,.z-doublespinner-inp,textarea.z-textbox,input[type=text],input[type=password],input[type=search],select{background:#fff!important;border:1px solid #cbd5e1!important;border-radius:6px!important;color:#111827!important;font-size:12px!important;min-height:24px!important;padding:4px 7px!important;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)!important;}
.z-textbox:focus,.z-decimalbox:focus,.z-intbox:focus,.z-longbox:focus,.z-doublebox:focus,.z-combobox-inp:focus,.z-bandbox-inp:focus,.z-datebox-inp:focus,.z-timebox-inp:focus,textarea.z-textbox:focus,input:focus,textarea:focus{outline:none!important;border-color:var(--ais-theme-accent)!important;box-shadow:0 0 0 3px var(--ais-focus)!important;}
input[type=text]:disabled,.z-textbox[disabled],.z-combobox-inp[disabled]{background:#f1f5f9!important;color:#64748b!important;border-color:#dbe3ec!important;}
.z-combobox-btn,.z-bandbox-btn,.z-datebox-btn,.z-timebox-btn,.z-spinner-btn,.z-doublespinner-btn,.z-combobox-rounded-btn,.z-bandbox-rounded-btn,.z-datebox-rounded-btn,.z-timebox-rounded-btn,.z-spinner-rounded-btn,.z-doublespinner-rounded-btn{background:#f8fafc!important;border:1px solid #cbd5e1!important;border-left:0!important;border-radius:0 6px 6px 0!important;height:24px!important;width:22px!important;}
.z-button,input.button,button,.btn,.btn-primary{background:var(--ais-theme-primary-bg)!important;border:1px solid var(--ais-theme-primary-dark)!important;border-radius:6px!important;color:#fff!important;cursor:pointer!important;font-weight:700!important;font-size:12px!important;line-height:1.25!important;padding:6px 12px!important;text-shadow:none!important;box-shadow:var(--ais-shadow-xs)!important;}
.z-button:hover,input.button:hover,button:hover,.btn:hover,.btn-primary:hover{background:linear-gradient(92deg,var(--ais-theme-primary-dark),var(--ais-theme-accent-dark))!important;color:#fff!important;box-shadow:0 8px 18px rgba(15,23,42,.16)!important;transform:translateY(-1px);}
.z-toolbarbutton{border-radius:6px!important;color:var(--ais-theme-primary)!important;}
.z-toolbarbutton-cnt{padding:5px 7px!important;font-size:12px!important;font-weight:700!important;}
.z-toolbarbutton:hover,.z-toolbarbutton-over{background:rgba(var(--ais-theme-primary-rgb),.08)!important;color:var(--ais-theme-primary)!important;}

/* =========================== TOOLBAR / PAGING ======================= */
.z-toolbar,.ais-toolbar{background:linear-gradient(180deg,#fff 0%,#f8fafc 100%)!important;border:1px solid var(--ais-border)!important;border-radius:var(--ais-radius)!important;padding:6px!important;color:var(--ais-text)!important;box-shadow:var(--ais-shadow-xs)!important;min-height: 46px;}
.z-paging,.z-paging-os{background:#fff!important;border:1px solid var(--ais-border)!important;border-radius:0 0 var(--ais-radius) var(--ais-radius)!important;padding:5px!important;box-shadow:none!important;}
.z-paging-os .z-paging-os-cnt{background:#fff!important;border:1px solid var(--ais-border)!important;border-radius:6px!important;color:#334155!important;font-size:12px!important;margin:0 2px!important;padding:3px 7px!important;text-decoration:none!important;}
.z-paging-os .z-paging-os-seld{background:var(--ais-theme-primary-bg)!important;border-color:var(--ais-theme-primary)!important;color:#fff!important;font-weight:800!important;text-shadow:none!important;}

/* =========================== WINDOW / PANEL / POPUP ================= */
.z-window-embedded,.z-window-modal,.z-window-highlighted,.z-window-overlapped,.z-window-popup,.z-panel{border:0!important;background:transparent!important;}
.z-window-embedded-cnt,.z-window-embedded-cnt-noborder,.z-window-modal-cm,.z-window-highlighted-cm,.z-window-overlapped-cm,.z-window-popup-cm,.z-panel-children{background:var(--ais-surface)!important;border:1px solid var(--ais-border)!important;border-radius:var(--ais-radius-lg)!important;box-shadow:var(--ais-shadow)!important;color:var(--ais-text)!important;overflow:hidden!important;}
.z-window-embedded-header,.z-window-modal-header,.z-window-highlighted-header,.z-window-overlapped-header,.z-window-popup-header,.z-panel-header,.z-panel-hl .z-panel-header{background:linear-gradient(180deg,#fff 0%,#f8fafc 100%)!important;border-bottom:1px solid var(--ais-border)!important;color:#0f172a!important;font-size:14px!important;font-weight:800!important;padding:10px 12px!important;}
.z-window-modal-shadow,.z-window-highlighted-shadow{box-shadow:0 22px 70px rgba(15,23,42,.34)!important;}
.z-popup .z-popup-cl,.z-menu-popup .z-menu-popup-cnt,.z-combobox-shadow,.z-bandbox-shadow,.z-datebox-shadow{background:#fff!important;border:1px solid var(--ais-border)!important;border-radius:10px!important;box-shadow:var(--ais-shadow-lg)!important;color:var(--ais-text)!important;overflow:auto !important;}
.z-menu-popup .z-menu-popup-cnt,.z-menu-popup-cnt .z-menu a.z-menu-cnt,.z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt{background:#fff!important;color:#334155!important;border:0!important;}
.z-menu-popup-cnt .z-menu a.z-menu-cnt,.z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt{padding:7px 12px!important;font-size:12px!important;}
.z-menu-popup-cnt .z-menu-over,.z-menu-popup-cnt .z-menu-item-over{background:var(--theme-light)!important;color:var(--ais-theme-primary)!important;}
.z-fieldset{border:1px solid var(--ais-border)!important;border-radius:var(--ais-radius)!important;background:#fff!important;padding:8px!important;}
.z-fieldset legend,h2,h4{background:var(--ais-theme-primary-bg)!important;color:#fff!important;border:0!important;border-radius:999px!important;font-size:12px!important;font-weight:800!important;padding:5px 12px!important;text-shadow:none!important;}
.z-fieldset-cnt{overflow:auto!important;padding:7px!important;}

/* =========================== TREE / MENU ============================ */
tr.z-treerow,tr.z-treerow a,tr.z-treerow a:visited{background:transparent!important;color:inherit!important;font-size:12px!important;text-decoration:none!important;}
tr.z-treerow:hover,tr.z-treerow-seld{background:var(--theme-light)!important;}
.z-treerow-seld .z-treecell-text,.z-treerow-seld .z-a{color:var(--ais-theme-primary)!important;font-weight:700!important;}
.z-menubar-ver,.z-menubar-hor{background:transparent!important;background-image:none!important;border:0!important;}
.z-menubar-hor .z-menu,.z-menubar-hor .z-menu-item,.z-menubar-hor .z-menu-btn,.z-menubar-hor .z-menu-item-btn,.z-menubar-hor span,.z-menubar-hor a,.z-menubar-hor div,.z-menubar-ver .z-menu,.z-menubar-ver .z-menu-item,.z-menubar-ver .z-menu-btn,.z-menubar-ver .z-menu-item-btn,.z-menubar-ver span,.z-menubar-ver a,.z-menubar-ver div,.z-menu-cnt,.z-menu-item-cnt{font-family:var(--ais-font)!important;font-size:12px!important;font-weight:600!important;white-space:nowrap!important;}

/* =========================== CARD HTML MODERN DI VIEW SOURCE ========= */
.ais-profile-card,.ais-akad-card,.ais-card,.ais-panel,.ais-dashboard-card,.ais-soft-panel,.ais-mywindow,.ais-mygrid,.ais-mypanel,.ais-groupbox-styled,.ais-vbox-styled,.ais-hbox-styled,.ais-div{background:#fff!important;border:1px solid var(--ais-border)!important;border-radius:16px!important;box-shadow:0 12px 30px rgba(15,23,42,.08)!important;color:#0f172a!important;overflow:hidden!important;}
.ais-profile-head,.ais-akad-head{background:linear-gradient(135deg,rgba(var(--ais-theme-primary-rgb),.08) 0%,rgba(var(--ais-theme-accent-rgb),.10) 100%)!important;border-bottom:1px solid var(--ais-border)!important;border-left:4px solid var(--ais-theme-accent)!important;padding:14px 16px!important;}
.ais-profile-title,.ais-akad-title,.ais-title,.ais-section-title{color:#0f172a!important;font-weight:900!important;letter-spacing:-.01em!important;}
.ais-profile-desc,.ais-akad-desc,.ais-help,.ais-description,.ais-muted{color:var(--ais-text-muted)!important;}
.ais-profile-stat,.ais-akad-stat{background:linear-gradient(180deg,#fff 0%,#f8fafc 100%)!important;border:1px solid var(--ais-border)!important;border-radius:14px!important;box-shadow:0 6px 16px rgba(15,23,42,.06)!important;}
.ais-pill,.ais-badge{background:rgba(var(--ais-theme-primary-rgb),.10)!important;border:1px solid rgba(var(--ais-theme-primary-rgb),.24)!important;border-radius:999px!important;color:var(--ais-theme-primary)!important;display:inline-block!important;padding:2px 8px!important;font-weight:700!important;}

/* =========================== UTILITAS ================================ */
.no-highlight tr.z-grid-odd td.z-row-inner,.no-highlight tr.z-grid-odd .z-cell,.no-highlight tr.z-grid-odd,.no-highlight tr.z-row-over>td.z-row-inner{background:transparent!important;}
.profile_sclass{padding-top:0!important;}.gambar_profile{border:1px solid rgba(255,255,255,.75)!important;border-radius:16px!important;aspect-ratio:1;object-fit:cover;box-shadow:0 8px 20px rgba(15,23,42,.20)!important;}
.fa{display:inline-block;padding-left:6px;padding-right:4px;font-size:17px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.fa-small{font-size:14px!important;}.fa:hover{color:var(--ais-theme-accent)!important;}
.headerHbox_mobile{background:var(--ais-theme-primary-bg)!important;min-height:210px!important;height:210px!important;}
.z-north,.z-south,.z-west,.z-east,.z-center{border:0!important;border-radius:0!important;background:transparent!important;padding-top:0!important;}
.z-east-splt,.z-west-splt,.z-north-splt,.z-south-splt{background:transparent!important;}

@media screen and (max-width:900px){
  .main-responsive-header{min-height:96px!important;}
  .main-responsive-frame,.main-responsive-sidebar,.z-west.main-responsive-sidebar{height:calc(100vh - 132px)!important;max-height:calc(100vh - 132px)!important;min-height:460px!important;}
  .title1,.main-responsive-header .title1{font-size:15px!important;}
  .motto,.main-responsive-header .motto{font-size:10.5px!important;}
  .main-responsive-module-row .z-toolbarbutton-cnt{font-size:10.5px!important;padding:6px 8px!important;}
  .z-tab .z-tab-text,.z-tab-seld .z-tab-text{padding:7px 10px!important;font-size:11px!important;}
}
@media screen and (max-width:560px){
  .main-responsive-header{min-height:108px!important;}
  .main-responsive-header img,.headerHbox img,.gridHeader img{max-height:40px!important;}
  .main-responsive-frame,.main-responsive-sidebar,.z-west.main-responsive-sidebar{height:calc(100vh - 148px)!important;max-height:calc(100vh - 148px)!important;min-height:420px!important;}
  .z-window-embedded-header,.z-window-modal-header,.z-panel-header{font-size:13px!important;padding:8px 10px!important;}
  div.z-column-cnt,div.z-listheader-cnt,div.z-row-cnt,div.z-listcell-cnt{padding:6px 7px!important;}
}


/* =========================== UTILITY AIS ============================== */
.ais-m-0 { margin: 0 !important; }
.ais-mt-1 { margin-top: 4px !important; }
.ais-mt-2 { margin-top: 8px !important; }
.ais-mb-1 { margin-bottom: 4px !important; }
.ais-mb-2 { margin-bottom: 8px !important; }
.ais-p-1 { padding: 4px !important; }
.ais-p-2 { padding: 8px !important; }
.ais-p-3 { padding: 12px !important; }
.ais-w-100 { width: 100% !important; }
.ais-h-100 { height: 100% !important; }
.ais-text-right { text-align: right !important; }
.ais-text-center { text-align: center !important; }
.ais-font-bold { font-weight: bold !important; }

/* ======================================================================
   AIS INLINE-STYLE MIGRATION LAYER
   Style lama yang dulu tersebar di Java/ZUL dipusatkan di sini.
   File theme hanya mengubah token warna :root.
   ====================================================================== */
.ais-label-bold,
.ais-label-bold .z-label,
.ais-label-bold-config {
  font-size:14px !important;
  font-weight:800 !important;
}
.ais-label-bold-only {
  font-weight:800 !important;
}
.ais-label-bold-red {
  font-size:14px !important;
  font-weight:800 !important;
  color:var(--ais-danger) !important;
}
.ais-label-bolder {
  font-size:16px !important;
  font-weight:900 !important;
}
.ais-label-small,
.ais-label-small .z-label {
  font-size:11px !important;
}
.ais-label-small-bold {
  font-size:11px !important;
  font-weight:800 !important;
}
.ais-label-small-bold-red {
  font-size:11px !important;
  font-weight:800 !important;
  color:var(--ais-danger) !important;
}
.ais-label-small-bold-green {
  font-size:11px !important;
  font-weight:800 !important;
  color:var(--ais-success) !important;
}
.ais-label-small-bold-blue {
  font-size:11px !important;
  font-weight:800 !important;
  color:var(--ais-info) !important;
}
.ais-label-large {
  font-size:14px !important;
}
.ais-label-xsmall {
  font-size:9px !important;
}
.ais-caption-styled,
.z-caption.ais-caption-styled,
.ais-caption-styled .z-caption-cnt {
  background:var(--ais-surface-muted) !important;
  border:1px solid var(--ais-border) !important;
  border-radius:8px 16px !important;
  color:var(--ais-text) !important;
  display:inline-block !important;
  font-size:12px !important;
  font-weight:800 !important;
  padding:5px 8px !important;
  text-decoration:none !important;
}
.ais-caption-styled .ais-caption-text {
  margin-left:5px !important;
}
.ais-button-border-awesome,
a.ais-button-border-awesome,
.ais-button-border-awesome.z-a {
  background:#fff !important;
  border:1px solid var(--ais-border) !important;
  border-radius:8px !important;
  box-shadow:0 1px 2px rgba(60,64,67,.30),0 1px 3px rgba(60,64,67,.15) !important;
  color:var(--ais-text) !important;
  display:inline-block !important;
  padding:10px 5px 5px 5px !important;
  text-decoration:none !important;
}
.ais-button-border-awesome:hover {
  border-color:rgba(var(--ais-theme-primary-rgb),.35) !important;
  box-shadow:0 8px 18px rgba(15,23,42,.14) !important;
  color:var(--ais-theme-primary) !important;
}
.ais-button-config,
.z-button.ais-button-config {
  font-size:12.5px !important;
}
.ais-button-important,
.z-button.ais-button-important {
  font-size:15px !important;
  font-weight:800 !important;
}
.ais-checkbox-config,
.ais-checkbox-config .z-checkbox-cnt {
  font-size:11px !important;
}
.ais-checkbox-picked,
.ais-checkbox-picked .z-checkbox-cnt {
  font-weight:700 !important;
}
.ais-checkbox-xsmall,
.ais-checkbox-xsmall .z-checkbox-cnt {
  font-size:9px !important;
}
.ais-comboitem-small,
.ais-comboitem-small .z-comboitem-text {
  font-size:8px !important;
}
.ais-numberbox,
.ais-numberbox.z-intbox,
.ais-numberbox.z-doublebox,
.ais-numberbox input,
.ais-text-right-input,
.ais-text-right-input input {
  text-align:right !important;
}
.ais-groupbox-styled {
  border:1px solid #bdbbbb !important;
  border-radius:8px !important;
  background:rgba(255,255,255,.78) !important;
  box-shadow:0 1px 3px rgba(15,23,42,.12) !important;
  box-sizing:border-box !important;
  margin:auto !important;
  max-width:97% !important;
  overflow:hidden !important;
  padding:1px 2px 2px 0 !important;
  width:97% !important;
}
.ais-hbox-styled,
.ais-vbox-styled {
  border:1px solid #bdbbbb !important;
  border-radius:8px 8px 20px 20px !important;
  background:rgba(255,255,255,.78) !important;
  box-sizing:border-box !important;
  padding:10px !important;
  width:100% !important;
}
.ais-row-styled,
tr.ais-row-styled td.z-row-inner,
tr.ais-row-styled .z-cell {
  background:rgba(255,255,255,.50) !important;
}
.ais-row-transparent,
tr.ais-row-transparent td.z-row-inner,
tr.ais-row-transparent .z-cell {
  background:transparent !important;
  border:0 !important;
}
.ais-borderless-layout,
.ais-borderless-layout-region,
.ais-borderless-layout .z-borderlayout,
.ais-borderless-layout-region.z-center,
.ais-borderless-layout-region .z-center-body {
  border:0 !important;
  background:transparent !important;
}
.ais-div {
  min-height:40px !important;
  overflow:hidden !important;
  overflow-y:hidden !important;
  width:100% !important;
}
.ais-mypanel,
.z-panel.ais-mypanel {
  border:0 !important;
  background:transparent !important;
}
.ais-mygrid,
.dgrid,
.fgrid,
.dtabel,
.ftabel {
  background:transparent !important;
  border:0 !important;
}
.ais-spreadsheet {
  max-height:2000px !important;
  min-height:50px !important;
  overflow:auto !important;
}
.ais-ckeditor {
  min-height:450px !important;
}
.ais-borderlayout-bg {
  background:transparent !important;
}

/* ======================================================================
   AIS SHELL ALIGNMENT HOTFIX - MainAction/index.zul
   Menghindari header/frame hanya memakai separuh layar akibat kalkulasi
   width ZK Grid/Borderlayout lama setelah style inline dipusatkan.
   ====================================================================== */
.main-responsive-main-grid,
.main-responsive-main-grid > .z-grid-body,
.main-responsive-main-grid > .z-grid-body > table,
.main-responsive-main-grid > .z-grid-body > table > tbody,
.main-responsive-main-grid > .z-grid-body > table > tbody > tr,
.main-responsive-main-grid > .z-grid-body > table > tbody > tr > td.z-row-inner,
.main-responsive-main-grid > .z-grid-body > table > tbody > tr > td.z-row-inner > .z-row-cnt {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.main-responsive-main-grid > .z-grid-body > table,
.main-responsive-header-grid > .z-grid-body > table {
    table-layout: fixed !important;
}
.main-responsive-header-grid,
.main-responsive-header-grid > .z-grid-body,
.main-responsive-header-grid > .z-grid-body > table,
.main-responsive-header-grid .z-row-inner,
.main-responsive-header-grid .z-row-cnt {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.main-responsive-header-grid .z-column,
.main-responsive-header-grid th.z-column {
    box-sizing: border-box !important;
}
.main-responsive-brand-box,
.main-responsive-brand-box table,
.main-responsive-brand-box tbody,
.main-responsive-brand-box tr,
.main-responsive-header-right,
.main-responsive-header-actions,
.main-responsive-module-strip {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.main-responsive-brand-box {
    min-width: 0 !important;
    padding: 8px 12px !important;
}
.main-responsive-header-right {
    min-width: 0 !important;
    padding: 7px 12px 6px 8px !important;
}
.main-responsive-module-strip {
    display: block !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    white-space: nowrap !important;
    padding-left: 8px !important;
    padding-right: 8px !important;
}
.main-responsive-frame {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 560px !important;
    height: calc(100vh - 112px) !important;
    overflow: hidden !important;
}
.main-responsive-frame .main-responsive-sidebar,
.main-responsive-frame .z-west.main-responsive-sidebar {
    top: 0 !important;
    left: 0 !important;
    width: 250px !important;
    max-width: 250px !important;
    min-width: 220px !important;
    height: 100% !important;
    max-height: 100% !important;
}
.main-responsive-frame .main-responsive-center,
.main-responsive-frame .z-center.main-responsive-center {
    top: 0 !important;
    left: 250px !important;
    right: 0 !important;
    width: auto !important;
    max-width: none !important;
    height: 100% !important;
    overflow: hidden !important;
}
.main-responsive-center .z-center-body,
.main-responsive-tabbox,
.main-responsive-tabs,
.main-responsive-tabpanels,
.main-responsive-tabpanels .z-tabpanel,
.main-responsive-home-panel {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
    box-sizing: border-box !important;
}
.main-responsive-tabbox,
.main-responsive-tabpanels,
.main-responsive-tabpanels .z-tabpanel,
.main-responsive-home-panel {
    height: 100% !important;
    max-height: 100% !important;
}
.main-responsive-home-panel,
.main-responsive-tabpanels .z-tabpanel {
    overflow: auto !important;
}
.main-responsive-home-panel .z-tabpanel-cnt,
.main-responsive-tabpanels .z-tabpanel-cnt {
    min-height: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.main-responsive-footer {
    display: none !important;
}
@media screen and (max-width: 760px) {
    .main-responsive-frame .main-responsive-sidebar,
    .main-responsive-frame .z-west.main-responsive-sidebar {
        width: 220px !important;
        max-width: 220px !important;
    }
    .main-responsive-frame .main-responsive-center,
    .main-responsive-frame .z-center.main-responsive-center {
        left: 220px !important;
    }
}


/* ======================================================================
   AIS PROFILE / AKADEMIK HTML STYLE - dipusatkan dari ProfileUiHelper dan
   DashboardAkademikHtmlCssHelper. Jangan sisipkan lagi <style> di Java/Html.
   ====================================================================== */
.ais-profile-modern,
.ais-akad-card { font-family: var(--ais-font) !important; color: #0f172a !important; }
.ais-profile-card { margin: 10px 0 14px 0 !important; }
.ais-profile-head { padding: 14px 16px !important; }
.ais-profile-title { font-size: 15px !important; line-height: 1.35 !important; }
.ais-profile-desc { font-size: 11.5px !important; line-height: 1.55 !important; margin-top: 4px !important; }
.ais-profile-grid { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; padding: 12px !important; }
.ais-profile-stat { flex: 1 1 115px !important; min-width: 105px !important; padding: 11px !important; }
.ais-profile-stat .label { font-size: 10px !important; color: #64748b !important; text-transform: uppercase !important; letter-spacing: .04em !important; font-weight: 700 !important; }
.ais-profile-stat .value { font-size: 18px !important; color: #0f172a !important; font-weight: 800 !important; margin-top: 4px !important; }
.ais-profile-stat .hint { font-size: 10.5px !important; color: #64748b !important; margin-top: 4px !important; line-height: 1.35 !important; }
.ais-profile-chart-wrap { padding: 12px !important; }
.ais-profile-trend { display: flex !important; align-items: flex-end !important; gap: 8px !important; min-height: 168px !important; padding: 14px 8px 22px 8px !important; border: 1px solid var(--ais-border) !important; border-radius: 12px !important; background: repeating-linear-gradient(to top,#fff 0,#fff 32px,#f1f5f9 33px) !important; overflow-x: auto !important; }
.ais-profile-bar-col { min-width: 46px !important; text-align: center !important; font-size: 10px !important; color: #64748b !important; }
.ais-profile-bars { height: 130px !important; display: flex !important; align-items: flex-end !important; justify-content: center !important; gap: 3px !important; }
.ais-profile-bar { width: 9px !important; border-radius: 8px 8px 2px 2px !important; display: inline-block !important; box-shadow: 0 2px 6px rgba(15,23,42,.10) !important; }
.ais-profile-bar.sks { background: linear-gradient(180deg,#38bdf8,#2563eb) !important; }
.ais-profile-bar.kum { background: linear-gradient(180deg,#34d399,#059669) !important; }
.ais-profile-bar.ips { background: linear-gradient(180deg,#fbbf24,#f97316) !important; }
.ais-profile-bar.ipk { background: linear-gradient(180deg,#a78bfa,#7c3aed) !important; }
.ais-profile-legend { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; margin-top: 10px !important; font-size: 10.5px !important; color: #475569 !important; }
.ais-profile-dot { display: inline-block !important; width: 9px !important; height: 9px !important; border-radius: 50% !important; margin-right: 4px !important; vertical-align: middle !important; background: var(--ais-theme-primary) !important; }
.ais-profile-radar { padding: 12px !important; text-align: center !important; }
.ais-profile-table { width: 100% !important; border-collapse: collapse !important; font-size: 11px !important; }
.ais-profile-table th { background: rgba(var(--ais-theme-primary-rgb),.08) !important; color: #1e293b !important; text-align: left !important; padding: 8px !important; border-bottom: 1px solid var(--ais-border) !important; font-weight: 800 !important; }
.ais-profile-table td { padding: 8px !important; border-bottom: 1px solid #f1f5f9 !important; color: #334155 !important; vertical-align: top !important; }
.ais-profile-table tr:nth-child(even) td { background: #fbfdff !important; }
.ais-profile-badge { display: inline-block !important; border-radius: 999px !important; padding: 2px 7px !important; font-size: 10px !important; font-weight: 700 !important; background: rgba(var(--ais-theme-primary-rgb),.10) !important; color: var(--ais-theme-primary) !important; }
.ais-profile-loading { padding: 18px !important; text-align: center !important; color: #475569 !important; background: #fff !important; border: 1px solid var(--ais-border) !important; border-radius: 12px !important; margin: 8px 0 !important; }
.ais-profile-spinner { display: inline-block !important; width: 14px !important; height: 14px !important; border: 2px solid #cbd5e1 !important; border-top-color: var(--ais-theme-primary) !important; border-radius: 50% !important; animation: aisSpin .8s linear infinite !important; margin-right: 6px !important; vertical-align: -2px !important; }
.ais-akad-card { margin: 8px 0 12px 0 !important; }
.ais-akad-head { padding: 13px 15px !important; }
.ais-akad-title { font-size: 14px !important; line-height: 1.35 !important; }
.ais-akad-desc { font-size: 11px !important; line-height: 1.45 !important; margin-top: 4px !important; }
.ais-akad-body { padding: 12px !important; }
.ais-akad-empty { padding: 16px !important; color: #64748b !important; font-size: 11px !important; text-align: center !important; border: 1px dashed #cbd5e1 !important; border-radius: 12px !important; background: #f8fafc !important; }
.ais-akad-stats { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; }
.ais-akad-stat { flex: 1 1 120px !important; min-width: 110px !important; padding: 10px !important; }
.ais-akad-stat .l { font-size: 10px !important; color: #64748b !important; text-transform: uppercase !important; letter-spacing: .04em !important; font-weight: 700 !important; }
.ais-akad-stat .v { font-size: 19px !important; color: #0f172a !important; font-weight: 800 !important; margin-top: 5px !important; }
.ais-akad-stat .h { font-size: 10.5px !important; color: #64748b !important; margin-top: 4px !important; line-height: 1.35 !important; }
.ais-akad-list { display: block !important; border: 1px solid var(--ais-border) !important; border-radius: 12px !important; background: #fff !important; overflow: hidden !important; }
.ais-akad-rowitem { padding: 10px !important; border-bottom: 1px solid #f1f5f9 !important; }
.ais-akad-rowitem:last-child { border-bottom: none !important; }
.ais-akad-rowtitle { font-size: 11px !important; font-weight: 800 !important; color: #0f172a !important; line-height: 1.35 !important; margin-bottom: 6px !important; }
.ais-akad-rowmeta { font-size: 9.5px !important; color: #64748b !important; margin-top: 2px !important; line-height: 1.35 !important; }
.ais-akad-line { display: flex !important; align-items: center !important; gap: 6px !important; margin: 5px 0 !important; }
.ais-akad-lname { width: 58px !important; min-width: 58px !important; font-size: 9.5px !important; color: #64748b !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.ais-akad-track { height: 8px !important; flex: 1 !important; background: #f1f5f9 !important; border-radius: 999px !important; overflow: hidden !important; }
.ais-akad-fill { display: block !important; height: 8px !important; border-radius: 999px !important; }
.ais-akad-lval { width: 42px !important; min-width: 42px !important; text-align: right !important; font-size: 10px !important; font-weight: 800 !important; color: #0f172a !important; }
.ais-akad-fill0 { background: linear-gradient(90deg,#bfdbfe,#2563eb) !important; }
.ais-akad-fill1 { background: linear-gradient(90deg,#bbf7d0,#059669) !important; }
.ais-akad-fill2 { background: linear-gradient(90deg,#fed7aa,#f97316) !important; }
.ais-akad-fill3 { background: linear-gradient(90deg,#ddd6fe,#7c3aed) !important; }
.ais-akad-fill4 { background: linear-gradient(90deg,#fecdd3,#e11d48) !important; }
.ais-akad-legend { display: flex !important; flex-wrap: wrap !important; gap: 9px !important; margin-top: 10px !important; font-size: 10.5px !important; color: #475569 !important; }
.ais-akad-dot { display: inline-block !important; width: 9px !important; height: 9px !important; border-radius: 50% !important; margin-right: 4px !important; vertical-align: -1px !important; background: var(--ais-theme-primary) !important; }
@keyframes aisSpin { to { transform: rotate(360deg); } }
@media screen and (max-width:360px){
    .ais-profile-grid{display:block!important;padding:10px!important}.ais-profile-stat{margin-bottom:8px!important;min-width:0!important}.ais-profile-head{padding:12px!important}.ais-profile-title{font-size:14px!important}.ais-profile-desc{font-size:11px!important}
    .ais-akad-body{padding:10px!important}.ais-akad-rowitem{padding:9px!important}.ais-akad-lname{width:54px!important;min-width:54px!important}.ais-akad-lval{width:40px!important;min-width:40px!important}.ais-akad-stat{min-width:100px!important}
}

/* Dynamic chart values converted from old inline styles. */
[data-ais-style-reset="width:0%"]{width:0%!important;}
[data-ais-style-reset="width:1%"]{width:1%!important;}
[data-ais-style-reset="width:2%"]{width:2%!important;}
[data-ais-style-reset="width:3%"]{width:3%!important;}
[data-ais-style-reset="width:4%"]{width:4%!important;}
[data-ais-style-reset="width:5%"]{width:5%!important;}
[data-ais-style-reset="width:6%"]{width:6%!important;}
[data-ais-style-reset="width:7%"]{width:7%!important;}
[data-ais-style-reset="width:8%"]{width:8%!important;}
[data-ais-style-reset="width:9%"]{width:9%!important;}
[data-ais-style-reset="width:10%"]{width:10%!important;}
[data-ais-style-reset="width:11%"]{width:11%!important;}
[data-ais-style-reset="width:12%"]{width:12%!important;}
[data-ais-style-reset="width:13%"]{width:13%!important;}
[data-ais-style-reset="width:14%"]{width:14%!important;}
[data-ais-style-reset="width:15%"]{width:15%!important;}
[data-ais-style-reset="width:16%"]{width:16%!important;}
[data-ais-style-reset="width:17%"]{width:17%!important;}
[data-ais-style-reset="width:18%"]{width:18%!important;}
[data-ais-style-reset="width:19%"]{width:19%!important;}
[data-ais-style-reset="width:20%"]{width:20%!important;}
[data-ais-style-reset="width:21%"]{width:21%!important;}
[data-ais-style-reset="width:22%"]{width:22%!important;}
[data-ais-style-reset="width:23%"]{width:23%!important;}
[data-ais-style-reset="width:24%"]{width:24%!important;}
[data-ais-style-reset="width:25%"]{width:25%!important;}
[data-ais-style-reset="width:26%"]{width:26%!important;}
[data-ais-style-reset="width:27%"]{width:27%!important;}
[data-ais-style-reset="width:28%"]{width:28%!important;}
[data-ais-style-reset="width:29%"]{width:29%!important;}
[data-ais-style-reset="width:30%"]{width:30%!important;}
[data-ais-style-reset="width:31%"]{width:31%!important;}
[data-ais-style-reset="width:32%"]{width:32%!important;}
[data-ais-style-reset="width:33%"]{width:33%!important;}
[data-ais-style-reset="width:34%"]{width:34%!important;}
[data-ais-style-reset="width:35%"]{width:35%!important;}
[data-ais-style-reset="width:36%"]{width:36%!important;}
[data-ais-style-reset="width:37%"]{width:37%!important;}
[data-ais-style-reset="width:38%"]{width:38%!important;}
[data-ais-style-reset="width:39%"]{width:39%!important;}
[data-ais-style-reset="width:40%"]{width:40%!important;}
[data-ais-style-reset="width:41%"]{width:41%!important;}
[data-ais-style-reset="width:42%"]{width:42%!important;}
[data-ais-style-reset="width:43%"]{width:43%!important;}
[data-ais-style-reset="width:44%"]{width:44%!important;}
[data-ais-style-reset="width:45%"]{width:45%!important;}
[data-ais-style-reset="width:46%"]{width:46%!important;}
[data-ais-style-reset="width:47%"]{width:47%!important;}
[data-ais-style-reset="width:48%"]{width:48%!important;}
[data-ais-style-reset="width:49%"]{width:49%!important;}
[data-ais-style-reset="width:50%"]{width:50%!important;}
[data-ais-style-reset="width:51%"]{width:51%!important;}
[data-ais-style-reset="width:52%"]{width:52%!important;}
[data-ais-style-reset="width:53%"]{width:53%!important;}
[data-ais-style-reset="width:54%"]{width:54%!important;}
[data-ais-style-reset="width:55%"]{width:55%!important;}
[data-ais-style-reset="width:56%"]{width:56%!important;}
[data-ais-style-reset="width:57%"]{width:57%!important;}
[data-ais-style-reset="width:58%"]{width:58%!important;}
[data-ais-style-reset="width:59%"]{width:59%!important;}
[data-ais-style-reset="width:60%"]{width:60%!important;}
[data-ais-style-reset="width:61%"]{width:61%!important;}
[data-ais-style-reset="width:62%"]{width:62%!important;}
[data-ais-style-reset="width:63%"]{width:63%!important;}
[data-ais-style-reset="width:64%"]{width:64%!important;}
[data-ais-style-reset="width:65%"]{width:65%!important;}
[data-ais-style-reset="width:66%"]{width:66%!important;}
[data-ais-style-reset="width:67%"]{width:67%!important;}
[data-ais-style-reset="width:68%"]{width:68%!important;}
[data-ais-style-reset="width:69%"]{width:69%!important;}
[data-ais-style-reset="width:70%"]{width:70%!important;}
[data-ais-style-reset="width:71%"]{width:71%!important;}
[data-ais-style-reset="width:72%"]{width:72%!important;}
[data-ais-style-reset="width:73%"]{width:73%!important;}
[data-ais-style-reset="width:74%"]{width:74%!important;}
[data-ais-style-reset="width:75%"]{width:75%!important;}
[data-ais-style-reset="width:76%"]{width:76%!important;}
[data-ais-style-reset="width:77%"]{width:77%!important;}
[data-ais-style-reset="width:78%"]{width:78%!important;}
[data-ais-style-reset="width:79%"]{width:79%!important;}
[data-ais-style-reset="width:80%"]{width:80%!important;}
[data-ais-style-reset="width:81%"]{width:81%!important;}
[data-ais-style-reset="width:82%"]{width:82%!important;}
[data-ais-style-reset="width:83%"]{width:83%!important;}
[data-ais-style-reset="width:84%"]{width:84%!important;}
[data-ais-style-reset="width:85%"]{width:85%!important;}
[data-ais-style-reset="width:86%"]{width:86%!important;}
[data-ais-style-reset="width:87%"]{width:87%!important;}
[data-ais-style-reset="width:88%"]{width:88%!important;}
[data-ais-style-reset="width:89%"]{width:89%!important;}
[data-ais-style-reset="width:90%"]{width:90%!important;}
[data-ais-style-reset="width:91%"]{width:91%!important;}
[data-ais-style-reset="width:92%"]{width:92%!important;}
[data-ais-style-reset="width:93%"]{width:93%!important;}
[data-ais-style-reset="width:94%"]{width:94%!important;}
[data-ais-style-reset="width:95%"]{width:95%!important;}
[data-ais-style-reset="width:96%"]{width:96%!important;}
[data-ais-style-reset="width:97%"]{width:97%!important;}
[data-ais-style-reset="width:98%"]{width:98%!important;}
[data-ais-style-reset="width:99%"]{width:99%!important;}
[data-ais-style-reset="width:100%"]{width:100%!important;}
[data-ais-style-reset="height:0px"]{height:0px!important;}
[data-ais-style-reset="height:1px"]{height:1px!important;}
[data-ais-style-reset="height:2px"]{height:2px!important;}
[data-ais-style-reset="height:3px"]{height:3px!important;}
[data-ais-style-reset="height:4px"]{height:4px!important;}
[data-ais-style-reset="height:5px"]{height:5px!important;}
[data-ais-style-reset="height:6px"]{height:6px!important;}
[data-ais-style-reset="height:7px"]{height:7px!important;}
[data-ais-style-reset="height:8px"]{height:8px!important;}
[data-ais-style-reset="height:9px"]{height:9px!important;}
[data-ais-style-reset="height:10px"]{height:10px!important;}
[data-ais-style-reset="height:11px"]{height:11px!important;}
[data-ais-style-reset="height:12px"]{height:12px!important;}
[data-ais-style-reset="height:13px"]{height:13px!important;}
[data-ais-style-reset="height:14px"]{height:14px!important;}
[data-ais-style-reset="height:15px"]{height:15px!important;}
[data-ais-style-reset="height:16px"]{height:16px!important;}
[data-ais-style-reset="height:17px"]{height:17px!important;}
[data-ais-style-reset="height:18px"]{height:18px!important;}
[data-ais-style-reset="height:19px"]{height:19px!important;}
[data-ais-style-reset="height:20px"]{height:20px!important;}
[data-ais-style-reset="height:21px"]{height:21px!important;}
[data-ais-style-reset="height:22px"]{height:22px!important;}
[data-ais-style-reset="height:23px"]{height:23px!important;}
[data-ais-style-reset="height:24px"]{height:24px!important;}
[data-ais-style-reset="height:25px"]{height:25px!important;}
[data-ais-style-reset="height:26px"]{height:26px!important;}
[data-ais-style-reset="height:27px"]{height:27px!important;}
[data-ais-style-reset="height:28px"]{height:28px!important;}
[data-ais-style-reset="height:29px"]{height:29px!important;}
[data-ais-style-reset="height:30px"]{height:30px!important;}
[data-ais-style-reset="height:31px"]{height:31px!important;}
[data-ais-style-reset="height:32px"]{height:32px!important;}
[data-ais-style-reset="height:33px"]{height:33px!important;}
[data-ais-style-reset="height:34px"]{height:34px!important;}
[data-ais-style-reset="height:35px"]{height:35px!important;}
[data-ais-style-reset="height:36px"]{height:36px!important;}
[data-ais-style-reset="height:37px"]{height:37px!important;}
[data-ais-style-reset="height:38px"]{height:38px!important;}
[data-ais-style-reset="height:39px"]{height:39px!important;}
[data-ais-style-reset="height:40px"]{height:40px!important;}
[data-ais-style-reset="height:41px"]{height:41px!important;}
[data-ais-style-reset="height:42px"]{height:42px!important;}
[data-ais-style-reset="height:43px"]{height:43px!important;}
[data-ais-style-reset="height:44px"]{height:44px!important;}
[data-ais-style-reset="height:45px"]{height:45px!important;}
[data-ais-style-reset="height:46px"]{height:46px!important;}
[data-ais-style-reset="height:47px"]{height:47px!important;}
[data-ais-style-reset="height:48px"]{height:48px!important;}
[data-ais-style-reset="height:49px"]{height:49px!important;}
[data-ais-style-reset="height:50px"]{height:50px!important;}
[data-ais-style-reset="height:51px"]{height:51px!important;}
[data-ais-style-reset="height:52px"]{height:52px!important;}
[data-ais-style-reset="height:53px"]{height:53px!important;}
[data-ais-style-reset="height:54px"]{height:54px!important;}
[data-ais-style-reset="height:55px"]{height:55px!important;}
[data-ais-style-reset="height:56px"]{height:56px!important;}
[data-ais-style-reset="height:57px"]{height:57px!important;}
[data-ais-style-reset="height:58px"]{height:58px!important;}
[data-ais-style-reset="height:59px"]{height:59px!important;}
[data-ais-style-reset="height:60px"]{height:60px!important;}
[data-ais-style-reset="height:61px"]{height:61px!important;}
[data-ais-style-reset="height:62px"]{height:62px!important;}
[data-ais-style-reset="height:63px"]{height:63px!important;}
[data-ais-style-reset="height:64px"]{height:64px!important;}
[data-ais-style-reset="height:65px"]{height:65px!important;}
[data-ais-style-reset="height:66px"]{height:66px!important;}
[data-ais-style-reset="height:67px"]{height:67px!important;}
[data-ais-style-reset="height:68px"]{height:68px!important;}
[data-ais-style-reset="height:69px"]{height:69px!important;}
[data-ais-style-reset="height:70px"]{height:70px!important;}
[data-ais-style-reset="height:71px"]{height:71px!important;}
[data-ais-style-reset="height:72px"]{height:72px!important;}
[data-ais-style-reset="height:73px"]{height:73px!important;}
[data-ais-style-reset="height:74px"]{height:74px!important;}
[data-ais-style-reset="height:75px"]{height:75px!important;}
[data-ais-style-reset="height:76px"]{height:76px!important;}
[data-ais-style-reset="height:77px"]{height:77px!important;}
[data-ais-style-reset="height:78px"]{height:78px!important;}
[data-ais-style-reset="height:79px"]{height:79px!important;}
[data-ais-style-reset="height:80px"]{height:80px!important;}
[data-ais-style-reset="height:81px"]{height:81px!important;}
[data-ais-style-reset="height:82px"]{height:82px!important;}
[data-ais-style-reset="height:83px"]{height:83px!important;}
[data-ais-style-reset="height:84px"]{height:84px!important;}
[data-ais-style-reset="height:85px"]{height:85px!important;}
[data-ais-style-reset="height:86px"]{height:86px!important;}
[data-ais-style-reset="height:87px"]{height:87px!important;}
[data-ais-style-reset="height:88px"]{height:88px!important;}
[data-ais-style-reset="height:89px"]{height:89px!important;}
[data-ais-style-reset="height:90px"]{height:90px!important;}
[data-ais-style-reset="height:91px"]{height:91px!important;}
[data-ais-style-reset="height:92px"]{height:92px!important;}
[data-ais-style-reset="height:93px"]{height:93px!important;}
[data-ais-style-reset="height:94px"]{height:94px!important;}
[data-ais-style-reset="height:95px"]{height:95px!important;}
[data-ais-style-reset="height:96px"]{height:96px!important;}
[data-ais-style-reset="height:97px"]{height:97px!important;}
[data-ais-style-reset="height:98px"]{height:98px!important;}
[data-ais-style-reset="height:99px"]{height:99px!important;}
[data-ais-style-reset="height:100px"]{height:100px!important;}
[data-ais-style-reset="height:101px"]{height:101px!important;}
[data-ais-style-reset="height:102px"]{height:102px!important;}
[data-ais-style-reset="height:103px"]{height:103px!important;}
[data-ais-style-reset="height:104px"]{height:104px!important;}
[data-ais-style-reset="height:105px"]{height:105px!important;}
[data-ais-style-reset="height:106px"]{height:106px!important;}
[data-ais-style-reset="height:107px"]{height:107px!important;}
[data-ais-style-reset="height:108px"]{height:108px!important;}
[data-ais-style-reset="height:109px"]{height:109px!important;}
[data-ais-style-reset="height:110px"]{height:110px!important;}
[data-ais-style-reset="height:111px"]{height:111px!important;}
[data-ais-style-reset="height:112px"]{height:112px!important;}
[data-ais-style-reset="height:113px"]{height:113px!important;}
[data-ais-style-reset="height:114px"]{height:114px!important;}
[data-ais-style-reset="height:115px"]{height:115px!important;}
[data-ais-style-reset="height:116px"]{height:116px!important;}
[data-ais-style-reset="height:117px"]{height:117px!important;}
[data-ais-style-reset="height:118px"]{height:118px!important;}
[data-ais-style-reset="height:119px"]{height:119px!important;}
[data-ais-style-reset="height:120px"]{height:120px!important;}
[data-ais-style-reset="height:121px"]{height:121px!important;}
[data-ais-style-reset="height:122px"]{height:122px!important;}
[data-ais-style-reset="height:123px"]{height:123px!important;}
[data-ais-style-reset="height:124px"]{height:124px!important;}
[data-ais-style-reset="height:125px"]{height:125px!important;}
[data-ais-style-reset="height:126px"]{height:126px!important;}
[data-ais-style-reset="height:127px"]{height:127px!important;}
[data-ais-style-reset="height:128px"]{height:128px!important;}
[data-ais-style-reset="height:129px"]{height:129px!important;}
[data-ais-style-reset="height:130px"]{height:130px!important;}
[data-ais-style-reset="height:131px"]{height:131px!important;}
[data-ais-style-reset="height:132px"]{height:132px!important;}
[data-ais-style-reset="height:133px"]{height:133px!important;}
[data-ais-style-reset="height:134px"]{height:134px!important;}
[data-ais-style-reset="height:135px"]{height:135px!important;}
[data-ais-style-reset="height:136px"]{height:136px!important;}
[data-ais-style-reset="height:137px"]{height:137px!important;}
[data-ais-style-reset="height:138px"]{height:138px!important;}
[data-ais-style-reset="height:139px"]{height:139px!important;}
[data-ais-style-reset="height:140px"]{height:140px!important;}



/* ======================================================================
   AIS INDEX LEGACY-COMPATIBILITY LAYER
   Hasil double-check dengan "index - lama.zul".
   Tujuan: style inline lama dipusatkan di css_utama.css, tetapi visual
   tetap familiar: header ramping, menu shortcut tetap sederhana, warna
   mengikuti theme aktif, dan konten tidak berubah terlalu drastis.
   ====================================================================== */
.main-responsive-root,
.zk55-responsive-shell {
    background: #f5f8fa !important;
}
.main-responsive-main-grid,
.main-responsive-main-grid > .z-grid-body {
    background: #f5f8fa !important;
    border: 0 !important;
    padding: 0 !important;
}
.main-responsive-header {
    min-height: 98px !important;
    background: var(--ais-theme-primary-bg) !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(0,0,0,.08) !important;
    box-shadow: 0 1px 3px rgba(15,23,42,.12) !important;
    overflow: hidden !important;
}
.main-responsive-header:before {
    display: none !important;
}
.main-responsive-header-grid,
.main-responsive-header-grid > .z-grid-body,
.main-responsive-header-grid > .z-grid-body > table,
.main-responsive-header-grid .z-row-inner,
.main-responsive-header-grid .z-row-cnt,
.main-responsive-header-grid tr.z-row,
.main-responsive-header-grid tr.z-grid-odd,
.main-responsive-header-grid tr.z-grid-odd td.z-row-inner {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}
.main-responsive-header-grid .z-grid-header,
.main-responsive-header-grid .z-grid-header-bg {
    display: none !important;
}
.main-responsive-header-grid .z-column,
.main-responsive-header-grid th.z-column {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}
.main-responsive-brand-box {
    padding: 0 0 0 6px !important;
    margin: 0 !important;
    min-height: 60px !important;
}
.main-responsive-brand-box table,
.main-responsive-brand-box tbody,
.main-responsive-brand-box tr,
.main-responsive-brand-box td {
    vertical-align: middle !important;
}
.main-responsive-header img,
.headerHbox img,
.gridHeader img {
    max-height: 50px !important;
}
.title1,
.main-responsive-header .title1,
.gridHeader .title1 {
    font-size: 18px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    color: #ffffff !important;
    text-shadow: 0 0 4px rgba(0,0,0,.45) !important;
}
.motto,
.main-responsive-header .motto,
.gridHeader .motto {
    font-size: 12px !important;
    font-weight: 400 !important;
    color: rgba(255,255,255,.92) !important;
    text-shadow: 0 0 4px rgba(0,0,0,.35) !important;
}
.main-responsive-header-right {
    padding: 0 20px 0 0 !important;
    margin: 0 !important;
    font-size: 9px !important;
    font-weight: bold !important;
    text-align: right !important;
}
.main-responsive-header-actions,
.main-responsive-header-actions table,
.main-responsive-header-actions tbody,
.main-responsive-header-actions tr {
    width: 100% !important;
}
.user_button_profile,
.main-responsive-header-actions .z-a,
.main-responsive-header-actions .z-toolbarbutton,
.main-responsive-header-actions .z-toolbarbutton-cnt {
    padding: 0 4px !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    color: #ffffff !important;
    font-size: 11px !important;
    font-weight: bold !important;
    text-shadow: 0 0 4px rgba(0,0,0,.35) !important;
    transform: none !important;
}
.user_button_profile:hover,
.main-responsive-header-actions .z-a:hover,
.main-responsive-header-actions .z-toolbarbutton:hover {
    background: transparent !important;
    color: #ffffff !important;
    transform: none !important;
}
.users_online_button,
.main-responsive-online-button,
.main-responsive-online-button .z-toolbarbutton-cnt {
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    color: #ffffff !important;
    font-size: 9px !important;
    font-weight: bold !important;
    line-height: 1.35 !important;
    text-shadow: 0 0 4px rgba(0,0,0,.35) !important;
}
.main-responsive-module-row,
.main-responsive-module-row .z-row-cnt,
.headerHbox.main-responsive-module-row {
    min-height: 34px !important;
    height: auto !important;
    background: transparent !important;
    border: 0 !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    white-space: nowrap !important;
}
.main-responsive-module-strip {
    text-align: right !important;
    padding: 0 8px 3px 8px !important;
    margin: 0 !important;
}
.main-responsive-module-row .z-toolbarbutton,
.main-responsive-module-row .z-toolbarbutton-body,
.main-responsive-module-row .z-toolbarbutton-cnt {
    display: inline-block !important;
    vertical-align: middle !important;
}
.main-responsive-module-row .z-toolbarbutton {
    margin: 2px 2px !important;
    border: 0 !important;
    border-radius: 4px !important;
    background: rgba(255,255,255,.08) !important;
    box-shadow: none !important;
    transform: none !important;
}
.main-responsive-module-row .z-toolbarbutton-cnt {
    padding: 4px 7px !important;
    color: #ffffff !important;
    font-size: 9px !important;
    font-weight: bold !important;
    line-height: 1.2 !important;
    text-shadow: 0 0 4px rgba(0,0,0,.28) !important;
}
.main-responsive-module-row .z-toolbarbutton:hover,
.main-responsive-module-row .z-toolbarbutton-over {
    background: rgba(255,255,255,.16) !important;
    box-shadow: none !important;
    transform: none !important;
}
.main-responsive-module-row img {
    max-width: 16px !important;
    max-height: 16px !important;
    margin-right: 3px !important;
    vertical-align: -3px !important;
}
.main-responsive-content-row,
.main-responsive-content-row > td.z-row-inner,
.main-responsive-content-row .z-row-cnt {
    background: #f5f8fa !important;
    border: 0 !important;
    padding: 0 !important;
}
.main-responsive-frame {
    background: #f5f8fa !important;
    min-height: 600px !important;
    border: 0 !important;
}
.main-responsive-frame .main-responsive-sidebar,
.main-responsive-frame .z-west.main-responsive-sidebar,
.navigasi {
    background: var(--ais-theme-primary-bg) !important;
}
.main-responsive-frame .main-responsive-center,
.main-responsive-frame .z-center.main-responsive-center,
.main-responsive-center .z-center-body {
    background: #f6f8fb !important;
    border: 0 !important;
    padding: 0 !important;
}
.main-responsive-tabbox,
.main-responsive-tabpanels,
.main-responsive-home-panel {
    background: #f6f8fb !important;
    border: 0 !important;
}
.main-responsive-home-panel,
.main-responsive-tabpanels .z-tabpanel {
    padding: 0 !important;
    overflow: auto !important;
}
.z-tabs .z-tabs-cnt,
.main-responsive-tabs .z-tabs-cnt {
    padding: 0 0 0 0 !important;
    background: transparent !important;
}
.z-tab-hl,
.z-tab-hr,
.z-tab-hm,
.z-tab-ver-hl,
.z-tab-ver-hr,
.z-tab-ver-hm {
    border-radius: 5px 5px 0 0 !important;
    box-shadow: none !important;
}
.z-tab .z-tab-text,
.z-tab-seld .z-tab-text {
    font-size: 12px !important;
    padding: 7px 11px !important;
}
.back_to_top {
    position: fixed !important;
    bottom: 15px !important;
    right: 20px !important;
    z-index: 9999 !important;
}
#customerService,
.customerService[id$="customerService"] {
    position: fixed !important;
    bottom: 15px !important;
    right: 75px !important;
    z-index: 9999 !important;
}
#menuService {
    position: fixed !important;
    bottom: 15px !important;
    left: 20px !important;
    z-index: 9999 !important;
}
@media screen and (max-width: 900px) {
    .main-responsive-header { min-height: 98px !important; }
    .title1, .main-responsive-header .title1 { font-size: 15px !important; }
    .motto, .main-responsive-header .motto { font-size: 10.5px !important; }
    .main-responsive-module-row .z-toolbarbutton-cnt { font-size: 9px !important; padding: 4px 6px !important; }
}

/* ==========================================================
   MAIN HEADER SHORTCUT BUTTON CONTRAST FIX
   Menjaga tombol shortcut utama tetap terbaca di atas header
   gradasi/biru tanpa memakai main-responsive-zk.css.
   ========================================================== */
#rowHeader2,
#rowHeader2 .z-row-cnt,
.main-responsive-module-row,
.main-responsive-module-strip {
    color: #ffffff !important;
}

#rowHeader2 .z-toolbarbutton,
#rowHeader2 .z-toolbarbutton-over,
#rowHeader2 .z-toolbarbutton-focus,
#rowHeader2 .z-toolbarbutton-selected,
.main-responsive-module-row .z-toolbarbutton,
.main-responsive-module-row .z-toolbarbutton-over,
.main-responsive-module-row .z-toolbarbutton-focus,
.main-responsive-module-row .z-toolbarbutton-selected,
.main-responsive-module-strip .z-toolbarbutton,
.main-responsive-module-strip .z-toolbarbutton-over,
.main-responsive-module-strip .z-toolbarbutton-focus,
.main-responsive-module-strip .z-toolbarbutton-selected {
    color: #ffffff !important;
    background: rgba(255, 255, 255, 0.10) !important;
    border: 1px solid rgba(255, 255, 255, 0.28) !important;
    border-radius: 7px !important;
    box-shadow: none !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45) !important;
}

#rowHeader2 .z-toolbarbutton-cnt,
#rowHeader2 .z-toolbarbutton-content,
#rowHeader2 .z-toolbarbutton-text,
#rowHeader2 .z-toolbarbutton .z-label,
#rowHeader2 .z-a,
#rowHeader2 a,
.main-responsive-module-row .z-toolbarbutton-cnt,
.main-responsive-module-row .z-toolbarbutton-content,
.main-responsive-module-row .z-toolbarbutton-text,
.main-responsive-module-row .z-toolbarbutton .z-label,
.main-responsive-module-row .z-a,
.main-responsive-module-row a,
.main-responsive-module-strip .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton-content,
.main-responsive-module-strip .z-toolbarbutton-text,
.main-responsive-module-strip .z-toolbarbutton .z-label,
.main-responsive-module-strip .z-a,
.main-responsive-module-strip a {
    color: #ffffff !important;
    font-weight: 800 !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.50) !important;
}

#rowHeader2 .z-toolbarbutton img,
.main-responsive-module-row .z-toolbarbutton img,
.main-responsive-module-strip .z-toolbarbutton img {
    opacity: 1 !important;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.45));
}

#rowHeader2 .z-toolbarbutton:hover,
#rowHeader2 .z-toolbarbutton-over,
.main-responsive-module-row .z-toolbarbutton:hover,
.main-responsive-module-row .z-toolbarbutton-over,
.main-responsive-module-strip .z-toolbarbutton:hover,
.main-responsive-module-strip .z-toolbarbutton-over {
    background: rgba(255, 255, 255, 0.18) !important;
    border-color: rgba(255, 255, 255, 0.55) !important;
}

#rowHeader2 .z-toolbarbutton:hover .z-toolbarbutton-cnt,
#rowHeader2 .z-toolbarbutton-over .z-toolbarbutton-cnt,
.main-responsive-module-row .z-toolbarbutton:hover .z-toolbarbutton-cnt,
.main-responsive-module-row .z-toolbarbutton-over .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton:hover .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton-over .z-toolbarbutton-cnt {
    color: #ffffff !important;
}

/* ==========================================================
   MAIN HEADER + SIDEBAR MENU REPAIR LAYER
   Fix setelah tombol shortcut dibuat putih:
   - Header utama jangan ikut menjadi putih/transparan.
   - Shortcut header tetap kontras tanpa merusak menu samping.
   - Icon background SVG pada menu samping tidak boleh repeat.
   ========================================================== */
.main-responsive-main-grid tr.headerHbox.main-responsive-header,
.main-responsive-main-grid tr.headerHbox.main-responsive-header > td.z-row-inner,
.main-responsive-main-grid tr.headerHbox.main-responsive-header > td.z-row-inner > .z-row-cnt,
.main-responsive-header,
.headerHbox.main-responsive-header {
    background: var(--ais-theme-primary-bg) !important;
    color: #ffffff !important;
}

.main-responsive-header .gridHeader.main-responsive-header-grid,
.main-responsive-header .gridHeader.main-responsive-header-grid > .z-grid-body,
.main-responsive-header .gridHeader.main-responsive-header-grid > .z-grid-body > table,
.main-responsive-header .gridHeader.main-responsive-header-grid .z-row-inner,
.main-responsive-header .gridHeader.main-responsive-header-grid .z-row-cnt,
.main-responsive-header .gridHeader.main-responsive-header-grid tr.z-row,
.main-responsive-header .gridHeader.main-responsive-header-grid tr.z-grid-odd,
.main-responsive-header .main-responsive-brand-box,
.main-responsive-header .main-responsive-header-right,
.main-responsive-header .main-responsive-header-actions {
    background: transparent !important;
    color: #ffffff !important;
}

.main-responsive-header .title1,
.main-responsive-header .motto,
.main-responsive-header .z-label,
.main-responsive-header .z-a,
.main-responsive-header a,
.main-responsive-header .fa,
.main-responsive-header .z-toolbarbutton-cnt,
.main-responsive-header .users_online_button,
.main-responsive-header .users_online_button .z-toolbarbutton-cnt,
.main-responsive-header .user_button_profile,
.main-responsive-header .user_button_profile .z-label {
    color: #ffffff !important;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.38) !important;
}

.main-responsive-main-grid tr.headerHbox.main-responsive-module-row,
.main-responsive-main-grid tr.headerHbox.main-responsive-module-row > td.z-row-inner,
.main-responsive-main-grid tr.headerHbox.main-responsive-module-row > td.z-row-inner > .z-row-cnt,
.headerHbox.main-responsive-module-row,
.main-responsive-module-row,
.main-responsive-module-strip {
    background: transparent !important;
    color: #ffffff !important;
}

.main-responsive-module-row .z-toolbarbutton,
.main-responsive-module-strip .z-toolbarbutton {
    background-color: rgba(255, 255, 255, 0.12) !important;
    border: 1px solid rgba(255, 255, 255, 0.28) !important;
    border-radius: 5px !important;
    color: #ffffff !important;
    margin: 3px 2px !important;
    box-shadow: none !important;
}

.main-responsive-module-row .z-toolbarbutton-body,
.main-responsive-module-strip .z-toolbarbutton-body,
.main-responsive-module-row .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton-cnt {
    background: transparent !important;
    color: #ffffff !important;
}

.main-responsive-module-row .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton-cnt,
.main-responsive-module-row .z-toolbarbutton-cnt span,
.main-responsive-module-strip .z-toolbarbutton-cnt span {
    color: #ffffff !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.50) !important;
}

.main-responsive-module-row .z-toolbarbutton:hover,
.main-responsive-module-row .z-toolbarbutton-over,
.main-responsive-module-strip .z-toolbarbutton:hover,
.main-responsive-module-strip .z-toolbarbutton-over {
    background-color: rgba(255, 255, 255, 0.22) !important;
    border-color: rgba(255, 255, 255, 0.50) !important;
    transform: none !important;
}

.main-responsive-module-row .z-toolbarbutton img,
.main-responsive-module-strip .z-toolbarbutton img {
    max-width: 16px !important;
    max-height: 16px !important;
    opacity: 1 !important;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.45));
}

/* Sidebar ZK menu root: cegah SVG/folder icon repeat yang membuat tampilan seperti banyak tanda >>>. */
.navigasi .z-menubar-ver .z-menu-btn,
.navigasi .z-menubar-ver .z-menu-item-btn {
    background-repeat: no-repeat !important;
    background-position: 8px center !important;
    background-size: 14px 14px !important;
    padding-left: 28px !important;
    padding-right: 8px !important;
    text-align: left !important;
    color: #ffffff !important;
    line-height: 24px !important;
    min-height: 24px !important;
    height: 24px !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.38) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.navigasi .z-menubar-ver .z-menu-body,
.navigasi .z-menubar-ver .z-menu-item-body {
    background-image: none !important;
    background-color: rgba(255, 255, 255, 0.06) !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 4px !important;
    margin: 2px 4px !important;
    width: auto !important;
}

.navigasi .z-menubar-ver .z-menu-body:hover,
.navigasi .z-menubar-ver .z-menu-body-over,
.navigasi .z-menubar-ver .z-menu-item-body:hover,
.navigasi .z-menubar-ver .z-menu-item-body-over,
.navigasi .z-menubar-ver .z-menu-over .z-menu-body,
.navigasi .z-menubar-ver .z-menu-item-over .z-menu-item-body {
    background-color: rgba(255, 255, 255, 0.16) !important;
    border-color: rgba(255, 255, 255, 0.32) !important;
}

.navigasi .z-menu-space,
.navigasi .z-menu-item-space {
    width: 0 !important;
    display: none !important;
}

.navigasi .z-menu-inner-l,
.navigasi .z-menu-inner-r,
.navigasi .z-menu-item-inner-l,
.navigasi .z-menu-item-inner-r {
    width: 0 !important;
    padding: 0 !important;
    background: transparent !important;
}

.navigasi .z-menu-inner-m,
.navigasi .z-menu-item-inner-m {
    background: transparent !important;
    padding: 0 !important;
}

.z-menu-popup .z-menu-img,
.z-menu-popup .z-menu-item-img,
.z-menu-popup .z-menu-cnt,
.z-menu-popup .z-menu-item-cnt {
    background-repeat: no-repeat !important;
}

/* Menu alignment repair for legacy ZK shell. */
#rowHeader2,
#rowHeader2 .z-row-cnt,
.main-responsive-module-row,
.main-responsive-module-row .z-row-cnt,
.main-responsive-module-strip {
    text-align: left !important;
}

.main-responsive-module-strip table,
.main-responsive-module-strip tbody,
.main-responsive-module-strip tr,
.main-responsive-module-strip td,
.main-responsive-module-row .z-hbox,
.main-responsive-module-row .z-hbox tbody,
.main-responsive-module-row .z-hbox tr,
.main-responsive-module-row .z-hbox td {
    margin-left: 0 !important;
    margin-right: auto !important;
    text-align: left !important;
}

#rowHeader2 .z-toolbarbutton,
.main-responsive-module-row .z-toolbarbutton,
.main-responsive-module-strip .z-toolbarbutton {
    display: inline-block !important;
    min-height: 26px !important;
    height: auto !important;
    margin: 3px 3px !important;
    vertical-align: middle !important;
}

#rowHeader2 .z-toolbarbutton-body,
#rowHeader2 .z-toolbarbutton-cnt,
.main-responsive-module-row .z-toolbarbutton-body,
.main-responsive-module-row .z-toolbarbutton-cnt,
.main-responsive-module-strip .z-toolbarbutton-body,
.main-responsive-module-strip .z-toolbarbutton-cnt {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 4px !important;
    min-height: 22px !important;
    line-height: 1.2 !important;
    text-align: left !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
}

#rowHeader2 .z-toolbarbutton-cnt img,
.main-responsive-module-row .z-toolbarbutton-cnt img,
.main-responsive-module-strip .z-toolbarbutton-cnt img {
    flex: 0 0 auto !important;
    margin: 0 2px 0 0 !important;
    vertical-align: middle !important;
}

.navigasi .z-menubar-ver,
.navigasi .z-menubar-ver table,
.navigasi .z-menubar-ver tbody,
.navigasi .z-menubar-ver tr,
.navigasi .z-menubar-ver td {
    width: 100% !important;
    text-align: left !important;
}

.navigasi .z-menubar-ver .z-menu-body,
.navigasi .z-menubar-ver .z-menu-item-body {
    display: block !important;
    width: auto !important;
    text-align: left !important;
}

.navigasi .z-menubar-ver .z-menu-btn,
.navigasi .z-menubar-ver .z-menu-item-btn,
.navigasi .z-menubar-ver .z-menu-cnt,
.navigasi .z-menubar-ver .z-menu-item-cnt,
.navigasi .z-menubar-ver .z-menu-inner-m div,
.navigasi .z-menubar-ver .z-menu-item-inner-m div {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.navigasi .z-menubar-ver .z-menu-inner-m div,
.navigasi .z-menubar-ver .z-menu-item-inner-m div {
    background-repeat: no-repeat !important;
    background-position: 7px center !important;
    background-size: 12px 12px !important;
    padding-left: 24px !important;
    padding-right: 8px !important;
}

/* ======================================================================
   AIS SIDEBAR MENU COMPACT & UNIFORM POPUP FIX
   Tujuan:
   - Main menu kiri tidak terlalu renggang.
   - Tombol menu tetap full-width, rata kiri, dan tidak ikut style global button.
   - Sub menu / nested sub menu seragam dengan sidebar, bukan putih berbeda-beda.
   ====================================================================== */
.navigasi .z-menubar-ver,
.navigasi .z-menubar-ver table,
.navigasi .z-menubar-ver tbody {
    border-collapse: collapse !important;
    border-spacing: 0 !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver tr,
.navigasi .z-menubar-ver td,
.navigasi .z-menubar-ver td.menu_item,
.navigasi .z-menubar-ver .menu_item {
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.15 !important;
    padding-top: 1px !important;
    padding-bottom: 1px !important;
    background: transparent !important;
    border: 0 !important;
}

.navigasi .z-menubar-ver td.menu_item,
.navigasi .z-menubar-ver td.z-menu,
.navigasi .z-menubar-ver td.z-menu-item {
    padding-left: 5px !important;
    padding-right: 5px !important;
}

.navigasi .z-menubar-ver .z-menu-body,
.navigasi .z-menubar-ver .z-menu-item-body {
    display: table !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 1px 0 !important;
    padding: 0 !important;
    background: rgba(8, 43, 101, 0.78) !important;
    background-image: none !important;
    border: 1px solid rgba(255, 255, 255, 0.18) !important;
    border-radius: 5px !important;
    box-shadow: none !important;
    overflow: hidden !important;
}

.navigasi .z-menubar-ver .z-menu-body:hover,
.navigasi .z-menubar-ver .z-menu-body-over,
.navigasi .z-menubar-ver .z-menu-over .z-menu-body,
.navigasi .z-menubar-ver .z-menu-item-body:hover,
.navigasi .z-menubar-ver .z-menu-item-body-over,
.navigasi .z-menubar-ver .z-menu-item-over .z-menu-item-body {
    background: rgba(21, 96, 167, 0.92) !important;
    border-color: rgba(255, 255, 255, 0.36) !important;
}

.navigasi .z-menubar-ver .z-menu-inner-l,
.navigasi .z-menubar-ver .z-menu-inner-r,
.navigasi .z-menubar-ver .z-menu-item-inner-l,
.navigasi .z-menubar-ver .z-menu-item-inner-r,
.navigasi .z-menubar-ver .z-menu-space,
.navigasi .z-menubar-ver .z-menu-item-space {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver .z-menu-inner-m,
.navigasi .z-menubar-ver .z-menu-item-inner-m {
    display: table-cell !important;
    width: 100% !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver .z-menu-inner-m > div,
.navigasi .z-menubar-ver .z-menu-item-inner-m > div {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    overflow: hidden !important;
}

.navigasi .z-menubar-ver .z-menu-btn,
.navigasi .z-menubar-ver .z-menu-item-btn {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 24px !important;
    min-height: 24px !important;
    line-height: 24px !important;
    margin: 0 !important;
    padding: 0 8px 0 25px !important;
    box-sizing: border-box !important;
    border: 0 !important;
    border-radius: 4px !important;
    background-color: transparent !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 16 16'%3E%3Cpath fill='%23ffffff' d='M6.2 3.1a.75.75 0 0 1 1.06 0l4.37 4.37a.75.75 0 0 1 0 1.06L7.26 12.9a.75.75 0 1 1-1.06-1.06L10.04 8 6.2 4.16a.75.75 0 0 1 0-1.06z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: 8px center !important;
    background-size: 13px 13px !important;
    color: #ffffff !important;
    cursor: pointer !important;
    font-family: var(--ais-font) !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    text-align: left !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    box-shadow: none !important;
    transform: none !important;
}

/* Popup menu dibuat seragam dengan main menu kiri. */
.z-menu-popup,
.z-menu-popup .z-menu-popup-cnt {
    background: var(--ais-theme-primary-bg) !important;
    border: 1px solid rgba(255, 255, 255, 0.28) !important;
    border-radius: 8px !important;
    box-shadow: 0 12px 26px rgba(15, 23, 42, 0.28) !important;
    padding: 4px !important;
    margin: 0 !important;
    overflow: hidden !important;
    min-width: 215px !important;
}

.z-menu-popup .z-menu-popup-cnt,
.z-menu-popup .z-menu-popup-cnt ul,
.z-menu-popup .z-menu-popup-cnt li,
.z-menu-popup .z-menu-popup-cnt .menu_item,
.z-menu-popup .z-menu,
.z-menu-popup .z-menu-item {
    background: transparent !important;
    border: 0 !important;
    color: #ffffff !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.z-menu-popup .z-menu-cl,
.z-menu-popup .z-menu-cr,
.z-menu-popup .z-menu-cm,
.z-menu-popup .z-menu-item-cl,
.z-menu-popup .z-menu-item-cr,
.z-menu-popup .z-menu-item-cm {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}

.z-menu-popup .z-menu-cnt,
.z-menu-popup .z-menu-item-cnt,
.z-menu-popup-cnt .z-menu a.z-menu-cnt,
.z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt {
    display: block !important;
    min-height: 27px !important;
    line-height: 27px !important;
    padding: 0 10px 0 28px !important;
    margin: 1px 0 !important;
    box-sizing: border-box !important;
    background: rgba(255, 255, 255, 0.10) !important;
    border: 1px solid rgba(255, 255, 255, 0.20) !important;
    border-radius: 5px !important;
    color: #ffffff !important;
    font-family: var(--ais-font) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    text-align: left !important;
    text-decoration: none !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.30) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.z-menu-popup .z-menu-over > .z-menu-cl > .z-menu-cr > .z-menu-cm > .z-menu-cnt,
.z-menu-popup .z-menu-item-over > .z-menu-item-cl > .z-menu-item-cr > .z-menu-item-cm > .z-menu-item-cnt,
.z-menu-popup-cnt .z-menu-over a.z-menu-cnt,
.z-menu-popup-cnt .z-menu-item-over a.z-menu-item-cnt,
.z-menu-popup .z-menu-cnt:hover,
.z-menu-popup .z-menu-item-cnt:hover {
    background: rgba(255, 255, 255, 0.22) !important;
    border-color: rgba(255, 255, 255, 0.40) !important;
    color: #ffffff !important;
}

.z-menu-popup .z-menu-img,
.z-menu-popup .z-menu-item-img {
    width: 14px !important;
    height: 14px !important;
    margin-left: -20px !important;
    margin-right: 6px !important;
    vertical-align: -2px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 16 16'%3E%3Cpath fill='%23ffffff' d='M6.2 3.1a.75.75 0 0 1 1.06 0l4.37 4.37a.75.75 0 0 1 0 1.06L7.26 12.9a.75.75 0 1 1-1.06-1.06L10.04 8 6.2 4.16a.75.75 0 0 1 0-1.06z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-size: 13px 13px !important;
}

.z-menu-popup .z-focus-a {
    height: 0 !important;
    width: 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
}

/* ======================================================================
   AIS SIDEBAR MENU FINAL TUNING V2
   Fokus:
   - Menu kiri tidak melayang / tidak berubah ukuran saat hover.
   - Jarak antar menu proporsional dan konsisten.
   - Popup submenu level pertama dekat dengan tepi sidebar.
   - Batas antar menu lebih tipis dan warna submenu seragam.
   ====================================================================== */
.navigasi .z-menubar-ver {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow: visible !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver > table,
.navigasi .z-menubar-ver > table > tbody {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    border-spacing: 0 !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver > table > tbody > tr,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu-item {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 27px !important;
    min-height: 27px !important;
    max-height: 27px !important;
    line-height: 27px !important;
    padding: 0 4px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    background: transparent !important;
    border: 0 !important;
    overflow: visible !important;
}

.navigasi .z-menubar-ver > table > tbody > tr + tr {
    margin-top: 1px !important;
}

.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > a > table.z-menu-item-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu-item > a > table.z-menu-item-body {
    display: table !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 25px !important;
    min-height: 25px !important;
    max-height: 25px !important;
    margin: 0 !important;
    padding: 0 !important;
    table-layout: fixed !important;
    box-sizing: border-box !important;
    background: rgba(10, 49, 104, 0.84) !important;
    background-image: none !important;
    border: 1px solid rgba(255, 255, 255, 0.12) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
    overflow: hidden !important;
}

.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > table.z-menu-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-over > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-body-clk > table.z-menu-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > a > table.z-menu-item-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-item-over > a > table.z-menu-item-body {
    height: 25px !important;
    min-height: 25px !important;
    max-height: 25px !important;
    background: rgba(22, 82, 150, 0.92) !important;
    border: 1px solid rgba(255, 255, 255, 0.20) !important;
    border-radius: 4px !important;
    box-shadow: none !important;
    transform: none !important;
}

.navigasi .z-menubar-ver .z-menu-body > tbody,
.navigasi .z-menubar-ver .z-menu-body > tbody > tr,
.navigasi .z-menubar-ver .z-menu-item-body > tbody,
.navigasi .z-menubar-ver .z-menu-item-body > tbody > tr {
    height: 25px !important;
    max-height: 25px !important;
}

.navigasi .z-menubar-ver .z-menu-inner-m,
.navigasi .z-menubar-ver .z-menu-item-inner-m {
    display: table-cell !important;
    width: 100% !important;
    height: 25px !important;
    line-height: 25px !important;
    padding: 0 !important;
    margin: 0 !important;
    vertical-align: middle !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver .z-menu-inner-l,
.navigasi .z-menubar-ver .z-menu-inner-r,
.navigasi .z-menubar-ver .z-menu-item-inner-l,
.navigasi .z-menubar-ver .z-menu-item-inner-r,
.navigasi .z-menubar-ver .z-menu-space,
.navigasi .z-menubar-ver .z-menu-item-space {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
}

.navigasi .z-menubar-ver .z-menu-inner-m > div,
.navigasi .z-menubar-ver .z-menu-item-inner-m > div {
    display: block !important;
    position: relative !important;
    width: 100% !important;
    height: 25px !important;
    line-height: 25px !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    overflow: visible !important;
}

.navigasi .z-menubar-ver button.z-menu-btn,
.navigasi .z-menubar-ver button.z-menu-item-btn {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 25px !important;
    min-height: 25px !important;
    max-height: 25px !important;
    line-height: 25px !important;
    padding: 0 8px 0 24px !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    border: 0 !important;
    border-radius: 3px !important;
    background-color: transparent !important;
    background-repeat: no-repeat !important;
    background-position: 8px center !important;
    background-size: 12px 12px !important;
    color: #ffffff !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    cursor: pointer !important;
    box-shadow: none !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.30) !important;
    transform: none !important;
}

.navigasi .z-menubar-ver button.z-menu-btn:hover,
.navigasi .z-menubar-ver button.z-menu-item-btn:hover,
.navigasi .z-menubar-ver .z-menu-over button.z-menu-btn,
.navigasi .z-menubar-ver .z-menu-item-over button.z-menu-item-btn {
    height: 25px !important;
    line-height: 25px !important;
    padding: 0 8px 0 24px !important;
    margin: 0 !important;
    border: 0 !important;
    background-color: transparent !important;
    color: #ffffff !important;
    box-shadow: none !important;
    transform: none !important;
}

/* Popup level pertama harus muncul dekat dengan sidebar, bukan mengikuti lebar text menu. */
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > table.z-menu-body .z-menu-inner-m > div > .z-menu-popup,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu > table.z-menu-body .z-menu-inner-m > div > .z-menu-popup {
    left: 248px !important;
}

/* Submenu: warna seragam, border tipis, dan tinggi lebih proporsional. */
.z-menu-popup,
.z-menu-popup .z-menu-popup-cnt {
    background: rgba(15, 55, 112, 0.98) !important;
    background-image: none !important;
    border: 1px solid rgba(255, 255, 255, 0.18) !important;
    border-radius: 7px !important;
    box-shadow: 0 10px 22px rgba(15, 23, 42, 0.22) !important;
    padding: 3px !important;
    min-width: 218px !important;
    overflow: visible !important;
}

.z-menu-popup .z-menu-cnt,
.z-menu-popup .z-menu-item-cnt,
.z-menu-popup-cnt .z-menu a.z-menu-cnt,
.z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt {
    min-height: 25px !important;
    height: 25px !important;
    line-height: 25px !important;
    margin: 1px 0 !important;
    padding: 0 10px 0 28px !important;
    background: rgba(255, 255, 255, 0.08) !important;
    border: 1px solid rgba(255, 255, 255, 0.13) !important;
    border-radius: 4px !important;
    color: #ffffff !important;
    font-size: 12px !important;
    font-weight: 750 !important;
    box-shadow: none !important;
}

.z-menu-popup .z-menu-cnt:hover,
.z-menu-popup .z-menu-item-cnt:hover,
.z-menu-popup .z-menu-over > .z-menu-cl > .z-menu-cr > .z-menu-cm > .z-menu-cnt,
.z-menu-popup .z-menu-item-over > .z-menu-item-cl > .z-menu-item-cr > .z-menu-item-cm > .z-menu-item-cnt {
    height: 25px !important;
    line-height: 25px !important;
    background: rgba(255, 255, 255, 0.16) !important;
    border-color: rgba(255, 255, 255, 0.22) !important;
    color: #ffffff !important;
    box-shadow: none !important;
    transform: none !important;
}

.z-menu-popup .z-menu-img,
.z-menu-popup .z-menu-item-img {
    width: 12px !important;
    height: 12px !important;
    margin-left: -19px !important;
    margin-right: 6px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-size: 12px 12px !important;
    vertical-align: -2px !important;
}

/* ======================================================================
   AIS SIDEBAR MENU POLISH V3 - border tipis + search form rapi
   Patch lanjutan untuk ZK 5.x menu kiri. Tidak memakai main-responsive-zk.css.
   ====================================================================== */

/* Border antar menu dibuat lebih halus agar tidak terlihat terlalu tebal. */
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > a > table.z-menu-item-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.z-menu-item > a > table.z-menu-item-body {
    border: 1px solid rgba(255, 255, 255, 0.075) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.055) !important;
}

.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > table.z-menu-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-over > table.z-menu-body,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-body-clk > table.z-menu-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item > a > table.z-menu-item-body:hover,
.navigasi .z-menubar-ver > table > tbody > tr > td.menu_item.z-menu-item-over > a > table.z-menu-item-body {
    border: 1px solid rgba(255, 255, 255, 0.13) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.075) !important;
}

.z-menu-popup .z-menu-cnt,
.z-menu-popup .z-menu-item-cnt,
.z-menu-popup-cnt .z-menu a.z-menu-cnt,
.z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt {
    border: 1px solid rgba(255, 255, 255, 0.075) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.045) !important;
}

.z-menu-popup .z-menu-cnt:hover,
.z-menu-popup .z-menu-item-cnt:hover,
.z-menu-popup .z-menu-over > .z-menu-cl > .z-menu-cr > .z-menu-cm > .z-menu-cnt,
.z-menu-popup .z-menu-item-over > .z-menu-item-cl > .z-menu-item-cr > .z-menu-item-cm > .z-menu-item-cnt {
    border-color: rgba(255, 255, 255, 0.14) !important;
}

/* Search area di atas menu: hilangkan efek belang row grid dan buat seperti search bar. */
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child > td.z-row-inner,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-row-cnt {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox > tbody,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox > tbody > tr,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox td {
    background: transparent !important;
    border: 0 !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox {
    width: 100% !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-hbox > tbody > tr > td:first-child {
    padding: 5px 8px 6px 10px !important;
    box-sizing: border-box !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child input.z-textbox,
.navigasi input.z-textbox.cari_menu,
.navigasi .cari_menu.z-textbox {
    width: 156px !important;
    max-width: 156px !important;
    height: 25px !important;
    min-height: 25px !important;
    line-height: 25px !important;
    margin: 0 !important;
    padding: 3px 8px !important;
    box-sizing: border-box !important;
    background: rgba(255, 255, 255, 0.96) !important;
    border: 1px solid rgba(255, 255, 255, 0.62) !important;
    border-radius: 5px !important;
    color: #0f172a !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.08), 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child input.z-textbox:focus,
.navigasi input.z-textbox.cari_menu:focus,
.navigasi .cari_menu.z-textbox:focus {
    border-color: rgba(125, 211, 252, 0.95) !important;
    box-shadow: 0 0 0 2px rgba(125, 211, 252, 0.25), inset 0 1px 2px rgba(15, 23, 42, 0.08) !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton {
    width: 28px !important;
    height: 25px !important;
    min-height: 25px !important;
    margin: 0 0 0 4px !important;
    padding: 0 !important;
    border: 1px solid rgba(255, 255, 255, 0.12) !important;
    border-radius: 5px !important;
    background: rgba(255, 255, 255, 0.12) !important;
    box-shadow: none !important;
    vertical-align: middle !important;
    transform: none !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton:hover,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton-over {
    background: rgba(255, 255, 255, 0.20) !important;
    border-color: rgba(255, 255, 255, 0.22) !important;
    box-shadow: none !important;
    transform: none !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton-body,
.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton-cnt {
    width: 28px !important;
    height: 25px !important;
    line-height: 25px !important;
    padding: 0 !important;
    margin: 0 !important;
    text-align: center !important;
    background: transparent !important;
    border: 0 !important;
}

.navigasi .z-grid-body > table > tbody.z-rows > tr:first-child .z-toolbarbutton img {
    width: 15px !important;
    height: 15px !important;
    max-width: 15px !important;
    max-height: 15px !important;
    margin: 4px 0 0 0 !important;
    vertical-align: top !important;
    opacity: 0.92 !important;
    filter: none !important;
}

/* ======================================================================
   AIS HEADER MODULE STRIP SCROLLBAR FIX V4
   Saat lebar layar kecil, browser menampilkan horizontal scrollbar pada
   bar shortcut modul sehingga terlihat seperti progress bar. Scroll tetap
   aktif, tetapi indikator scrollbar disembunyikan agar header tetap bersih.
   ====================================================================== */
.headerHbox.main-responsive-module-row,
.main-responsive-module-row,
.headerHbox.main-responsive-module-row .z-row-cnt,
.main-responsive-module-row .z-row-cnt,
.headerHbox.main-responsive-module-row .main-responsive-module-strip,
.main-responsive-module-row .main-responsive-module-strip,
.headerHbox.main-responsive-module-row .main-responsive-module-strip table,
.main-responsive-module-row .main-responsive-module-strip table {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -ms-overflow-style: none !important;
    scrollbar-width: none !important;
}

.headerHbox.main-responsive-module-row::-webkit-scrollbar,
.main-responsive-module-row::-webkit-scrollbar,
.headerHbox.main-responsive-module-row .z-row-cnt::-webkit-scrollbar,
.main-responsive-module-row .z-row-cnt::-webkit-scrollbar,
.headerHbox.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar,
.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar,
.headerHbox.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar,
.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
    background: transparent !important;
}

.headerHbox.main-responsive-module-row::-webkit-scrollbar-track,
.main-responsive-module-row::-webkit-scrollbar-track,
.headerHbox.main-responsive-module-row .z-row-cnt::-webkit-scrollbar-track,
.main-responsive-module-row .z-row-cnt::-webkit-scrollbar-track,
.headerHbox.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar-track,
.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar-track,
.headerHbox.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar-track,
.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar-track,
.headerHbox.main-responsive-module-row::-webkit-scrollbar-thumb,
.main-responsive-module-row::-webkit-scrollbar-thumb,
.headerHbox.main-responsive-module-row .z-row-cnt::-webkit-scrollbar-thumb,
.main-responsive-module-row .z-row-cnt::-webkit-scrollbar-thumb,
.headerHbox.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar-thumb,
.main-responsive-module-row .main-responsive-module-strip::-webkit-scrollbar-thumb,
.headerHbox.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar-thumb,
.main-responsive-module-row .main-responsive-module-strip table::-webkit-scrollbar-thumb {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
    background: transparent !important;
    border: 0 !important;
}

/* Tinggi bar shortcut distabilkan agar area kosong bekas scrollbar tidak tampak. */
.headerHbox.main-responsive-module-row,
.main-responsive-module-row {
    min-height: 32px !important;
    height: 32px !important;
    max-height: 32px !important;
    padding: 0 !important;
}

.headerHbox.main-responsive-module-row .z-row-cnt,
.main-responsive-module-row .z-row-cnt,
.headerHbox.main-responsive-module-row .main-responsive-module-strip,
.main-responsive-module-row .main-responsive-module-strip,
.headerHbox.main-responsive-module-row .main-responsive-module-strip > tbody > tr > td,
.main-responsive-module-row .main-responsive-module-strip > tbody > tr > td {
    height: 32px !important;
    max-height: 32px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.headerHbox.main-responsive-module-row .z-toolbarbutton,
.main-responsive-module-row .z-toolbarbutton {
    margin-top: 3px !important;
    margin-bottom: 3px !important;
}

/* ======================================================================
   AIS ZK55 PICKER BUTTON VISIBILITY FIX V9
   Menampilkan kembali icon dropdown/picker pada combobox, bandbox,
   datebox, timebox, spinner, dan doublespinner. Pada ZK 5.x tombol picker
   dirender sebagai elemen <i class="z-bandbox-btn"></i> / sejenisnya;
   beberapa theme lama membuat background icon tidak terlihat.
   ====================================================================== */
.z-combobox,
.z-bandbox,
.z-datebox,
.z-timebox,
.z-spinner,
.z-doublespinner,
.z-combobox-rounded,
.z-bandbox-rounded,
.z-datebox-rounded,
.z-timebox-rounded,
.z-spinner-rounded,
.z-doublespinner-rounded {
    display: inline-flex !important;
    align-items: stretch !important;
    vertical-align: middle !important;
    box-sizing: border-box !important;
    max-width: 100% !important;
    white-space: nowrap !important;
}

.z-combobox-inp,
.z-bandbox-inp,
.z-datebox-inp,
.z-timebox-inp,
.z-spinner-inp,
.z-doublespinner-inp,
.z-combobox-rounded-inp,
.z-bandbox-rounded-inp,
.z-datebox-rounded-inp,
.z-timebox-rounded-inp,
.z-spinner-rounded-inp,
.z-doublespinner-rounded-inp {
    min-height: 22px !important;
    height: 22px !important;
    line-height: 18px !important;
    box-sizing: border-box !important;
    border-radius: 5px 0 0 5px !important;
    border-right: 0 !important;
    background-color: rgba(255, 255, 255, 0.92) !important;
}

.z-combobox .z-combobox-btn,
.z-bandbox .z-bandbox-btn,
.z-datebox .z-datebox-btn,
.z-timebox .z-timebox-btn,
.z-spinner .z-spinner-btn,
.z-doublespinner .z-doublespinner-btn,
.z-combobox-rounded .z-combobox-rounded-btn,
.z-bandbox-rounded .z-bandbox-rounded-btn,
.z-datebox-rounded .z-datebox-rounded-btn,
.z-timebox-rounded .z-timebox-rounded-btn,
.z-spinner-rounded .z-spinner-rounded-btn,
.z-doublespinner-rounded .z-doublespinner-rounded-btn {
    display: inline-block !important;
    visibility: visible !important;
    opacity: 1 !important;
    width: 22px !important;
    min-width: 22px !important;
    height: 22px !important;
    min-height: 22px !important;
    line-height: 22px !important;
    padding: 0 !important;
    margin: 0 !important;
    box-sizing: border-box !important;
    cursor: pointer !important;
    vertical-align: top !important;
    overflow: hidden !important;
    border: 1px solid #bfd0e3 !important;
    border-left: 0 !important;
    border-radius: 0 5px 5px 0 !important;
    background-color: #eef5ff !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-size: 11px 11px !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.70) !important;
}

.z-combobox .z-combobox-btn,
.z-bandbox .z-bandbox-btn,
.z-timebox .z-timebox-btn,
.z-combobox-rounded .z-combobox-rounded-btn,
.z-bandbox-rounded .z-bandbox-rounded-btn,
.z-timebox-rounded .z-timebox-rounded-btn {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%230f172a' d='M3.2 5.7a1 1 0 0 1 1.4 0L8 9.1l3.4-3.4a1 1 0 0 1 1.4 1.4l-4.1 4.1a1 1 0 0 1-1.4 0L3.2 7.1a1 1 0 0 1 0-1.4z'/%3E%3C/svg%3E") !important;
}

.z-datebox .z-datebox-btn,
.z-datebox-rounded .z-datebox-rounded-btn {
    background-size: 13px 13px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%230f172a' d='M4 1a1 1 0 0 1 1 1v1h6V2a1 1 0 1 1 2 0v1h1a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h1V2a1 1 0 0 1 1-1zm10 6H2v6h12V7z'/%3E%3C/svg%3E") !important;
}

.z-spinner .z-spinner-btn,
.z-doublespinner .z-doublespinner-btn,
.z-spinner-rounded .z-spinner-rounded-btn,
.z-doublespinner-rounded .z-doublespinner-rounded-btn,
.z-timebox .z-timebox-btn-upper,
.z-spinner .z-spinner-btn-upper,
.z-doublespinner .z-doublespinner-btn-upper {
    background-size: 10px 10px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%230f172a' d='M8 4l4 5H4l4-5z'/%3E%3C/svg%3E") !important;
}

.z-timebox .z-timebox-btn-lower,
.z-spinner .z-spinner-btn-lower,
.z-doublespinner .z-doublespinner-btn-lower {
    background-size: 10px 10px !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%230f172a' d='M8 12L4 7h8l-4 5z'/%3E%3C/svg%3E") !important;
}

.z-combobox .z-combobox-btn:hover,
.z-bandbox .z-bandbox-btn:hover,
.z-datebox .z-datebox-btn:hover,
.z-timebox .z-timebox-btn:hover,
.z-spinner .z-spinner-btn:hover,
.z-doublespinner .z-doublespinner-btn:hover,
.z-combobox .z-combobox-btn-over,
.z-bandbox .z-bandbox-btn-over,
.z-datebox .z-datebox-btn-over,
.z-timebox .z-timebox-btn-over,
.z-spinner .z-spinner-btn-over,
.z-doublespinner .z-doublespinner-btn-over {
    background-color: #dbeafe !important;
    border-color: #93c5fd !important;
}

.z-bandbox .z-bandbox-inp,
.z-combobox .z-combobox-inp,
.z-datebox .z-datebox-inp {
    max-width: calc(100% - 22px) !important;
}

/* ======================================================================
   Enhancement tampilan header & sidebar (patch 2026-06-11)
   1) Logo dan judul dirapatkan secara proporsional
   2) Info & profil di kanan dirapikan
   3) Border antar menu sidebar dibuat sangat tipis
   4) Module strip (e-Learning..Info Kegiatan) rata kiri
   ====================================================================== */

/* (1) Brand: logo + title */
.main-responsive-brand-box {
    align-items: center !important;
    padding-left: 10px !important;
}
.main-responsive-brand-box > .z-image,
.main-responsive-brand-box > img {
    margin-right: 8px !important;
}
.main-responsive-brand-text {
    line-height: 1.1 !important;
}
.main-responsive-brand-text .title1 {
    margin: 0 !important;
    padding: 0 !important;
}
.main-responsive-brand-text .motto {
    margin: 0 !important;
    padding: 0 !important;
}

/* (2) Header kanan: info + profile + akses, dirapikan sebagai stack rapi */
.main-responsive-header-right {
    padding-right: 12px !important;
    gap: 4px !important;
}
.main-responsive-header-right #headerHboxButton {
    display: inline-flex !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 6px !important;
    width: auto !important;
    margin-left: auto !important;
}
.main-responsive-header-right #headerHboxButton .z-toolbarbutton,
.main-responsive-header-right #headerHboxButton .user_button_profile {
    margin: 0 !important;
    padding: 4px 12px !important;
    font-size: 12px !important;
    white-space: nowrap !important;
    line-height: 1.3 !important;
    border-radius: 999px !important;
}
.main-responsive-header-right .users_online_button,
.main-responsive-header-right .main-responsive-online-button {
    margin-top: 2px !important;
    padding: 3px 10px !important;
    font-size: 11px !important;
    line-height: 1.3 !important;
    text-align: right !important;
    border-radius: 999px !important;
    background: rgba(255,255,255,.14) !important;
    border: 1px solid rgba(255,255,255,.22) !important;
    color: #fff !important;
}

/* (3) Tipiskan border antar item menu sidebar */
.navigasi tr.z-treerow td.z-treecell,
.main-responsive-sidebar tr.z-treerow td.z-treecell {
    border-bottom: 1px solid rgba(255, 255, 255, .06) !important;
}
.navigasi tr.z-row td.z-row-inner,
.navigasi tr.z-row .z-cell,
.main-responsive-sidebar tr.z-row td.z-row-inner,
.main-responsive-sidebar tr.z-row .z-cell {
    border-bottom: 1px solid rgba(255, 255, 255, .06) !important;
}
.navigasi tr.z-row:last-child td.z-row-inner,
.navigasi tr.z-treerow:last-child td.z-treecell,
.main-responsive-sidebar tr.z-row:last-child td.z-row-inner,
.main-responsive-sidebar tr.z-treerow:last-child td.z-treecell {
    border-bottom: 0 !important;
}

/* ======================================================================
   Messagebox / dialog konfirmasi bawaan ZK (Pertanyaan, Informasi, dst).
   Modernisasi konten + tombol OK/Cancel (struktur tabel 3x3 ZK 5 diratakan).
   ====================================================================== */
.z-window-highlighted-cnt {
    padding: 16px 18px 14px 18px !important;
    background: #ffffff !important;
}

/* Ikon question/info/warning diberi napas */
.z-msgbox {
    margin: 2px 12px 0 0 !important;
}

/* Teks pesan */
.z-messagebox {
    padding: 0 !important;
}

.z-messagebox .z-label {
    font-size: 12.5px !important;
    line-height: 1.65 !important;
    color: #334155 !important;
}

/* Pemisah antara pesan dan tombol */
.z-window-highlighted-cnt .z-separator-hor-bar {
    background: transparent !important;
    border: 0 !important;
    border-top: 1px solid #eef2f7 !important;
    margin: 12px 0 10px 0 !important;
    height: 0 !important;
    overflow: hidden !important;
}

/* Tombol messagebox: ratakan tabel slice 3x3 menjadi tombol pill modern */
.z-messagebox-btn .z-button-tl,
.z-messagebox-btn .z-button-tm,
.z-messagebox-btn .z-button-tr,
.z-messagebox-btn .z-button-cl,
.z-messagebox-btn .z-button-cr,
.z-messagebox-btn .z-button-bl,
.z-messagebox-btn .z-button-bm,
.z-messagebox-btn .z-button-br {
    background: none !important;
    border: 0 !important;
    padding: 0 !important;
    width: 0 !important;
    height: 0 !important;
    font-size: 0 !important;
    line-height: 0 !important;
}

.z-messagebox-btn {
    display: inline-block !important;
    margin: 0 4px !important;
}

.z-messagebox-btn .z-button-cm {
    display: inline-block !important;
    min-width: 84px !important;
    padding: 7px 20px !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    border: 1px solid #cbd5e1 !important;
    color: #475569 !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    text-align: center !important;
    cursor: pointer !important;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .08) !important;
}

.z-messagebox-btn:hover .z-button-cm {
    border-color: #94a3b8 !important;
    background: #f8fafc !important;
}

/* Tombol pertama (OK/Yes) = aksi utama, warna tema */
.z-window-highlighted td:first-child > .z-messagebox-btn .z-button-cm,
.z-window-modal td:first-child > .z-messagebox-btn .z-button-cm {
    background: var(--ais-theme-primary, #0c71c3) !important;
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    color: #ffffff !important;
    box-shadow: 0 4px 12px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
}

.z-window-highlighted td:first-child > .z-messagebox-btn:hover .z-button-cm,
.z-window-modal td:first-child > .z-messagebox-btn:hover .z-button-cm {
    filter: brightness(1.08);
}

/* ======================================================================
   E-Learning Portallayout (TampilanELearningAction.initPortalRootLayout)
   3 panel modern: Perkuliahan | Aktivitas Pembelajaran | Tugas-Ujian-Materi.
   ====================================================================== */
/* Shell = satu-satunya scroller halaman e-learning.
   height tidak memakai !important agar JS (pasangAutoFitTinggiPortal)
   bisa memaskan tinggi shell ke viewport. */
.elearning-portal-shell {
    width: 100% !important;
    height: 100%;
    box-sizing: border-box !important;
    padding: 10px !important;
    background: transparent !important;
    /* overflow tanpa !important: JS memutuskan — embedded di MainAction
       memakai 'visible' (scroll menyatu ke root), standalone memakai 'auto'. */
    overflow-y: auto;
    overflow-x: hidden !important;
}

/* Cegah scrollbar ganda: area dalam panel tidak memunculkan scroll sendiri
   kecuali benar-benar diperlukan (konten melebihi tinggi panel). */
.elearning-portal-body .z-west,
.elearning-portal-body .z-east,
.elearning-portal-body .z-west-body,
.elearning-portal-body .z-east-body,
.elearning-portal-body .z-center-body {
    overflow-x: hidden !important;
}

.elearning-portal {
    width: 100% !important;
    background: transparent !important;
    border: 0 !important;
}

.elearning-portal-col,
.elearning-portal .z-portalchildren {
    padding: 4px !important;
    box-sizing: border-box !important;
    background: transparent !important;
    border: 0 !important;
}

/* Kartu panel modern */
.elearning-portal-panel {
    border: 1px solid #e2e8f0 !important;
    border-radius: 14px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-shadow: 0 10px 24px rgba(15, 23, 42, .07) !important;
}

.elearning-portal-panel .z-panel-header {
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .10) 0%,
        rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .03) 100%) !important;
    border: 0 !important;
    border-bottom: 1px solid #eef2f7 !important;
    color: #0f172a !important;
    font-size: 12.5px !important;
    font-weight: 800 !important;
    letter-spacing: .01em !important;
    padding: 9px 14px !important;
    cursor: move !important;
}

.elearning-portal-panel-body {
    padding: 0 !important;
    background: #ffffff !important;
    border: 0 !important;
}

/* Tinggi area kerja panel diatur otomatis oleh JS (mengikuti tinggi parent
   .elearning-portal-shell); nilai di sini hanya fallback awal sebelum JS jalan. */
.elearning-portal-body {
    min-height: 320px !important;
    overflow: hidden !important;
    border: 0 !important;
    background: #ffffff !important;
}

.elearning-portal-body .z-west,
.elearning-portal-body .z-east,
.elearning-portal-body .z-west-body,
.elearning-portal-body .z-east-body {
    border: 0 !important;
    background: #ffffff !important;
}

/* Mobile / layar sempit: kolom portal otomatis menumpuk penuh.
   Tinggi panel tetap mengikuti nilai dari Java/JS (tinggi minimal frame),
   tidak dipotong max-height agar scroll tetap milik parent. */
@media screen and (max-width: 900px) {
    .elearning-portal-col,
    .elearning-portal .z-portalchildren {
        width: 100% !important;
        float: none !important;
        display: block !important;
    }
    .elearning-portal-shell {
        padding: 0px !important;
    }
}

/* ======================================================================
   Form filter pencarian (grid di region North, mis. mahasiswa.zul).
   Lebar input di ZUL banyak yang hardcoded 40-70px sehingga form tampak
   kecil-kecil; di sini ukuran minimum dipaksa lebih manusiawi, hbox
   diratakan menjadi flex agar field turun baris (wrap) bila sempit.
   ====================================================================== */

/* Label filter */
.z-north .z-grid .z-row-cnt > .z-label {
    font-size: 11.5px !important;
    font-weight: 700 !important;
    color: #475569 !important;
    line-height: 1.35 !important;
}

/* Sel filter diberi napas */
.z-north .z-grid .z-row-cnt {
    padding: 5px 8px !important;
}

/* Hbox di dalam sel filter diratakan menjadi flex yang bisa wrap */
.z-north .z-grid .z-row-cnt .z-hbox,
.z-north .z-grid .z-row-cnt .z-hbox table {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
}

.z-north .z-grid .z-row-cnt .z-hbox tbody {
    display: block !important;
    width: 100% !important;
}

.z-north .z-grid .z-row-cnt .z-hbox tr {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 4px !important;
    width: 100% !important;
}

.z-north .z-grid .z-row-cnt .z-hbox td {
    display: block !important;
    width: auto !important;
    height: auto !important;
    padding: 0 !important;
}

.z-north .z-grid .z-row-cnt .z-hbox td.z-hbox-sep {
    display: none !important;
}

/* Input teks & angka: tinggi dan lebar minimum yang nyaman */
.z-north .z-grid input.z-textbox,
.z-north .z-grid input.z-decimalbox,
.z-north .z-grid input.z-intbox,
.z-north .z-grid input.z-longbox,
.z-north .z-grid input.z-doublebox {
    min-width: 56px !important;
    height: 28px !important;
    padding: 4px 8px !important;
    box-sizing: border-box !important;
    font-size: 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 8px !important;
    background: #ffffff !important;
}

.z-north .z-grid input.z-textbox:focus,
.z-north .z-grid input.z-decimalbox:focus,
.z-north .z-grid .z-combobox-inp:focus,
.z-north .z-grid .z-bandbox-inp:focus {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    outline: none !important;
}

/* Combobox / bandbox: paksa lebar minimum agar nilai terbaca,
   dan lebar input dalam mengikuti lebar luar (menimpa width inline px
   hasil kalkulasi JS ZK yang sering cuma 0-2px) */
.z-north .z-grid .z-combobox,
.z-north .z-grid .z-bandbox {
    min-width: 92px !important;
    max-width: 100% !important;
    display: inline-flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
}

.z-north .z-grid .z-combobox-inp,
.z-north .z-grid .z-bandbox-inp {
    width: calc(100% - 20px) !important;
    min-width: 0 !important;
    height: 26px !important;
    padding: 3px 8px !important;
    box-sizing: border-box !important;
    font-size: 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-right: 0 !important;
    border-radius: 8px 0 0 8px !important;
    background: #ffffff !important;
}

.z-north .z-grid .z-combobox-btn,
.z-north .z-grid .z-bandbox-btn {
    height: 26px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-left: 0 !important;
    border-radius: 0 8px 8px 0 !important;
    background-color: #f8fafc !important;
}

/* Baris checkbox: beri jarak antar pilihan dan izinkan wrap rapi */
.z-north .z-grid .z-checkbox {
    display: inline-flex !important;
    align-items: center !important;
    margin: 2px 10px 2px 0 !important;
    white-space: nowrap !important;
}

.z-north .z-grid .z-checkbox-cnt {
    font-size: 11.5px !important;
    color: #334155 !important;
    padding-left: 4px !important;
}

/* Toolbar aksi di bawah filter */
.z-north .z-toolbar {
    padding: 6px 8px !important;
    background: #f8fafc !important;
    border-top: 1px solid #eef2f7 !important;
}

.z-north .z-toolbar .z-toolbarbutton {
    margin: 2px 4px 2px 0 !important;
}

/* Layar sempit: kolom label di atas field tetap terbaca */
@media screen and (max-width: 900px) {
    .z-north .z-grid .z-row-cnt {
        padding: 4px 6px !important;
    }
    .z-north .z-grid .z-combobox,
    .z-north .z-grid .z-bandbox {
        min-width: 80px !important;
    }
}

/* ======================================================================
   Tombol aksi standar (MyToolbarbuttonConfig) — Simpan/Batal/Keluar.
   Styling dipusatkan di sini; Java hanya menempelkan sclass.
   ====================================================================== */
.ais-btn {
    display: inline-block !important;
    border-radius: 8px !important;
    padding: 3px 12px !important;
    border: 1px solid transparent !important;
    cursor: pointer !important;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .15) !important;
    text-decoration: none !important;
    vertical-align: middle !important;
    box-sizing: border-box !important;
}

.ais-btn .z-toolbarbutton-body,
.ais-btn .z-toolbarbutton-cnt {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    color: inherit !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
    line-height: 17px !important;
    white-space: nowrap !important;
    text-decoration: none !important;
}

/* Ikon selalu sejajar di kiri teks; <br> sisa orient vertical disembunyikan */
.ais-btn .z-toolbarbutton-cnt br {
    display: none !important;
}

.ais-btn .z-toolbarbutton-cnt img {
    width: 14px !important;
    height: 14px !important;
    vertical-align: -2px !important;
    margin-right: 5px !important;
}

.ais-btn:hover {
    filter: brightness(1.07);
    box-shadow: 0 2px 6px rgba(15, 23, 42, .22) !important;
}

.ais-btn:active {
    filter: brightness(.95);
}

.ais-btn-hijau {
    background: #10b981 !important;
    border-color: #059669 !important;
    color: #ffffff !important;
}

.ais-btn-merah {
    background: #ef4444 !important;
    border-color: #dc2626 !important;
    color: #ffffff !important;
}

.ais-btn-merah-tua {
    background: #b91c1c !important;
    border-color: #991b1b !important;
    color: #ffffff !important;
}

.ais-btn-biru {
    background: #2563eb !important;
    border-color: #1d4ed8 !important;
    color: #ffffff !important;
}

.ais-btn-hijau .z-toolbarbutton-cnt,
.ais-btn-merah .z-toolbarbutton-cnt,
.ais-btn-merah-tua .z-toolbarbutton-cnt,
.ais-btn-biru .z-toolbarbutton-cnt {
    color: #ffffff !important;
}

/* Ikon SVG diputihkan agar kontras di atas tombol berwarna */
.ais-tbar-icon-white .z-toolbarbutton-cnt img,
.ais-tbar-icon-white img {
    filter: brightness(0) invert(1);
}

/* Kompatibilitas: class lama tombol kecil */
.ais-tbar-small {
    border-radius: 8px !important;
}

/* Toolbar di region South (footer MyWindow) sering diberi tinggi inline
   28px + overflow hidden oleh ZK sehingga tombol pill .ais-btn terpotong.
   Biarkan tingginya mengikuti isi dan jangan memotong tombol. */
.z-south .z-toolbar {
    height: auto !important;
    min-height: 36px !important;
    overflow: visible !important;
    padding: 4px 8px !important;
    box-sizing: border-box !important;
}

.z-south,
.z-south-body {
    overflow: visible !important;
}

.z-south .z-toolbar .ais-btn {
    margin: 1px 4px 1px 0 !important;
    vertical-align: top !important;
}

/* ======================================================================
   Papan Pengumuman modern (MainAction.appendModernPengumumanPanel)
   Class main-announcement-* sebelumnya hanya ada di main-responsive-zk.css
   yang tidak lagi dimuat; dipindahkan & dimodernkan di sini.
   ====================================================================== */
.main-announcement-panel {
    background: #ffffff !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .16) !important;
    border-radius: 16px !important;
    box-shadow: 0 10px 28px rgba(15, 23, 42, .08) !important;
    overflow: hidden !important;
}

/* Hero / kepala panel */
.main-announcement-hero {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 8px !important;
    padding: 16px 18px 12px 18px !important;
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .10) 0%,
        rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .03) 60%,
        #ffffff 100%) !important;
    border-bottom: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .12) !important;
}

.main-announcement-hero-text {
    min-width: 0 !important;
    flex: 1 1 260px !important;
}

.main-announcement-eyebrow {
    display: block !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    letter-spacing: .12em !important;
    text-transform: uppercase !important;
    color: var(--ais-theme-primary, #0c71c3) !important;
    margin-bottom: 2px !important;
}

.main-announcement-title {
    display: block !important;
    font-size: 17px !important;
    font-weight: 900 !important;
    line-height: 1.25 !important;
    color: #0f172a !important;
    letter-spacing: -.01em !important;
}

.main-announcement-subtitle {
    display: block !important;
    margin-top: 3px !important;
    font-size: 11.5px !important;
    line-height: 1.5 !important;
    color: #64748b !important;
    white-space: normal !important;
}

.main-announcement-count {
    display: inline-block !important;
    padding: 5px 12px !important;
    border-radius: 999px !important;
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .10) !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .20) !important;
    color: var(--ais-theme-primary, #0c71c3) !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    white-space: nowrap !important;
}

/* Panel pencarian */
.main-announcement-search-panel {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 12px 18px !important;
    background: #f8fafc !important;
    border-bottom: 1px solid #eef2f7 !important;
}

.main-announcement-search-panel .main-announcement-search-input,
.main-announcement-search-input {
    flex: 1 1 220px !important;
    min-width: 160px !important;
    width: auto !important;
    height: 34px !important;
    padding: 6px 14px !important;
    border: 1px solid #dbe3ee !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #0f172a !important;
    font-size: 12px !important;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, .04) !important;
}

.main-announcement-search-input:focus {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .15) !important;
    outline: none !important;
}

.main-announcement-search-button,
.main-announcement-search-button .z-toolbarbutton-cnt {
    cursor: pointer !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    white-space: nowrap !important;
}

.main-announcement-search-button {
    margin: 0 !important;
    padding: 7px 16px !important;
    border-radius: 999px !important;
    border: 1px solid #d4dce8 !important;
    background: #ffffff !important;
}

.main-announcement-search-button .z-toolbarbutton-cnt {
    background: transparent !important;
    color: #475569 !important;
}

.main-announcement-search-button:hover {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
}

.main-announcement-search-primary {
    background: var(--ais-theme-primary, #0c71c3) !important;
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 4px 12px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
}

.main-announcement-search-primary .z-toolbarbutton-cnt {
    color: #ffffff !important;
}

.main-announcement-search-primary:hover {
    filter: brightness(1.08);
}

/* Daftar & grup */
.main-announcement-list {
    padding: 4px 18px 16px 18px !important;
}

.main-announcement-group {
    margin: 14px 0 6px 0 !important;
    padding: 0 !important;
}

.main-announcement-group .z-label {
    color: #64748b !important;
}

.main-announcement-group-primary .z-label {
    color: var(--ais-theme-primary, #0c71c3) !important;
}

/* Kartu pengumuman */
.main-announcement-card {
    border: 1px solid #e5eaf2 !important;
    background: #ffffff !important;
    box-shadow: 0 4px 12px rgba(15, 23, 42, .04) !important;
    transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}

.main-announcement-card:hover {
    border-color: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .35) !important;
    box-shadow: 0 10px 24px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .12) !important;
    transform: translateY(-1px);
}

.main-announcement-card-primary {
    border-left: 4px solid var(--ais-theme-primary, #0c71c3) !important;
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .06) 0%,
        #ffffff 65%) !important;
}

.main-announcement-meta {
    display: flex !important;
}

.main-announcement-chip {
    background: #f1f5f9 !important;
    color: #475569 !important;
    border: 1px solid #e2e8f0 !important;
    text-transform: uppercase !important;
    letter-spacing: .03em !important;
}

.main-announcement-chip-primary {
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .12) !important;
    color: var(--ais-theme-primary, #0c71c3) !important;
    border-color: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .25) !important;
}

/* Judul (link) & deskripsi */
.main-announcement-link,
.main-announcement-link .z-toolbarbutton-cnt {
    color: #0f172a !important;
    background: transparent !important;
    border: 0 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    text-decoration: none !important;
    cursor: pointer !important;
}

.main-announcement-link:hover .z-toolbarbutton-cnt,
.main-announcement-link:hover {
    color: var(--ais-theme-primary, #0c71c3) !important;
    text-decoration: underline !important;
}

.main-announcement-desc {
    color: #64748b !important;
}

/* Pager */
.main-announcement-pager {
    margin-top: 12px !important;
}

.main-announcement-page-button {
    margin: 0 3px !important;
    padding: 5px 12px !important;
    border-radius: 999px !important;
    border: 1px solid #d4dce8 !important;
    background: #ffffff !important;
    cursor: pointer !important;
}

.main-announcement-page-button .z-toolbarbutton-cnt {
    background: transparent !important;
    color: #475569 !important;
    font-size: 11px !important;
    font-weight: 800 !important;
}

.main-announcement-page-button:hover {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
}

.main-announcement-page-active {
    background: var(--ais-theme-primary, #0c71c3) !important;
    border-color: var(--ais-theme-primary, #0c71c3) !important;
}

.main-announcement-page-active .z-toolbarbutton-cnt {
    color: #ffffff !important;
}

/* Kosong */
.main-announcement-empty-box {
    padding: 8px 0 !important;
}

.main-announcement-empty {
    color: #64748b !important;
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .05) !important;
    border: 1px dashed rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
}

/* Mode rapat: kurangi seluruh spacing agar profil di bawah cepat terlihat */
.main-announcement-hero {
    padding: 10px 14px 8px 14px !important;
}

.main-announcement-title {
    font-size: 14.5px !important;
}

.main-announcement-subtitle {
    margin-top: 1px !important;
    font-size: 10.5px !important;
    line-height: 1.4 !important;
}

.main-announcement-count {
    padding: 3px 10px !important;
    font-size: 10px !important;
}

.main-announcement-search-panel {
    padding: 7px 14px !important;
    gap: 6px !important;
}

.main-announcement-search-panel .main-announcement-search-input,
.main-announcement-search-input {
    height: 28px !important;
    padding: 4px 12px !important;
}

.main-announcement-search-button {
    padding: 4px 12px !important;
}

.main-announcement-list {
    padding: 2px 14px 10px 14px !important;
}

.main-announcement-group {
    margin: 8px 0 2px 0 !important;
}

.main-announcement-group .z-label {
    font-size: 10.5px !important;
}

.main-announcement-card {
    margin: 4px 0 !important;
    padding: 8px 12px !important;
    border-radius: 10px !important;
}

.main-announcement-meta {
    margin-bottom: 3px !important;
}

.main-announcement-chip {
    padding: 2px 7px !important;
    font-size: 9px !important;
}

.main-announcement-link .z-toolbarbutton-cnt {
    font-size: 12.5px !important;
    line-height: 1.3 !important;
}

.main-announcement-desc {
    margin-top: 3px !important;
    font-size: 11px !important;
    line-height: 1.4 !important;
}

.main-announcement-pager {
    margin-top: 8px !important;
}

/* ----------------------------------------------------------------------
   Penyempurnaan papan pengumuman: responsif mobile + aksesibilitas.
   Reusable: komponen mana pun yang memakai class main-announcement-*
   (lihat MainStyleHelper/MainAction) otomatis mendapat aturan ini —
   tidak perlu menulis style per halaman.
   ---------------------------------------------------------------------- */

/* Deskripsi dibatasi 3 baris agar tinggi kartu seragam dan daftar rapi. */
.main-announcement-desc {
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 3 !important;
    overflow: hidden !important;
}

/* Fokus keyboard terlihat jelas (aksesibilitas). */
.main-announcement-link:focus,
.main-announcement-search-button:focus,
.main-announcement-page-button:focus,
.main-announcement-search-input:focus-visible {
    outline: 2px solid var(--ais-theme-primary, #0c71c3) !important;
    outline-offset: 2px !important;
}

/* Transisi halus kartu; dimatikan bila user memilih reduce-motion. */
.main-announcement-card {
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease !important;
}

@media (prefers-reduced-motion: reduce) {
    .main-announcement-card {
        transition: none !important;
    }
}

/* Layar sempit (HP): susun ulang agar nyaman disentuh dan dibaca. */
@media (max-width: 768px) {
    .main-announcement-hero {
        align-items: flex-start !important;
        flex-direction: column !important;
    }

    .main-announcement-count {
        align-self: flex-start !important;
    }

    /* Input pencarian satu baris penuh, tinggi memenuhi target sentuh 38px. */
    .main-announcement-search-panel .main-announcement-search-input,
    .main-announcement-search-input {
        flex: 1 1 100% !important;
        min-width: 100% !important;
        height: 38px !important;
        font-size: 13px !important;
    }

    /* Tombol Cari & Reset berbagi satu baris, sama lebar, mudah disentuh. */
    .main-announcement-search-button {
        flex: 1 1 calc(50% - 4px) !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        min-height: 36px !important;
        padding: 8px 12px !important;
        box-sizing: border-box !important;
    }

    /* Kartu lebih lega untuk jari, judul tetap maksimal 2 baris. */
    .main-announcement-card {
        padding: 12px 13px !important;
    }

    .main-announcement-link,
    .main-announcement-link .z-toolbarbutton-cnt {
        display: -webkit-box !important;
        -webkit-box-orient: vertical !important;
        -webkit-line-clamp: 2 !important;
        overflow: hidden !important;
    }

    /* Pager: tombol target sentuh >= 34px, rata tengah, boleh turun baris. */
    .main-announcement-pager {
        display: flex !important;
        flex-wrap: wrap !important;
        justify-content: center !important;
        gap: 4px !important;
    }

    .main-announcement-page-button {
        min-width: 38px !important;
        min-height: 34px !important;
        margin: 0 !important;
    }
}

/* Panel kehadiran dosen/guru di atas pengumuman */
.main-teacher-presence-panel {
    margin-bottom: 10px !important;
}

.main-teacher-presence-hero {
    padding: 9px 14px 7px 14px !important;
}

.main-teacher-presence-body {
    padding: 8px 14px 12px 14px !important;
    overflow-x: auto !important;
    box-sizing: border-box !important;
}

.main-teacher-presence-body img {
    max-width: 64px !important;
    height: auto !important;
    border-radius: 10px !important;
}

.main-teacher-presence-body table {
    max-width: 100% !important;
}

/* Responsif mobile */
@media screen and (max-width: 768px) {
    .main-announcement-hero {
        padding: 13px 14px 10px 14px !important;
    }
    .main-announcement-title {
        font-size: 15px !important;
    }
    .main-announcement-count {
        white-space: normal !important;
    }
    .main-announcement-search-panel {
        padding: 10px 14px !important;
    }
    .main-announcement-list {
        padding: 4px 12px 14px 12px !important;
    }
}

@media screen and (max-width: 480px) {
    .main-announcement-search-panel .main-announcement-search-input,
    .main-announcement-search-input {
        flex: 1 1 100% !important;
    }
    .main-announcement-search-button {
        flex: 1 1 auto !important;
        text-align: center !important;
    }
    .main-announcement-card {
        padding: 11px 12px !important;
    }
}

/* (4) Module strip rata kiri + flow layout (wrap otomatis di layar sempit).
   ZK Hbox dirender sebagai table; struktur table diratakan menjadi flex
   sehingga tombol modul (e-Learning..Tampilan Baru) turun baris sendiri. */
.main-responsive-module-strip,
.main-responsive-module-row > .z-row-inner > .z-cell > .z-hbox,
.main-responsive-module-row .z-hbox {
    justify-content: flex-start !important;
    text-align: left !important;
    padding-left: 10px !important;
}
.main-responsive-module-row .z-hbox > .z-hbox-inner,
.main-responsive-module-strip > .z-hbox-inner {
    justify-content: flex-start !important;
    text-align: left !important;
}

.main-responsive-module-strip,
.main-responsive-module-strip table {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

.main-responsive-module-strip tbody {
    display: block !important;
    width: 100% !important;
}

.main-responsive-module-strip tr {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    width: 100% !important;
}

.main-responsive-module-strip td {
    display: block !important;
    width: auto !important;
    height: auto !important;
    padding: 0 !important;
}

/* Sel pemisah hbox tidak diperlukan pada layout flex */
.main-responsive-module-strip td.z-hbox-sep {
    display: none !important;
}

.main-responsive-module-strip .z-toolbarbutton {
    margin: 3px !important;
    white-space: nowrap !important;
}

/* Baris/sel pembungkus strip tidak boleh memotong tinggi saat wrap */
.main-responsive-module-row,
.main-responsive-module-row .z-row-inner,
.main-responsive-module-row .z-cell {
    height: auto !important;
    overflow: visible !important;
}

/* ======================================================================
   THEME ADAPTER DASHBOARD (patch 2026-06-11)
   Semua class Dasboard*/Dashboard* (DasboardSop, DasboardAkuntansi,
   DashboardTimelinePertemuan, dst) memakai warna biru hardcoded sebagai
   inline style. Aturan di bawah memetakan pola warna tersebut ke variabel
   tema (--ais-theme-*) yang didefinisikan file tema pilihan user
   (ytb.css, hijau.css, merah.css, ... dimuat MyThemeProvider), sehingga
   seluruh dasbor otomatis mengikuti tema tanpa mengubah tiap class Java.
   CSS !important menang atas inline style.
   ====================================================================== */

/* --- Hero gelap dasbor (navy #0f172a + biru royal + cyan) --- */
[style*="#0f172a"][style*="#1d4ed8"],
[style*="#0f172a"][style*="#2563eb"] {
    background: linear-gradient(135deg, rgba(0, 0, 0, .38) 0%, rgba(0, 0, 0, 0) 55%),
        linear-gradient(135deg,
            var(--ais-theme-primary, #1d4ed8) 0%,
            var(--ais-theme-primary, #1d4ed8) 45%,
            var(--ais-theme-accent, var(--ais-theme-primary, #06b6d4)) 100%) !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
}

/* --- Strip/garis aksen gradien biru --- */
[style*="linear-gradient(90deg,#2563eb,#06b6d4)"],
[style*="linear-gradient(90deg,#2563eb,#38bdf8)"],
[style*="linear-gradient(90deg,#2563eb,#14b8a6)"],
[style*="linear-gradient(90deg,#2563eb,#22c55e)"],
[style*="linear-gradient(90deg,#1d4ed8,#0891b2)"],
[style*="linear-gradient(90deg,#4338ca,#06b6d4)"],
[style*="linear-gradient(135deg,#2563eb,#06b6d4)"],
[style*="linear-gradient(135deg,#0d6efd,#6610f2)"],
[style*="linear-gradient(135deg,#0d6efd,#20c997)"] {
    background: linear-gradient(90deg,
        var(--ais-theme-primary, #2563eb),
        var(--ais-theme-accent, var(--ais-theme-primary, #06b6d4))) !important;
}

/* --- Kepala kartu terang kebiruan --- */
[style*="linear-gradient(135deg,#eff6ff"],
[style*="linear-gradient(135deg,#e0f2fe"],
[style*="linear-gradient(180deg,#f8fafc 0%,#eef6ff"] {
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .10) 0%,
        #ffffff 100%) !important;
}

/* --- Ikon/chip metrik biru --- */
[style*="#dbeafe"][style*="#1e40af"] {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .14) !important;
    color: var(--ais-theme-primary, #1e40af) !important;
}

/* --- Tombol/elemen solid biru --- */
[style*="background:#2563eb"],
[style*="background: #2563eb"],
[style*="background:#1d4ed8"],
[style*="background:#0d6efd"] {
    background: var(--ais-theme-primary, #2563eb) !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
}

/* --- Teks & border aksen biru --- */
[style*="color:#2563eb"],
[style*="color: #2563eb"],
[style*="color:#1d4ed8"],
[style*="color:#0d6efd"] {
    color: var(--ais-theme-primary, #2563eb) !important;
}

[style*="border-left:4px solid #2563eb"],
[style*="border-left: 4px solid #2563eb"] {
    border-left-color: var(--ais-theme-primary, #2563eb) !important;
}

/* --- Kartu profil/akademik (style di-inject dari Java: ais-profile-*,
       ais-akad-*) — komponen biru dipetakan ke tema --- */
.ais-profile-head {
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .12) 0%,
        #f8fafc 60%, #ffffff 100%) !important;
    border-left-color: var(--ais-theme-primary, #2563eb) !important;
}

.ais-akad-head {
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .10) 0%,
        #f8fafc 60%, #ffffff 100%) !important;
}

.ais-profile-table th,
.ais-akad-card th {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .08) !important;
}

.ais-profile-badge {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .12) !important;
    color: var(--ais-theme-primary, #3730a3) !important;
}

.ais-profile-spinner {
    border-top-color: var(--ais-theme-primary, #2563eb) !important;
}

.ais-profile-bar.sks,
.ais-akad-fill0 {
    background: linear-gradient(90deg,
        rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .45),
        var(--ais-theme-primary, #2563eb)) !important;
}

/* --- Perluasan adapter: token biru lain yang dipakai class-class dasbor --- */

/* Latar tint biru muda */
[style*="background:#eff6ff"],
[style*="background: #eff6ff"],
[style*="linear-gradient(135deg,#ffffff,#eff6ff"] {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .08) !important;
}

[style*="background:#e0f2fe"],
[style*="background: #e0f2fe"] {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .12) !important;
}

[style*="background:#dbeafe"],
[style*="background: #dbeafe"] {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .15) !important;
}

/* Latar solid biru sedang/terang */
[style*="background:#0ea5e9"],
[style*="background:#0891b2"],
[style*="background:#3b82f6"],
[style*="background:#38bdf8"] {
    background: var(--ais-theme-primary, #2563eb) !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
}

/* Gradien biru lain (vertikal/diagonal) */
[style*="linear-gradient(90deg,#0ea5e9"],
[style*="linear-gradient(90deg,#38bdf8"],
[style*="linear-gradient(180deg,#38bdf8"],
[style*="linear-gradient(180deg,#2563eb"],
[style*="linear-gradient(180deg,#3b82f6"],
[style*="linear-gradient(135deg,#1e3a8a"] {
    background: linear-gradient(135deg,
        var(--ais-theme-primary, #2563eb),
        var(--ais-theme-accent, var(--ais-theme-primary, #38bdf8))) !important;
}

/* Border biru muda */
[style*="border:1px solid #bfdbfe"],
[style*="border:1px solid #dbeafe"],
[style*="border:3px solid #bfdbfe"],
[style*="border-bottom:1px solid #dbeafe"],
[style*="border-bottom:2px solid #bfdbfe"],
[style*="border-color:#dbeafe"],
[style*="border-color:#38bdf8"] {
    border-color: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .30) !important;
}

/* Teks biru tua (judul/angka aksen) */
[style*="color:#1e40af"],
[style*="color: #1e40af"],
[style*="color:#1e3a8a"],
[style*="color:#075985"],
[style*="color:#3b82f6"],
[style*="color:#0ea5e9"] {
    color: var(--ais-theme-primary, #1e40af) !important;
}

/* Teks biru muda di atas latar gelap (hero) -> warna kontras tema */
[style*="color:#dbeafe"],
[style*="color:#bfdbfe"],
[style*="color:#e0f2fe"],
[style*="color:#eff6ff"] {
    color: var(--ais-theme-contrast, #ffffff) !important;
}

/* ======================================================================
   Menu utama sebagai dropdown di header (ZKoss 5.5)
   ====================================================================== */
.main-responsive-header-menu-button,
.main-responsive-header-menu-button .z-toolbarbutton-body,
.main-responsive-header-menu-button .z-toolbarbutton-cnt {
    display: inline-block !important;
    vertical-align: middle !important;
}

.main-responsive-menu-popup,
.z-popup.main-responsive-menu-popup,
.main-responsive-menu-popup .z-popup-cl,
.main-responsive-menu-popup .z-popup-cm,
.main-responsive-menu-popup .z-popup-cr,
.main-responsive-menu-popup .z-popup-cnt {
    width: 340px !important;
    max-width: 92vw !important;
    height: 85vh !important;
    max-height: 85vh !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}

.main-responsive-menu-popup .z-popup-cnt,
.main-responsive-menu-popup .z-grid,
.main-responsive-menu-popup .z-grid-body,
.main-responsive-menu-popup .z-rows,
.main-responsive-menu-popup .z-row-cnt {
    background: #1f4b86 !important;
}

.main-responsive-menu-popup .z-popup-cnt,
.main-responsive-menu-popup .z-grid-body {
    overflow-y: auto !important;
    overflow-x: hidden !important;
}

.main-responsive-sidebar-dropdown-hidden,
.main-responsive-sidebar-dropdown-hidden.z-west,
.main-responsive-sidebar-dropdown-hidden .z-west-body {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    overflow: hidden !important;
}

.main-responsive-frame .main-responsive-center {
    min-width: 0 !important;
}

/* Patch 2026-06-11: dropdown menu header - tombol Menu paling kiri, kontras,
   popup rapi, dan hilangkan ruang kosong bekas West/sidebar. */
.main-responsive-module-row .main-responsive-header-menu-primary,
.main-responsive-module-strip .main-responsive-header-menu-primary,
.main-responsive-module-row .main-responsive-header-menu-primary .z-toolbarbutton-body,
.main-responsive-module-strip .main-responsive-header-menu-primary .z-toolbarbutton-body,
.main-responsive-module-row .main-responsive-header-menu-primary .z-toolbarbutton-cnt,
.main-responsive-module-strip .main-responsive-header-menu-primary .z-toolbarbutton-cnt {
    background: linear-gradient(135deg, #f59e0b, #f97316) !important;
    border-color: rgba(255, 255, 255, 0.72) !important;
    color: #ffffff !important;
    font-weight: 900 !important;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.38) !important;
    box-shadow: 0 7px 18px rgba(249, 115, 22, 0.32) !important;
}
.main-responsive-module-row .main-responsive-header-menu-primary,
.main-responsive-module-strip .main-responsive-header-menu-primary {
    margin-left: 0 !important;
    margin-right: 8px !important;
}
.main-responsive-module-row .main-responsive-header-menu-primary:hover,
.main-responsive-module-strip .main-responsive-header-menu-primary:hover,
.main-responsive-module-row .main-responsive-header-menu-primary.z-toolbarbutton-over,
.main-responsive-module-strip .main-responsive-header-menu-primary.z-toolbarbutton-over {
    background: linear-gradient(135deg, #fb923c, #ea580c) !important;
    border-color: #ffffff !important;
    box-shadow: 0 9px 24px rgba(249, 115, 22, 0.42) !important;
}

.main-responsive-menu-popup .z-menubar-ver,
.main-responsive-menu-popup .z-menubar-ver table,
.main-responsive-menu-popup .z-menubar-ver tbody,
.main-responsive-menu-popup .z-menubar-ver tr,
.main-responsive-menu-popup .z-menubar-ver td {
    background-image: none !important;
}
.main-responsive-menu-popup .z-menubar-ver .z-menu-btn,
.main-responsive-menu-popup .z-menubar-ver .z-menu-item-btn,
.main-responsive-menu-popup .z-menu-popup .z-menu-btn,
.main-responsive-menu-popup .z-menu-popup .z-menu-item-btn {
    background-repeat: no-repeat !important;
    background-position: 9px center !important;
    background-size: 13px 13px !important;
    padding-left: 29px !important;
    padding-right: 8px !important;
    box-sizing: border-box !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
.main-responsive-menu-popup .z-menu-img,
.main-responsive-menu-popup .z-menu-item-img,
.main-responsive-menu-popup .z-menu-cnt-img .z-menu-img,
.main-responsive-menu-popup .z-menu-item-cnt .z-menu-item-img {
    display: inline-block !important;
    width: 14px !important;
    min-width: 14px !important;
    max-width: 14px !important;
    height: 14px !important;
    min-height: 14px !important;
    max-height: 14px !important;
    margin-right: 6px !important;
    background-repeat: no-repeat !important;
    background-position: center center !important;
    background-size: 12px 12px !important;
    vertical-align: -2px !important;
}
.main-responsive-menu-popup .z-menu-popup-cnt,
.main-responsive-menu-popup .z-menu-popup-cnt li,
.main-responsive-menu-popup .z-menu-popup-cnt .z-menu-item-cnt,
.main-responsive-menu-popup .z-menu-popup-cnt .z-menu-cnt {
    background-repeat: no-repeat !important;
    background-image: none !important;
}

.main-responsive-frame .main-responsive-sidebar-dropdown-hidden,
.main-responsive-frame .main-responsive-sidebar-dropdown-hidden.z-west,
.main-responsive-frame .main-responsive-sidebar-dropdown-hidden.z-west-noborder,
.main-responsive-frame .main-responsive-sidebar-dropdown-hidden .z-west-body {
    display: none !important;
    visibility: hidden !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    left: -9999px !important;
    overflow: hidden !important;
}
.main-responsive-frame > .main-responsive-center,
.main-responsive-frame > .z-center,
.main-responsive-frame > .z-center-noborder,
.main-responsive-frame > div[class*="z-center"],
.main-responsive-frame .main-responsive-center {
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
}
.main-responsive-frame > .main-responsive-center .z-center-body,
.main-responsive-frame > .z-center .z-center-body,
.main-responsive-frame > .z-center-noborder .z-center-body,
.main-responsive-frame > div[class*="z-center"] > .z-center-body,
.main-responsive-frame .main-responsive-center .z-center-body {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
}


/* Patch 2026-06-11: hilangkan total ruang kosong bekas West saat menu utama dipindahkan ke dropdown header.
   Catatan: <popup id="popupmenu"> tidak mengambil ruang layout. Ruang kosong berasal dari region West/Borderlayout
   dan aturan lama yang memberi left:250px pada Center. Selector berikut dibuat lebih spesifik daripada aturan lama. */
.ecampus-dropdown-menu-active .main-responsive-frame .z-west.navigasi.main-responsive-sidebar,
.ecampus-dropdown-menu-active .main-responsive-frame .z-west-noborder.navigasi.main-responsive-sidebar,
.ecampus-dropdown-menu-active .main-responsive-frame .z-west.main-responsive-sidebar-dropdown-hidden,
.ecampus-dropdown-menu-active .main-responsive-frame .z-west-noborder.main-responsive-sidebar-dropdown-hidden,
.main-responsive-frame.main-responsive-frame-dropdown .z-west.navigasi.main-responsive-sidebar,
.main-responsive-frame.main-responsive-frame-dropdown .z-west-noborder.navigasi.main-responsive-sidebar,
.main-responsive-frame.main-responsive-frame-dropdown .z-west.main-responsive-sidebar-dropdown-hidden,
.main-responsive-frame.main-responsive-frame-dropdown .z-west-noborder.main-responsive-sidebar-dropdown-hidden,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-sidebar,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-sidebar-dropdown-hidden,
.main-responsive-frame.main-responsive-frame-dropdown .navigasi {
    display: none !important;
    visibility: hidden !important;
    left: -9999px !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
}
.ecampus-dropdown-menu-active .main-responsive-frame .z-west.navigasi.main-responsive-sidebar .z-west-body,
.ecampus-dropdown-menu-active .main-responsive-frame .z-west-noborder.navigasi.main-responsive-sidebar .z-west-body,
.main-responsive-frame.main-responsive-frame-dropdown .z-west.navigasi.main-responsive-sidebar .z-west-body,
.main-responsive-frame.main-responsive-frame-dropdown .z-west-noborder.navigasi.main-responsive-sidebar .z-west-body,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-sidebar .z-west-body,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-sidebar-dropdown-hidden .z-west-body {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    overflow: hidden !important;
}
.ecampus-dropdown-menu-active .main-responsive-frame .z-center.main-responsive-center,
.ecampus-dropdown-menu-active .main-responsive-frame .z-center-noborder.main-responsive-center,
.ecampus-dropdown-menu-active .main-responsive-frame .main-responsive-center,
.main-responsive-frame.main-responsive-frame-dropdown .z-center.main-responsive-center,
.main-responsive-frame.main-responsive-frame-dropdown .z-center-noborder.main-responsive-center,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-center,
.main-responsive-frame.main-responsive-frame-dropdown > .z-center,
.main-responsive-frame.main-responsive-frame-dropdown > .z-center-noborder,
.main-responsive-frame.main-responsive-frame-dropdown > div[class*="z-center"] {
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    box-sizing: border-box !important;
}
.ecampus-dropdown-menu-active .main-responsive-frame .z-center.main-responsive-center .z-center-body,
.ecampus-dropdown-menu-active .main-responsive-frame .z-center-noborder.main-responsive-center .z-center-body,
.main-responsive-frame.main-responsive-frame-dropdown .z-center.main-responsive-center .z-center-body,
.main-responsive-frame.main-responsive-frame-dropdown .z-center-noborder.main-responsive-center .z-center-body,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-center .z-center-body,
.main-responsive-frame.main-responsive-frame-dropdown .main-responsive-center .z-center-body-noborder {
    left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    box-sizing: border-box !important;
}

/* Patch 2026-06-11: stabilkan tampilan mobile saat menu utama memakai dropdown header.
   Masalah lama: setelah ClientInfo/Timer, MainAction membangun ulang header mobile legacy sehingga logo/menu lama muncul
   sebagai panel putih besar dan ruang West terlihat kembali. Selector ini menjaga header dropdown tetap kompak. */
@media (max-width: 768px) {
    body.ecampus-dropdown-menu-active .main-responsive-header,
    .main-responsive-header.main-responsive-header-mobile-dropdown,
    .headerHbox.main-responsive-header-mobile-dropdown {
        min-height: 88px !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
        background: var(--ais-theme-primary-bg) !important;
    }
    body.ecampus-dropdown-menu-active .headerHbox_mobile.main-responsive-header,
    .headerHbox_mobile.main-responsive-header-mobile-dropdown {
        min-height: 88px !important;
        height: auto !important;
        max-height: none !important;
        background: var(--ais-theme-primary-bg) !important;
    }
    .main-responsive-header-grid,
    .main-responsive-header-grid .z-grid-body,
    .main-responsive-header-grid table {
        width: 100% !important;
        max-width: 100% !important;
    }
    .main-responsive-brand-box img,
    .main-responsive-header img#idLogo {
        max-height: 42px !important;
        height: 42px !important;
    }
    .main-responsive-header .title1 {
        font-size: 13px !important;
        line-height: 1.15 !important;
        white-space: normal !important;
    }
    .main-responsive-header .motto,
    .main-responsive-header .alamat {
        font-size: 9.5px !important;
        line-height: 1.15 !important;
    }
    .main-responsive-header-right,
    .main-responsive-header-actions {
        max-width: 100% !important;
        overflow: hidden !important;
    }
    .main-responsive-online-button,
    .users_online_button {
        max-width: 180px !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
    }
    .main-responsive-module-row,
    .main-responsive-module-row-mobile-dropdown,
    .main-responsive-module-strip {
        min-height: 34px !important;
        height: auto !important;
        max-height: 42px !important;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        white-space: nowrap !important;
        -webkit-overflow-scrolling: touch !important;
        background: transparent !important;
    }
    .main-responsive-module-strip {
        display: block !important;
        padding: 3px 5px 5px 5px !important;
    }
    .main-responsive-module-row .z-toolbarbutton {
        margin: 3px 2px !important;
        display: inline-block !important;
        float: none !important;
    }
    .main-responsive-module-row .z-toolbarbutton-cnt {
        font-size: 10px !important;
        padding: 5px 8px !important;
        line-height: 1.1 !important;
    }
    .main-responsive-module-row img {
        max-width: 14px !important;
        max-height: 14px !important;
    }
    .main-responsive-header-menu-primary,
    .main-responsive-module-row .main-responsive-header-menu-primary {
        background: linear-gradient(135deg, #f97316, #ea580c) !important;
        border-color: rgba(255,255,255,.75) !important;
        box-shadow: 0 6px 16px rgba(249,115,22,.35) !important;
    }
    .main-responsive-frame.main-responsive-frame-dropdown,
    .ecampus-dropdown-menu-active .main-responsive-frame {
        left: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
    }
    .main-responsive-frame.main-responsive-frame-dropdown .main-responsive-sidebar,
    .main-responsive-frame.main-responsive-frame-dropdown .navigasi,
    .ecampus-dropdown-menu-active .main-responsive-frame .main-responsive-sidebar,
    .ecampus-dropdown-menu-active .main-responsive-frame .navigasi {
        display: none !important;
        visibility: hidden !important;
        width: 0 !important;
        min-width: 0 !important;
        max-width: 0 !important;
        left: -9999px !important;
    }
    .main-responsive-frame.main-responsive-frame-dropdown .main-responsive-center,
    .ecampus-dropdown-menu-active .main-responsive-frame .main-responsive-center {
        left: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin-left: 0 !important;
    }
    .main-responsive-menu-popup {
        width: 92vw !important;
        max-width: 360px !important;
        min-width: 280px !important;
        max-height: 82vh !important;
        overflow: auto !important;
    }
}

/* Patch 2026-06-11: Pengumuman lebih berwarna namun tetap lembut. */
.main-announcement-modern-v6.main-announcement-board-panel,
.main-announcement-board-panel {
    background:
        radial-gradient(circle at top left, rgba(59,130,246,.12), transparent 34%),
        radial-gradient(circle at top right, rgba(16,185,129,.10), transparent 30%),
        linear-gradient(180deg, #ffffff 0%, #f8fbff 100%) !important;
    border: 1px solid #dbe7f5 !important;
    box-shadow: 0 14px 32px rgba(15, 23, 42, .07) !important;
}
.main-announcement-board-panel .main-announcement-hero {
    background: linear-gradient(135deg, rgba(37,99,235,.09), rgba(14,165,233,.06) 55%, rgba(16,185,129,.06)) !important;
    border-bottom: 1px solid rgba(148,163,184,.22) !important;
    border-radius: 16px 16px 0 0 !important;
    padding: 16px 18px 12px 18px !important;
}
.main-announcement-board-panel .main-announcement-eyebrow {
    color: #1d4ed8 !important;
    letter-spacing: .14em !important;
}
.main-announcement-board-panel .main-announcement-title {
    color: #0f172a !important;
}
.main-announcement-board-panel .main-announcement-subtitle {
    color: #52627a !important;
}
.main-announcement-board-panel .main-announcement-search-panel {
    background: rgba(255,255,255,.72) !important;
    border-top: 1px solid rgba(226,232,240,.88) !important;
    border-bottom: 1px solid rgba(226,232,240,.88) !important;
    backdrop-filter: blur(6px) !important;
}
.main-announcement-board-panel .main-announcement-group .z-label {
    color: #1d4ed8 !important;
}
.main-announcement-board-card {
    position: relative !important;
    overflow: hidden !important;
    border: 1px solid rgba(203,213,225,.85) !important;
    box-shadow: 0 9px 20px rgba(15,23,42,.045) !important;
}
.main-announcement-board-card:before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 5px;
    background: #2563eb;
    opacity: .92;
}
.main-announcement-board-card:hover {
    transform: translateY(-1px) !important;
    box-shadow: 0 12px 28px rgba(15,23,42,.09) !important;
}
.main-announcement-tone-primary.main-announcement-board-card,
.main-announcement-tone-primary .main-announcement-board-card {
    background: linear-gradient(90deg, rgba(37,99,235,.075), rgba(255,255,255,.98) 32%) !important;
}
.main-announcement-tone-primary.main-announcement-board-card:before { background: #1d4ed8 !important; }
.main-announcement-tone-1.main-announcement-board-card { background: linear-gradient(90deg, rgba(14,165,233,.08), rgba(255,255,255,.98) 32%) !important; }
.main-announcement-tone-1.main-announcement-board-card:before { background: #0284c7 !important; }
.main-announcement-tone-2.main-announcement-board-card { background: linear-gradient(90deg, rgba(16,185,129,.08), rgba(255,255,255,.98) 32%) !important; }
.main-announcement-tone-2.main-announcement-board-card:before { background: #059669 !important; }
.main-announcement-tone-3.main-announcement-board-card { background: linear-gradient(90deg, rgba(245,158,11,.10), rgba(255,255,255,.98) 32%) !important; }
.main-announcement-tone-3.main-announcement-board-card:before { background: #d97706 !important; }
.main-announcement-tone-4.main-announcement-board-card { background: linear-gradient(90deg, rgba(168,85,247,.08), rgba(255,255,255,.98) 32%) !important; }
.main-announcement-tone-4.main-announcement-board-card:before { background: #7c3aed !important; }
.main-announcement-tone-5.main-announcement-board-card { background: linear-gradient(90deg, rgba(244,63,94,.075), rgba(255,255,255,.98) 32%) !important; }
.main-announcement-tone-5.main-announcement-board-card:before { background: #e11d48 !important; }
.main-announcement-board-card .main-announcement-chip {
    border-color: rgba(148,163,184,.28) !important;
    background: rgba(241,245,249,.88) !important;
    color: #334155 !important;
}
.main-announcement-board-card .main-announcement-chip-primary {
    background: linear-gradient(135deg, #dbeafe, #eef6ff) !important;
    color: #1e40af !important;
    border-color: #bfdbfe !important;
}
.main-announcement-board-link .z-toolbarbutton-cnt,
.main-announcement-board-link {
    color: #0f172a !important;
}
.main-announcement-board-desc {
    color: #52627a !important;
}

/* Patch 2026-06-11: filter pencarian ZUL otomatis collapsible. */
.ecampus-filter-togglebar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: 100% !important;
    padding: 7px 10px !important;
    margin: 2px 0 6px 0 !important;
    box-sizing: border-box !important;
    background: linear-gradient(135deg, rgba(239,246,255,.95), rgba(255,247,237,.78)) !important;
    border: 1px solid #d8e5f6 !important;
    border-radius: 12px !important;
    box-shadow: 0 5px 14px rgba(15,23,42,.055) !important;
}
.ecampus-filter-toggle-button {
    border: 0 !important;
    outline: none !important;
    cursor: pointer !important;
    border-radius: 999px !important;
    padding: 8px 15px !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    color: #ffffff !important;
    background: linear-gradient(135deg, #1d4ed8, #0ea5e9) !important;
    box-shadow: 0 7px 16px rgba(37,99,235,.24) !important;
    line-height: 1.1 !important;
}
.ecampus-filter-toggle-button:hover {
    filter: brightness(1.04) !important;
    transform: translateY(-1px) !important;
}
.ecampus-smart-filter-collapsed {
    display: none !important;
}
.ecampus-smart-filter-expanded {
    border-radius: 12px !important;
    box-shadow: 0 8px 20px rgba(15,23,42,.06) !important;
}
@media (max-width: 768px) {
    .ecampus-filter-togglebar { padding: 6px 8px !important; border-radius: 10px !important; }
    .ecampus-filter-toggle-button { width: 100% !important; padding: 9px 12px !important; }
}

/* Patch 2026-06-11: dropdown menu search bar + close button */
/* Wrapper baris pencarian: tabel hbox dipaksa full-width, item sejajar */
.main-responsive-menu-searchbar {
    display: table !important;
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 10px 10px 8px 10px !important;
    background: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.04)) !important;
    border-bottom: 1px solid rgba(255,255,255,.18) !important;
}
/* Tabel hbox di dalam span: full-width, vertikal tengah */
.main-responsive-menu-searchbar > table,
.main-responsive-menu-searchbar .z-hbox > table {
    width: 100% !important;
    table-layout: fixed !important;
}
.main-responsive-menu-searchbar .z-hbox-cell {
    vertical-align: middle !important;
}
/* Sel input textbox diberi lebar auto agar mengisi sisa ruang */
.main-responsive-menu-searchbar .z-hbox-cell:first-child {
    width: 100% !important;
}
/* Celah antar elemen */
.main-responsive-menu-searchbar .z-hbox-sep {
    width: 6px !important;
    min-width: 6px !important;
}
/* Input pencarian: setinggi tombol-tombol */
.main-responsive-menu-search-input,
.main-responsive-menu-searchbar .z-textbox {
    display: block !important;
    width: 100% !important;
    height: 32px !important;
    box-sizing: border-box !important;
    border-radius: 9px !important;
    border: 1px solid rgba(191,219,254,.9) !important;
    background: rgba(255,255,255,.96) !important;
    color: #0f172a !important;
    padding: 4px 10px !important;
    line-height: 22px !important;
    box-shadow: inset 0 1px 2px rgba(15,23,42,.08) !important;
    vertical-align: middle !important;
}
/* Tombol search (loop): latar solid lebih cerah, ikon putih */
.main-responsive-menu-search-button,
.main-responsive-menu-search-button .z-toolbarbutton-body,
.main-responsive-menu-search-button .z-toolbarbutton-cnt {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 34px !important;
    min-width: 34px !important;
    height: 32px !important;
    border-radius: 9px !important;
    background: rgba(255,255,255,.22) !important;
    border: 1.5px solid rgba(255,255,255,.70) !important;
    box-shadow: 0 2px 6px rgba(0,0,0,.18) !important;
    padding: 0 !important;
    vertical-align: middle !important;
}
/* Ikon SVG diputihkan agar kontras dengan latar popup gelap */
.main-responsive-menu-search-button img,
.main-responsive-menu-search-button .z-toolbarbutton-body img,
.main-responsive-menu-search-button .z-toolbarbutton-cnt img {
    filter: brightness(0) invert(1) !important;
    width: 16px !important;
    height: 16px !important;
    display: block !important;
}
.main-responsive-menu-search-button:hover,
.main-responsive-menu-search-button.z-toolbarbutton-over,
.main-responsive-menu-search-button:hover .z-toolbarbutton-body,
.main-responsive-menu-search-button.z-toolbarbutton-over .z-toolbarbutton-body {
    background: rgba(255,255,255,.38) !important;
}
/* Tombol Tutup: sejajar dan setinggi input */
.main-responsive-menu-popup-close-button,
.main-responsive-menu-popup-close-button .z-toolbarbutton-body,
.main-responsive-menu-popup-close-button .z-toolbarbutton-cnt {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 32px !important;
    line-height: 1 !important;
    border-radius: 9px !important;
    background: linear-gradient(135deg, #ef4444, #b91c1c) !important;
    color: #ffffff !important;
    border: 1.5px solid rgba(255,255,255,.75) !important;
    font-weight: 800 !important;
    padding: 0 14px !important;
    box-shadow: 0 4px 10px rgba(185,28,28,.32) !important;
    text-shadow: 0 1px 2px rgba(0,0,0,.24) !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
}
.main-responsive-menu-popup-close-button:hover,
.main-responsive-menu-popup-close-button.z-toolbarbutton-over,
.main-responsive-menu-popup-close-button:hover .z-toolbarbutton-body,
.main-responsive-menu-popup-close-button.z-toolbarbutton-over .z-toolbarbutton-body {
    background: linear-gradient(135deg, #f87171, #dc2626) !important;
}
.ais-ui-update-info-window,
.ais-ui-update-info-window .z-window-embedded-cnt,
.ais-ui-update-info-window .z-window-modal-cnt,
.ais-ui-update-info-window .z-window-highlighted-cnt {
    border-radius: 20px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    border: 1px solid rgba(37,99,235,.18) !important;
    box-shadow: 0 24px 70px rgba(15,23,42,.26) !important;
}
.ais-ui-update-info-body {
    padding: 18px 20px 16px 20px !important;
    background: linear-gradient(145deg, #ffffff 0%, #eff6ff 100%) !important;
    box-sizing: border-box !important;
}
.ais-ui-update-info-head {
    padding-bottom: 12px !important;
    border-bottom: 1px solid rgba(37,99,235,.12) !important;
    margin-bottom: 12px !important;
}
.ais-ui-update-info-icon {
    width: 42px !important;
    height: 42px !important;
    line-height: 42px !important;
    text-align: center !important;
    border-radius: 14px !important;
    margin-right: 12px !important;
    background: linear-gradient(135deg, #f97316, #2563eb) !important;
    color: #ffffff !important;
    box-shadow: 0 10px 24px rgba(37,99,235,.25) !important;
}
.ais-ui-update-info-title {
    display: block !important;
    font-size: 17px !important;
    font-weight: 900 !important;
    color: #0f172a !important;
    line-height: 1.25 !important;
}
.ais-ui-update-info-subtitle,
.ais-ui-update-info-text,
.ais-ui-update-info-note {
    font-size: 13px !important;
    color: #475569 !important;
    line-height: 1.6 !important;
}
.ais-ui-update-info-note {
    padding: 12px 14px !important;
    border-radius: 14px !important;
    background: rgba(37,99,235,.08) !important;
    border: 1px solid rgba(37,99,235,.13) !important;
    margin: 8px 0 12px 0 !important;
}
.ais-ui-update-info-actions {
    padding-top: 4px !important;
}
.ais-ui-update-info-ok,
.ais-ui-update-info-ok .z-toolbarbutton-body,
.ais-ui-update-info-ok .z-toolbarbutton-cnt {
    border-radius: 999px !important;
    background: linear-gradient(135deg, #16a34a, #15803d) !important;
    color: #ffffff !important;
    font-weight: 900 !important;
    padding: 5px 18px !important;
    border: 1px solid rgba(255,255,255,.72) !important;
    box-shadow: 0 10px 20px rgba(21,128,61,.25) !important;
}
.ecampus-menu-update-callout {
    position: fixed !important;
    z-index: 999999 !important;
    width: 280px !important;
    max-width: calc(100vw - 24px) !important;
    padding: 12px 14px !important;
    border-radius: 14px !important;
    background: linear-gradient(135deg, #fff7ed, #ffffff) !important;
    border: 1px solid rgba(249,115,22,.35) !important;
    color: #7c2d12 !important;
    box-shadow: 0 18px 44px rgba(15,23,42,.24) !important;
    font-family: inherit !important;
    opacity: 0 !important;
    transform: translateY(-6px) !important;
    transition: all .18s ease !important;
}
.ecampus-menu-update-callout:before {
    content: "" !important;
    position: absolute !important;
    top: -8px !important;
    left: 24px !important;
    width: 14px !important;
    height: 14px !important;
    background: #fff7ed !important;
    border-left: 1px solid rgba(249,115,22,.35) !important;
    border-top: 1px solid rgba(249,115,22,.35) !important;
    transform: rotate(45deg) !important;
}
.ecampus-menu-update-callout-show {
    opacity: 1 !important;
    transform: translateY(0) !important;
}
.ecampus-menu-update-callout b {
    display: block !important;
    margin-bottom: 4px !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    color: #9a3412 !important;
}
.ecampus-menu-update-callout span {
    display: block !important;
    font-size: 12px !important;
    line-height: 1.45 !important;
    color: #7c2d12 !important;
}
@media (max-width: 640px) {
    .main-responsive-menu-popup,
    .z-popup.main-responsive-menu-popup,
    .main-responsive-menu-popup .z-popup-cnt {
        width: 92vw !important;
    }
    .main-responsive-menu-popup-close-button,
    .main-responsive-menu-popup-close-button .z-toolbarbutton-body,
    .main-responsive-menu-popup-close-button .z-toolbarbutton-cnt {
        padding-left: 8px !important;
        padding-right: 8px !important;
    }
}
.main-responsive-menu-popup,
.z-popup.main-responsive-menu-popup,
.main-responsive-menu-popup .z-popup-cl,
.main-responsive-menu-popup .z-popup-cm,
.main-responsive-menu-popup .z-popup-cr,
.main-responsive-menu-popup .z-popup-cnt {
    width: 360px !important;
}

/* Patch 2026-06-11 V2: Papan Pengumuman lebih tajam, tetap clean. */
.main-announcement-modern-v7.main-announcement-board-panel,
.main-announcement-board-panel {
    background:
        radial-gradient(circle at 2% 0%, rgba(37,99,235,.18), transparent 29%),
        radial-gradient(circle at 98% 0%, rgba(14,165,233,.16), transparent 28%),
        radial-gradient(circle at 35% 100%, rgba(245,158,11,.10), transparent 34%),
        linear-gradient(180deg, #ffffff 0%, #f5f9ff 100%) !important;
    border: 1px solid rgba(59,130,246,.28) !important;
    box-shadow: 0 18px 42px rgba(15, 23, 42, .09) !important;
}
.main-announcement-board-panel .main-announcement-hero {
    background:
        linear-gradient(135deg, rgba(30,64,175,.13), rgba(14,165,233,.09) 52%, rgba(16,185,129,.08)),
        linear-gradient(180deg, rgba(255,255,255,.72), rgba(255,255,255,.38)) !important;
    border-bottom: 1px solid rgba(96,165,250,.28) !important;
}
.main-announcement-board-panel .main-announcement-eyebrow {
    color: #1e40af !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.75) !important;
}
.main-announcement-board-panel .main-announcement-title {
    color: #081b45 !important;
}
.main-announcement-board-panel .main-announcement-subtitle {
    color: #334155 !important;
}
.main-announcement-board-panel .main-announcement-count {
    background: linear-gradient(135deg, #dbeafe, #eef2ff) !important;
    border-color: rgba(37,99,235,.34) !important;
    color: #1d4ed8 !important;
    box-shadow: 0 6px 14px rgba(37,99,235,.12) !important;
}
.main-announcement-board-card {
    border: 1px solid rgba(148,163,184,.50) !important;
    box-shadow: 0 10px 24px rgba(15,23,42,.065) !important;
}
.main-announcement-board-card:before {
    width: 6px !important;
    opacity: 1 !important;
}
.main-announcement-board-card:after {
    content: "";
    position: absolute;
    right: -38px;
    top: -38px;
    width: 86px;
    height: 86px;
    border-radius: 999px;
    background: rgba(37,99,235,.055);
    pointer-events: none;
}
.main-announcement-tone-primary.main-announcement-board-card,
.main-announcement-tone-primary .main-announcement-board-card,
.main-announcement-card-primary.main-announcement-board-card {
    background: linear-gradient(90deg, rgba(29,78,216,.14), rgba(255,255,255,.98) 36%) !important;
    border-color: rgba(37,99,235,.32) !important;
}
.main-announcement-tone-1.main-announcement-board-card { background: linear-gradient(90deg, rgba(2,132,199,.14), rgba(255,255,255,.98) 36%) !important; border-color: rgba(2,132,199,.24) !important; }
.main-announcement-tone-2.main-announcement-board-card { background: linear-gradient(90deg, rgba(5,150,105,.14), rgba(255,255,255,.98) 36%) !important; border-color: rgba(5,150,105,.24) !important; }
.main-announcement-tone-3.main-announcement-board-card { background: linear-gradient(90deg, rgba(217,119,6,.16), rgba(255,255,255,.98) 36%) !important; border-color: rgba(217,119,6,.25) !important; }
.main-announcement-tone-4.main-announcement-board-card { background: linear-gradient(90deg, rgba(124,58,237,.14), rgba(255,255,255,.98) 36%) !important; border-color: rgba(124,58,237,.24) !important; }
.main-announcement-tone-5.main-announcement-board-card { background: linear-gradient(90deg, rgba(225,29,72,.13), rgba(255,255,255,.98) 36%) !important; border-color: rgba(225,29,72,.23) !important; }
.main-announcement-board-card .main-announcement-chip {
    background: rgba(255,255,255,.78) !important;
    color: #1f2937 !important;
    border: 1px solid rgba(148,163,184,.38) !important;
    box-shadow: 0 4px 10px rgba(15,23,42,.045) !important;
}
.main-announcement-board-card .main-announcement-chip-primary {
    background: linear-gradient(135deg, #1d4ed8, #0ea5e9) !important;
    color: #ffffff !important;
    border-color: rgba(255,255,255,.70) !important;
    text-shadow: 0 1px 1px rgba(15,23,42,.25) !important;
}
.main-announcement-board-link,
.main-announcement-board-link .z-toolbarbutton-cnt {
    color: #020617 !important;
}
.main-announcement-board-desc {
    color: #334155 !important;
}

/* Patch 2026-06-11 V2: Filter pencarian global memakai Popup Window, bukan collapsed panel. */
.ecampus-filter-popup-togglebar {
    width: 100% !important;
    min-height: 42px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    padding: 6px 10px !important;
    box-sizing: border-box !important;
    background: linear-gradient(135deg, #f8fafc, #eff6ff) !important;
    border: 1px solid rgba(147,197,253,.65) !important;
    border-radius: 12px !important;
    box-shadow: 0 6px 14px rgba(15,23,42,.055) !important;
}
.ecampus-filter-popup-toggle-button {
    border: 0 !important;
    outline: none !important;
    cursor: pointer !important;
    border-radius: 999px !important;
    padding: 8px 16px !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    color: #ffffff !important;
    background: linear-gradient(135deg, #1d4ed8, #0891b2) !important;
    box-shadow: 0 8px 18px rgba(37,99,235,.25) !important;
    line-height: 1.1 !important;
}
.ecampus-filter-popup-toggle-button:hover {
    filter: brightness(1.06) !important;
    transform: translateY(-1px) !important;
}
.ecampus-filter-popup-mask {
    position: fixed !important;
    z-index: 99999 !important;
    left: 0 !important;
    top: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    align-items: flex-start !important;
    justify-content: center !important;
    padding: 72px 18px 18px 18px !important;
    box-sizing: border-box !important;
    background: rgba(15,23,42,.38) !important;
    backdrop-filter: blur(3px) !important;
}
.ecampus-filter-popup-window {
    width: min(980px, calc(100vw - 36px)) !important;
    max-height: calc(100vh - 110px) !important;
    background: #ffffff !important;
    border: 1px solid rgba(37,99,235,.22) !important;
    border-radius: 18px !important;
    box-shadow: 0 24px 70px rgba(15,23,42,.26) !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}
.ecampus-filter-popup-head {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 13px 16px !important;
    background: linear-gradient(135deg, #1e3a8a, #0f766e) !important;
    color: #ffffff !important;
}
.ecampus-filter-popup-title {
    font-weight: 900 !important;
    font-size: 15px !important;
    letter-spacing: .02em !important;
}
.ecampus-filter-popup-x,
.ecampus-filter-popup-close {
    border: 0 !important;
    cursor: pointer !important;
    border-radius: 999px !important;
    font-weight: 900 !important;
}
.ecampus-filter-popup-x {
    width: 30px !important;
    height: 30px !important;
    line-height: 28px !important;
    color: #ffffff !important;
    background: rgba(255,255,255,.18) !important;
    border: 1px solid rgba(255,255,255,.35) !important;
    font-size: 20px !important;
}
.ecampus-filter-popup-x:hover { background: rgba(239,68,68,.92) !important; }
.ecampus-filter-popup-info {
    padding: 10px 16px !important;
    font-size: 12px !important;
    line-height: 1.45 !important;
    color: #334155 !important;
    background: linear-gradient(135deg, #eff6ff, #f8fafc) !important;
    border-bottom: 1px solid rgba(226,232,240,.95) !important;
}
.ecampus-filter-popup-body {
    padding: 14px 16px 8px 16px !important;
    max-height: calc(100vh - 250px) !important;
    overflow: auto !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
}
.ecampus-filter-popup-body .z-grid,
.ecampus-filter-popup-body .z-grid-body,
.ecampus-filter-popup-body table {
    width: 100% !important;
    max-width: 100% !important;
}
.ecampus-filter-popup-body .z-toolbar {
    width: 100% !important;
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    align-items: center !important;
}
.ecampus-filter-popup-foot {
    display: flex !important;
    justify-content: flex-end !important;
    padding: 10px 16px 14px 16px !important;
    background: #f8fafc !important;
    border-top: 1px solid rgba(226,232,240,.95) !important;
}
.ecampus-filter-popup-close {
    padding: 8px 18px !important;
    color: #ffffff !important;
    background: linear-gradient(135deg, #0f172a, #334155) !important;
    box-shadow: 0 8px 18px rgba(15,23,42,.18) !important;
}
@media (max-width: 768px) {
    .ecampus-filter-popup-mask { padding: 56px 10px 10px 10px !important; }
    .ecampus-filter-popup-window { width: calc(100vw - 20px) !important; max-height: calc(100vh - 74px) !important; border-radius: 15px !important; }
    .ecampus-filter-popup-body { max-height: calc(100vh - 210px) !important; padding: 12px !important; }
    .ecampus-filter-popup-togglebar { padding: 6px 8px !important; }
    .ecampus-filter-popup-toggle-button { width: 100% !important; padding: 9px 12px !important; }
}

/* Patch 2026-06-11 V3: rapikan tombol popup informasi/dropdown agar tidak terlihat berlapis. */
.ais-ui-update-info-ok,
.ais-ui-update-info-ok.z-toolbarbutton,
.main-responsive-menu-popup-close-button,
.main-responsive-menu-popup-close-button.z-toolbarbutton {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    text-shadow: none !important;
}
.ais-ui-update-info-ok .z-toolbarbutton-body,
.main-responsive-menu-popup-close-button .z-toolbarbutton-body {
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
}
.ais-ui-update-info-ok .z-toolbarbutton-cnt,
.main-responsive-menu-popup-close-button .z-toolbarbutton-cnt {
    display: inline-block !important;
    box-sizing: border-box !important;
    color: #ffffff !important;
    border-radius: 999px !important;
    border: 1px solid rgba(255,255,255,.70) !important;
    font-weight: 900 !important;
    text-align: center !important;
    text-shadow: 0 1px 2px rgba(0,0,0,.20) !important;
}
.ais-ui-update-info-ok .z-toolbarbutton-cnt {
    padding: 10px 28px !important;
    min-width: 142px !important;
    background: linear-gradient(135deg, #22c55e 0%, #16a34a 50%, #15803d 100%) !important;
    box-shadow: 0 12px 24px rgba(21,128,61,.28) !important;
}
.ais-ui-update-info-ok:hover .z-toolbarbutton-cnt,
.ais-ui-update-info-ok.z-toolbarbutton-over .z-toolbarbutton-cnt {
    background: linear-gradient(135deg, #4ade80 0%, #16a34a 55%, #166534 100%) !important;
    box-shadow: 0 14px 28px rgba(21,128,61,.34) !important;
}
.main-responsive-menu-popup-close-button .z-toolbarbutton-cnt {
    height: 32px !important;
    line-height: 30px !important;
    padding: 0 16px !important;
    min-width: 72px !important;
    background: linear-gradient(135deg, #ef4444 0%, #dc2626 52%, #991b1b 100%) !important;
    box-shadow: 0 8px 16px rgba(185,28,28,.30) !important;
}
.main-responsive-menu-popup-close-button:hover .z-toolbarbutton-cnt,
.main-responsive-menu-popup-close-button.z-toolbarbutton-over .z-toolbarbutton-cnt {
    background: linear-gradient(135deg, #fb7185 0%, #ef4444 52%, #b91c1c 100%) !important;
}
.ecampus-menu-update-callout button {
    display: inline-block !important;
    margin-top: 10px !important;
    padding: 7px 14px !important;
    border: 1px solid rgba(249,115,22,.28) !important;
    border-radius: 999px !important;
    background: linear-gradient(135deg, #f97316, #ea580c) !important;
    color: #ffffff !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
    box-shadow: 0 8px 18px rgba(234,88,12,.25) !important;
}
.ecampus-menu-update-callout button:hover {
    background: linear-gradient(135deg, #fb923c, #f97316) !important;
}

/* Patch 2026-06-11: Papan Pengumuman warna lebih tajam namun tetap nyaman. */
.main-announcement-board-panel,
.main-announcement-modern-v6.main-announcement-board-panel {
    background:
        radial-gradient(circle at 0% 0%, rgba(37,99,235,.20), transparent 31%),
        radial-gradient(circle at 100% 0%, rgba(20,184,166,.16), transparent 30%),
        radial-gradient(circle at 18% 100%, rgba(249,115,22,.10), transparent 26%),
        linear-gradient(180deg, #ffffff 0%, #f6faff 100%) !important;
    border: 1px solid #bfd4ee !important;
    box-shadow: 0 18px 42px rgba(15,23,42,.09) !important;
}
.main-announcement-board-panel .main-announcement-hero {
    background:
        linear-gradient(135deg, rgba(29,78,216,.16), rgba(14,165,233,.10) 52%, rgba(16,185,129,.12)) !important;
    border-bottom: 1px solid rgba(96,165,250,.28) !important;
}
.main-announcement-board-panel .main-announcement-eyebrow,
.main-announcement-board-panel .main-announcement-group .z-label {
    color: #174ea6 !important;
    text-shadow: 0 1px 0 rgba(255,255,255,.85) !important;
}
.main-announcement-board-panel .main-announcement-title {
    color: #071933 !important;
}
.main-announcement-board-panel .main-announcement-search-panel {
    background: rgba(255,255,255,.86) !important;
    border-top: 1px solid rgba(147,197,253,.38) !important;
    border-bottom: 1px solid rgba(147,197,253,.28) !important;
}
.main-announcement-board-card,
.main-announcement-card.main-announcement-board-card {
    border: 1px solid rgba(148,163,184,.42) !important;
    box-shadow: 0 10px 24px rgba(15,23,42,.07) !important;
    background: linear-gradient(90deg, rgba(37,99,235,.08), rgba(255,255,255,.99) 24%) !important;
}
.main-announcement-board-card:before {
    width: 6px !important;
    opacity: 1 !important;
    box-shadow: 2px 0 10px rgba(37,99,235,.17) !important;
}
.main-announcement-board-card:hover {
    border-color: rgba(37,99,235,.34) !important;
    box-shadow: 0 16px 34px rgba(15,23,42,.12) !important;
}
.main-announcement-tone-primary.main-announcement-board-card,
.main-announcement-tone-primary .main-announcement-board-card {
    background: linear-gradient(90deg, rgba(37,99,235,.14), rgba(255,255,255,.99) 28%) !important;
}
.main-announcement-tone-primary.main-announcement-board-card:before,
.main-announcement-tone-primary .main-announcement-board-card:before { background: #1d4ed8 !important; }
.main-announcement-tone-1.main-announcement-board-card { background: linear-gradient(90deg, rgba(14,165,233,.14), rgba(255,255,255,.99) 28%) !important; }
.main-announcement-tone-1.main-announcement-board-card:before { background: #0284c7 !important; }
.main-announcement-tone-2.main-announcement-board-card { background: linear-gradient(90deg, rgba(16,185,129,.14), rgba(255,255,255,.99) 28%) !important; }
.main-announcement-tone-2.main-announcement-board-card:before { background: #059669 !important; }
.main-announcement-tone-3.main-announcement-board-card { background: linear-gradient(90deg, rgba(245,158,11,.17), rgba(255,255,255,.99) 28%) !important; }
.main-announcement-tone-3.main-announcement-board-card:before { background: #d97706 !important; }
.main-announcement-tone-4.main-announcement-board-card { background: linear-gradient(90deg, rgba(168,85,247,.15), rgba(255,255,255,.99) 28%) !important; }
.main-announcement-tone-4.main-announcement-board-card:before { background: #7c3aed !important; }
.main-announcement-tone-5.main-announcement-board-card { background: linear-gradient(90deg, rgba(244,63,94,.14), rgba(255,255,255,.99) 28%) !important; }
.main-announcement-tone-5.main-announcement-board-card:before { background: #e11d48 !important; }
.main-announcement-board-card .main-announcement-chip {
    background: #eef6ff !important;
    border-color: #cfe0f5 !important;
    color: #173b73 !important;
}
.main-announcement-board-card .main-announcement-chip-primary {
    background: linear-gradient(135deg, #bfdbfe, #dbeafe) !important;
    border-color: #93c5fd !important;
    color: #0f3b82 !important;
}

/* Patch 2026-06-11: Filter pencarian ZUL dipindah statis ke window popup, tanpa timer DOM mover. */
.ecampus-zul-filter-launcher-north,
.ecampus-zul-filter-launcher-north .z-north-body,
.ecampus-zul-filter-launcher-north .z-north-cnt {
    background: linear-gradient(135deg, #f8fbff, #eef6ff 56%, #fff7ed) !important;
    border: 0 !important;
    overflow: visible !important;
    box-sizing: border-box !important;
}
.ecampus-zul-filter-launcher {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    width: 100% !important;
    padding: 9px 14px !important;
    border-bottom: 1px solid rgba(148,163,184,.22) !important;
    box-sizing: border-box !important;
}
.ecampus-zul-filter-open-button,
.ecampus-zul-filter-open-button .z-toolbarbutton-body {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
}
.ecampus-zul-filter-open-button .z-toolbarbutton-cnt,
.ecampus-zul-filter-open-button.z-toolbarbutton-over .z-toolbarbutton-cnt {
    display: inline-block !important;
    color: #ffffff !important;
    font-weight: 900 !important;
    font-size: 12px !important;
    line-height: 18px !important;
    padding: 8px 15px !important;
    border-radius: 999px !important;
    background: linear-gradient(135deg, #1d4ed8, #0ea5e9) !important;
    border: 1px solid rgba(255,255,255,.62) !important;
    box-shadow: 0 9px 18px rgba(37,99,235,.24) !important;
    text-shadow: 0 1px 1px rgba(15,23,42,.22) !important;
}
.ecampus-zul-filter-open-button:hover .z-toolbarbutton-cnt,
.ecampus-zul-filter-open-button.z-toolbarbutton-over .z-toolbarbutton-cnt {
    transform: translateY(-1px) !important;
    filter: brightness(1.06) !important;
}
.ecampus-zul-filter-launcher-hint {
    color: #52627a !important;
    font-size: 12px !important;
    font-weight: 600 !important;
}
.ecampus-zul-filter-window,
.ecampus-zul-filter-window .z-window-highlighted-cnt,
.ecampus-zul-filter-window .z-window-popup-cnt,
.ecampus-zul-filter-window .z-window-overlapped-cnt {
    border-radius: 18px !important;
    overflow: hidden !important;
    border: 1px solid rgba(37,99,235,.18) !important;
    box-shadow: 0 22px 60px rgba(15,23,42,.24) !important;
    background: #ffffff !important;
    box-sizing: border-box !important;
}
.ecampus-zul-filter-window .z-window-highlighted-header,
.ecampus-zul-filter-window .z-window-popup-header,
.ecampus-zul-filter-window .z-window-overlapped-header {
    background: linear-gradient(135deg, #1e3a8a, #1d4ed8) !important;
    color: #ffffff !important;
    font-weight: 900 !important;
    padding: 10px 14px !important;
}
.ecampus-zul-filter-window-body {
    padding: 14px !important;
    background: linear-gradient(180deg, #ffffff, #f8fbff) !important;
    box-sizing: border-box !important;
    overflow: auto !important;
}
.ecampus-zul-filter-window-info {
    color: #475569 !important;
    background: #eff6ff !important;
    border: 1px solid #dbeafe !important;
    border-radius: 12px !important;
    padding: 10px 12px !important;
    margin-bottom: 8px !important;
    display: block !important;
    font-weight: 700 !important;
}
.ecampus-zul-filter-window .z-grid,
.ecampus-zul-filter-window .z-grid-body,
.ecampus-zul-filter-window .z-rows,
.ecampus-zul-filter-window .z-toolbar {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.ecampus-zul-filter-window .z-grid {
    border-radius: 14px !important;
    overflow: hidden !important;
    border: 1px solid rgba(203,213,225,.62) !important;
}
.ecampus-zul-filter-window .z-toolbar {
    border-radius: 12px !important;
    background: linear-gradient(135deg, #f8fafc, #eef6ff) !important;
    padding: 9px 10px !important;
    border: 1px solid rgba(203,213,225,.56) !important;
}
@media (max-width: 768px) {
    .ecampus-zul-filter-launcher {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 6px !important;
        padding: 8px !important;
    }
    .ecampus-zul-filter-open-button .z-toolbarbutton-cnt {
        text-align: center !important;
        width: 100% !important;
        box-sizing: border-box !important;
    }
    .ecampus-zul-filter-launcher-hint {
        display: none !important;
    }
    .ecampus-zul-filter-window {
        width: 96vw !important;
        max-width: 96vw !important;
        height: 82vh !important;
        max-height: 82vh !important;
    }
}

/* ======================================================================
   FILTER PENCARIAN ZUL SEBAGAI POPUP (addWindowPencarian -> <popup>)
   Popup bukan IdSpace sehingga autowire GenericAutowireComposer tetap
   berfungsi. Styling popup + launcher + pencarian cepat.
   ====================================================================== */

.z-popup.ecampus-zul-filter-window,
.ecampus-zul-filter-window .z-popup-cl,
.ecampus-zul-filter-window .z-popup-cnt {
    background: #ffffff !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .25) !important;
    border-radius: 14px !important;
    box-shadow: 0 24px 60px rgba(15, 23, 42, .30) !important;
    overflow: hidden !important;
}

.ecampus-zul-filter-window .z-popup-cnt {
    max-height: 72vh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 12px 14px !important;
    box-sizing: border-box !important;
}

.ecampus-zul-filter-window-body {
    width: 100% !important;
    height: auto !important;
}

.ecampus-zul-filter-window-info {
    display: block !important;
    padding: 8px 12px !important;
    margin-bottom: 6px !important;
    border-radius: 10px !important;
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .08) !important;
    color: #334155 !important;
    font-size: 12px !important;
}

/* Launcher: tombol buka filter + pencarian cepat + tambah, sejajar rapi */
.ecampus-zul-filter-launcher {
    display: flex !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding: 8px 10px !important;
    box-sizing: border-box !important;
}

.ecampus-zul-filter-launcher .z-toolbarbutton {
    margin: 0 !important;
}

.ecampus-zul-filter-launcher-hint {
    color: #94a3b8 !important;
    font-size: 11px !important;
}

/* Field pencarian cepat */
input.ecampus-zul-quick-search,
.ecampus-zul-quick-search {
    height: 30px !important;
    padding: 5px 14px !important;
    box-sizing: border-box !important;
    font-size: 12.5px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
}

input.ecampus-zul-quick-search:focus {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .15) !important;
    outline: none !important;
}

/* Baris jarak di sekitar grid data (atas: jarak dari filter/paging,
   bawah: agar baris terakhir tidak tertutup footer) */
.ecampus-grid-gap-row,
.ecampus-grid-gap-row .z-row-inner,
.ecampus-grid-gap-row .z-cell,
.ecampus-grid-gap-row .z-row-cnt {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}

.ecampus-grid-gap-atas {
    height: 12px !important;
}

.ecampus-grid-gap-bawah {
    height: 64px !important;
}

/* ======================================================================
   PENTING: hormati visible="false" ZK di baris tombol modul header.
   ZK menyembunyikan komponen dengan inline style="display:none"; rule
   display:!important di atas sempat memaksa tombol tersembunyi ikut
   tampil. Pengecualian ini mengembalikan perilaku visible per-role.
   ====================================================================== */
.main-responsive-module-row .z-toolbarbutton[style*="display:none"],
.main-responsive-module-row .z-toolbarbutton[style*="display: none"],
.main-responsive-module-strip .z-toolbarbutton[style*="display:none"],
.main-responsive-module-strip .z-toolbarbutton[style*="display: none"],
.main-responsive-module-strip td[style*="display:none"],
.main-responsive-module-strip td[style*="display: none"],
.main-responsive-module-strip td.z-hbox-sep[style*="display:none"] {
    display: none !important;
}

/* Pengecualian serupa untuk pola umum lain yang memaksa display */
.z-north .z-grid .z-hbox td[style*="display:none"],
.z-north .z-grid .z-hbox td[style*="display: none"],
.ecampus-filter-popup-body .z-hbox td[style*="display:none"],
.ecampus-filter-popup-body .z-hbox td[style*="display: none"],
.ecampus-zul-filter-launcher .z-toolbarbutton[style*="display:none"],
.ecampus-zul-filter-launcher .z-toolbarbutton[style*="display: none"] {
    display: none !important;
}

/* Pengaman generik: semua class yang di-styling dengan display:...!important
   tetap harus menghilang bila ZK menyetel visible=false (inline display:none) */
.ais-btn[style*="display:none"],
.ais-btn[style*="display: none"],
.z-north .z-grid .z-checkbox[style*="display:none"],
.z-north .z-grid .z-checkbox[style*="display: none"],
.ecampus-filter-popup-body .z-checkbox[style*="display:none"],
.ecampus-filter-popup-body .z-checkbox[style*="display: none"],
.ecampus-filter-popup-body .z-combobox[style*="display:none"],
.ecampus-filter-popup-body .z-bandbox[style*="display:none"],
.ecampus-filter-popup-body .z-datebox[style*="display:none"],
.z-north .z-grid .z-combobox[style*="display:none"],
.z-north .z-grid .z-bandbox[style*="display:none"],
.main-responsive-header-right .users_online_button[style*="display:none"],
.elearning-portal-shell [style*="display:none"][class*="z-toolbarbutton"] {
    display: none !important;
}

/* ======================================================================
   Filter inline (selalu tampil) untuk halaman pembayaran/daftar ulang.
   Dipakai daftarulang_mahasiswa_{calon,baru,lama}.zul; dikecualikan dari
   mekanisme popup-filter otomatis.
   ====================================================================== */
.ecampus-inline-filter-north {
    background: transparent !important;
}

.ecampus-inline-filter {
    box-sizing: border-box !important;
    padding: 8px 10px !important;
    background: linear-gradient(135deg,
        rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .08),
        rgba(255, 255, 255, .9)) !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 37, 99, 235), .20) !important;
    border-radius: 12px !important;
    margin: 4px 6px !important;
    box-shadow: 0 5px 14px rgba(15, 23, 42, .06) !important;
}

.ecampus-inline-filter-grid,
.ecampus-inline-filter-grid .z-grid-body,
.ecampus-inline-filter-grid tr.z-row td.z-row-inner,
.ecampus-inline-filter-grid .z-cell {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.ecampus-inline-filter-grid .z-row-cnt {
    padding: 3px 6px !important;
}

.ecampus-inline-filter .z-label {
    font-size: 12px !important;
    font-weight: 700 !important;
    color: #475569 !important;
}

.ecampus-inline-filter .z-bandbox-inp,
.ecampus-inline-filter .z-combobox-inp {
    height: 26px !important;
    padding: 3px 10px !important;
    box-sizing: border-box !important;
    font-size: 12.5px !important;
    border: 1px solid #cbd5e1 !important;
    border-right: 0 !important;
    border-radius: 8px 0 0 8px !important;
    background: #ffffff !important;
}

.ecampus-inline-filter .z-bandbox-btn,
.ecampus-inline-filter .z-combobox-btn {
    height: 26px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-left: 0 !important;
    border-radius: 0 8px 8px 0 !important;
    background-color: #f8fafc !important;
}

/* ======================================================================
   NORMALISASI FINAL MENU DROPDOWN (patch 2026-06-11c)
   1) Item menu level-atas: TRANSPARAN penuh (tanpa kapsul/border) agar
      menyatu dengan background tema apa pun.
   2) Hover/aktif: kapsul putih translusen yang selalu kontras dengan
      warna dasar tema - bukan hitam dari sprite bawaan ZK/tema lama.
   Ditaruh paling akhir + selector html body agar menang kaskade &
   spesifisitas atas semua patch sebelumnya.
   ====================================================================== */

/* --- Keadaan normal: polos --- */
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item,
html body .main-responsive-menu-popup .z-menubar-ver td.z-menu,
html body .main-responsive-menu-popup .z-menubar-ver td.z-menu-item,
html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-item-body,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-inner-l,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-inner-m,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-inner-r,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-inner-l,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-inner-m,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-inner-r,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-space,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-space {
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    border: 0 !important;
    box-shadow: none !important;
}

html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-item-body {
    border-radius: 8px !important;
    overflow: hidden !important;
}

/* --- Hover / sedang dibuka / diklik: kapsul terang kontras --- */
html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-body:hover,
html body .main-responsive-menu-popup .z-menubar-ver table.z-menu-item-body:hover,
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item:hover > table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item.z-menu-over > table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver td.z-menu.z-menu-over > table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item.z-menu-body-clk > table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver td.z-menu.z-menu-body-clk > table.z-menu-body,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-body-over,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-body-over,
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item.z-menu-item-over > a > table.z-menu-item-body,
html body .main-responsive-menu-popup .z-menubar-ver td.z-menu-item.z-menu-item-over > a > table.z-menu-item-body,
html body .main-responsive-menu-popup .z-menubar-ver td.menu_item > a:hover > table.z-menu-item-body {
    background: transparent !important;
    background-image: none !important;
    border: 0 !important;
    border-radius: 8px !important;
    box-shadow: none !important;
}

/* Sel di dalam keadaan hover juga tidak boleh menggambar sprite gelap */
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-body-over .z-menu-inner-l,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-body-over .z-menu-inner-m,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-body-over .z-menu-inner-r,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-body-over .z-menu-item-inner-l,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-body-over .z-menu-item-inner-m,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-body-over .z-menu-item-inner-r {
    background: transparent !important;
    background-image: none !important;
    border: 0 !important;
}

/* --- Teks & ikon: selalu warna kontras tema (normal maupun hover) --- */
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-btn,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-btn,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-body-over .z-menu-btn,
html body .main-responsive-menu-popup .z-menubar-ver .z-menu-item-body-over .z-menu-item-btn {
    background-color: transparent !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
    text-shadow: none !important;
}

/* --- Submenu bertingkat: hover terang kontras, bukan hitam --- */
html body .z-menu-popup-cnt li.z-menu-over,
html body .z-menu-popup-cnt li.z-menu-item-over,
html body .z-menu-popup-cnt li.z-menu:hover,
html body .z-menu-popup-cnt li.z-menu-item:hover {
    background: rgba(255, 255, 255, .22) !important;
    background-image: none !important;
    border-radius: 8px !important;
}

html body .z-menu-popup-cnt .z-menu-over a.z-menu-cnt,
html body .z-menu-popup-cnt .z-menu-item-over a.z-menu-item-cnt,
html body .z-menu-popup-cnt li:hover a.z-menu-cnt,
html body .z-menu-popup-cnt li:hover a.z-menu-item-cnt {
    background: transparent !important;
    background-image: none !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
}

/* ======================================================================
   MODE KANVAS TINGGI + SATU SCROLL TERPUSAT (patch 2026-06-12)
   Frame utama dibuat setinggi konfigurasi (tinggi_iframe_baru_banget /
   tinggi_iframe_mobile_baru; nilai dialirkan JS ke --ais-kanvas-tinggi,
   bisa diset mis. 20000px). Semua tab/panel mengikuti tinggi penuh
   tanpa scroll lokal; scroll tunggal berada di area konten utama.
   Footer dibuat melayang tetap di bawah.
   ====================================================================== */

/* Frame utama: tinggi kanvas penuh, tidak lagi pas-viewport */
.main-responsive-frame {
    height: var(--ais-kanvas-tinggi, 1750px) !important;
    min-height: 600px !important;
    max-height: none !important;
    overflow: visible !important;
}

/* Rantai tab utama: penuhi tinggi frame, tanpa scrollbar lokal */
.main-responsive-center,
.main-responsive-center .z-center-body,
.main-responsive-tabbox,
.main-responsive-tabpanels,
.main-responsive-tabpanels .z-tabpanel,
.main-responsive-tabpanels .z-tabpanel-cnt,
.main-responsive-home-panel,
.main-responsive-home-panel .z-tabpanel-cnt {
    height: 100% !important;
    max-height: none !important;
    overflow-y: hidden !important;
    overflow-x: hidden !important;
}

/* Grid body di dalam tab: hanya scroll horizontal bila tabel lebar */
.main-responsive-home-panel .z-grid-body,
.main-responsive-tabpanels .z-grid-body {
    overflow-y: visible !important;
    max-height: none !important;
}

/* Sidebar (mode lama) ikut tinggi frame */
.main-responsive-frame .main-responsive-sidebar,
.main-responsive-frame .z-west.main-responsive-sidebar {
    height: 100% !important;
    max-height: none !important;
}

/* Footer DIHILANGKAN total: area bawah benar-benar full frame */
.main-responsive-footer,
.headerHbox.main-responsive-footer {
    display: none !important;
    height: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
}

/* Baris grid yang dulu menampung footer ikut dikempiskan */
.main-responsive-main-grid {
    padding-bottom: 0 !important;
}

/* Sub-konten di dalam tab dipaksa tinggi penuh mengikuti kanvas:
   iframe/include/window-embedded yang jadi anak langsung tabpanel */
.main-responsive-tabpanels .z-tabpanel iframe,
.main-responsive-tabpanels .z-tabpanel .z-iframe,
.main-responsive-tabpanels .z-tabpanel-cnt > iframe,
.main-responsive-tabpanels .z-tabpanel-cnt > .z-iframe,
.main-responsive-tabpanels .z-tabpanel-cnt > .z-include,
.main-responsive-tabpanels .z-tabpanel-cnt > .z-window-embedded,
.main-responsive-tabpanels .z-tabpanel-cnt > .z-window-embedded > .z-window-embedded-cnt,
.main-responsive-home-panel .z-tabpanel-cnt > .z-include {
    width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    max-height: none !important;
    border: 0 !important;
    box-sizing: border-box !important;
}

/* ======================================================================
   PMB / PSB MODERN (pmb.zul & psb.zul, patch 2026-06-12)
   Shell publik penerimaan mahasiswa/siswa baru: kop bertema, toolbar
   menu pill yang wrap di mobile, kontainer kartu, footer rapi.
   Mengikuti variabel tema (--ais-theme-*).
   ====================================================================== */

.pmb-zk-window {
    background: #f1f5f9 !important;
}

/* Shell dipusatkan di desktop, penuh di mobile */
.pmb-zk-shell,
.pmb-zk-shell .z-grid-body {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.pmb-zk-shell tr.z-row td.z-row-inner,
.pmb-zk-shell .z-cell {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}

.pmb-zk-shell .z-row-cnt {
    padding: 0 !important;
    max-width: 1240px !important;
    margin: 0 auto !important;
    float: none !important;
}

/* Kop: kartu gradien tema dengan logo + judul */
.pmb-zk-window #kopBox,
.pmb-zk-window .headerHbox {
    border-radius: 0 0 18px 18px !important;
    box-shadow: 0 10px 26px rgba(15, 23, 42, .16) !important;
    overflow: hidden !important;
}

.pmb-zk-window .title1 {
    font-size: 20px !important;
    font-weight: 800 !important;
    letter-spacing: -.01em !important;
}

.pmb-zk-window .motto {
    font-size: 12.5px !important;
    opacity: .92 !important;
}

/* Toolbar menu utama: pill bertema, wrap otomatis di layar sempit */
.pmb-zk-toolbar,
.pmb-zk-window .z-toolbar {
    background: transparent !important;
    border: 0 !important;
    padding: 10px 4px 2px 4px !important;
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    justify-content: center !important;
}

.pmb-zk-toolbar .z-toolbarbutton {
    margin: 0 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .25) !important;
    box-shadow: 0 2px 8px rgba(15, 23, 42, .06) !important;
    transition: transform .15s ease, box-shadow .15s ease !important;
}

.pmb-zk-toolbar .z-toolbarbutton .z-toolbarbutton-cnt {
    padding: 7px 14px !important;
    color: var(--ais-theme-primary, #0c71c3) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
}

.pmb-zk-toolbar .z-toolbarbutton:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .22) !important;
    border-color: var(--ais-theme-primary, #0c71c3) !important;
}

/* Kontainer konten: kartu putih lega */
.pmb-zk-container {
    background: #ffffff !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 16px !important;
    box-shadow: 0 10px 26px rgba(15, 23, 42, .07) !important;
    padding: 14px !important;
    margin: 10px 0 14px 0 !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
}

.pmb-zk-container .fgrid,
.pmb-zk-container .dgrid {
    border-radius: 12px !important;
    overflow: hidden !important;
}

/* Footer publik */
.pmb-zk-window #footer {
    border-radius: 18px 18px 0 0 !important;
    margin-top: 6px !important;
}

/* Mobile */
@media screen and (max-width: 768px) {
    .pmb-zk-shell .z-row-cnt {
        max-width: 100% !important;
        padding: 0 4px !important;
    }
    .pmb-zk-window .title1 {
        font-size: 16px !important;
    }
    .pmb-zk-toolbar .z-toolbarbutton .z-toolbarbutton-cnt {
        padding: 6px 11px !important;
        font-size: 11.5px !important;
    }
    .pmb-zk-container {
        padding: 8px !important;
        border-radius: 12px !important;
    }
}

/* ======================================================================
   SCROLL ASSIST (patch 2026-06-12b)
   Scrollbar default scroller utama disembunyikan; navigasi vertikal
   memakai panel tombol melayang (bisa ditahan untuk scroll kontinu).
   ====================================================================== */
.ais-scroll-host {
    scrollbar-width: none !important;       /* Firefox */
    -ms-overflow-style: none !important;    /* IE/Edge lama */
}
.ais-scroll-host::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;               /* Chrome/Safari */
}

.ais-scroll-assist {
    position: fixed !important;
    right: 10px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 1900 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    padding: 8px 6px !important;
    background: rgba(255, 255, 255, .92) !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
    border-radius: 999px !important;
    box-shadow: 0 10px 26px rgba(15, 23, 42, .22) !important;
}

.ais-scroll-assist-btn {
    width: 34px !important;
    height: 34px !important;
    border: 0 !important;
    border-radius: 50% !important;
    cursor: pointer !important;
    font-size: 12px !important;
    line-height: 1 !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
    background: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 3px 8px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .35) !important;
    -webkit-user-select: none !important;
    user-select: none !important;
}

.ais-scroll-assist-btn:hover {
    filter: brightness(1.12);
}

.ais-scroll-assist-btn:active {
    transform: scale(.94);
}

@media screen and (max-width: 768px) {
    .ais-scroll-assist { right: 4px !important; }
    .ais-scroll-assist-btn { width: 40px !important; height: 40px !important; }
}

/* Label field pencarian cepat (pengganti placeholder ZK 5) */
.ecampus-zul-quick-label {
    font-size: 11px !important;
    font-weight: 700 !important;
    color: black !important;
    margin: 0 2px 0 6px !important;
    white-space: nowrap !important;
}

/* Tombol proxy Tambah/Cari/Refresh di launcher */
.ecampus-zul-launcher-proxy {
    border-radius: 999px !important;
}

/* ======================================================================
   PENERAPAN TEMA PENUH PMB/PSB (patch 2026-06-12c)
   Pilihan tema (buatTema: Sekolah.css/Pendaftar.css/PerguruanTinggi.css)
   sudah dimuat MyThemeProvider untuk pmb.zul & psb.zul; blok ini
   memastikan SEMUA elemen halaman ikut variabel tema tsb.
   ====================================================================== */

/* Sisa warna hardcoded di PMBAction/PSBAction & helper pmb/psb */
[style*="#4CAF50"],
[style*="background:#4CAF50"],
[style*="background: #4CAF50"] {
    background: var(--ais-theme-primary, #4CAF50) !important;
    border-color: var(--ais-theme-primary, #4CAF50) !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
}

.pmb-zk-window [style*="#F5F5F5"],
.pmb-zk-window [style*="#f5f5f5"] {
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .06) !important;
}

.pmb-zk-window [style*="#bdbbbb"] {
    border-color: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
}

/* Semua tombol ZK standar di halaman PMB/PSB: pill warna tema
   (struktur slice 3x3 z-button diratakan, pola sama dgn messagebox) */
.pmb-zk-window .z-button-tl, .pmb-zk-window .z-button-tm, .pmb-zk-window .z-button-tr,
.pmb-zk-window .z-button-cl, .pmb-zk-window .z-button-cr,
.pmb-zk-window .z-button-bl, .pmb-zk-window .z-button-bm, .pmb-zk-window .z-button-br {
    background: none !important;
    border: 0 !important;
    padding: 0 !important;
    width: 0 !important;
    height: 0 !important;
    font-size: 0 !important;
    line-height: 0 !important;
}

.pmb-zk-window .z-button-cm {
    display: inline-block !important;
    min-width: 86px !important;
    padding: 8px 20px !important;
    border-radius: 999px !important;
    background: var(--ais-theme-primary, #0c71c3) !important;
    border: 1px solid var(--ais-theme-primary, #0c71c3) !important;
    color: var(--ais-theme-contrast, #ffffff) !important;
    font-size: 12.5px !important;
    font-weight: 800 !important;
    text-align: center !important;
    cursor: pointer !important;
    box-shadow: 0 5px 14px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .30) !important;
}

.pmb-zk-window .z-button:hover .z-button-cm {
    filter: brightness(1.08);
}

/* Link & aksen */
.pmb-zk-window .z-a {
    color: var(--ais-theme-primary, #0c71c3) !important;
}

/* Header grid/listbox & panel di konten PMB/PSB */
.pmb-zk-window .z-grid-header tr.z-columns,
.pmb-zk-window div.z-grid-header,
.pmb-zk-window .z-panel-header {
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .08) !important;
    color: #1e293b !important;
}

/* Input fokus mengikuti tema */
.pmb-zk-window input.z-textbox:focus,
.pmb-zk-window .z-combobox-inp:focus,
.pmb-zk-window .z-bandbox-inp:focus,
.pmb-zk-window .z-datebox-inp:focus {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .15) !important;
    outline: none !important;
}

/* Progressmeter / paging aktif ikut tema */
.pmb-zk-window .z-paging-button-seld,
.pmb-zk-window .z-progressmeter-img {
    background-color: var(--ais-theme-primary, #0c71c3) !important;
}

/* ======================================================================
   HALAMAN LOGIN CALON (PMB & PSB) - kartu modern bertema
   login_calon_mahasiswa.zul & login_calon_siswa.zul
   ====================================================================== */
.ecampus-login-window {
    background:
        radial-gradient(circle at 18% 12%, rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .14), transparent 42%),
        radial-gradient(circle at 85% 90%, rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .10), transparent 40%),
        #f1f5f9 !important;
}

/* Kartu login dipusatkan */
.ecampus-login-card {
    max-width: 620px !important;
    margin: 26px auto !important;
    background: #ffffff !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .22) !important;
    border-radius: 18px !important;
    box-shadow: 0 18px 44px rgba(15, 23, 42, .14) !important;
    overflow: hidden !important;
}

.ecampus-login-card .z-grid-body,
.ecampus-login-card tr.z-row td.z-row-inner,
.ecampus-login-card .z-cell {
    background: #ffffff !important;
    border: 0 !important;
}

.ecampus-login-card .z-row-cnt {
    padding: 10px 16px !important;
}

.ecampus-login-card .z-label {
    font-size: 12.5px !important;
    font-weight: 700 !important;
    color: #475569 !important;
    line-height: 1.45 !important;
    white-space: normal !important;
}

/* Input utama besar dan jelas */
.ecampus-login-card input.z-textbox {
    width: 100% !important;
    height: 40px !important;
    padding: 8px 14px !important;
    box-sizing: border-box !important;
    font-size: 14px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 10px !important;
}

.ecampus-login-card input.z-textbox:focus {
    border-color: var(--ais-theme-primary, #0c71c3) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .16) !important;
    outline: none !important;
}

/* Grid tanggal lahir: tiga kolom rapi, combo cukup lebar */
.ecampus-login-tgl,
.ecampus-login-tgl .z-grid-body,
.ecampus-login-tgl tr.z-row td.z-row-inner,
.ecampus-login-tgl .z-cell {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.ecampus-login-tgl .z-combobox {
    display: inline-flex !important;
    align-items: center !important;
    min-width: 92px !important;
}

.ecampus-login-tgl .z-combobox-inp {
    width: calc(100% - 20px) !important;
    height: 32px !important;
    padding: 5px 10px !important;
    box-sizing: border-box !important;
    font-size: 13px !important;
    border: 1px solid #cbd5e1 !important;
    border-right: 0 !important;
    border-radius: 10px 0 0 10px !important;
    text-align: center !important;
}

.ecampus-login-tgl .z-combobox-btn {
    height: 32px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-left: 0 !important;
    border-radius: 0 10px 10px 0 !important;
    background-color: #f8fafc !important;
}

.ecampus-login-tgl .z-vbox .z-label {
    font-size: 11px !important;
    text-transform: uppercase !important;
    letter-spacing: .05em !important;
    color: #64748b !important;
}

/* Tombol LOGIN sudah berbentuk pill tema dari rule .pmb-zk-window .z-button-cm;
   di sini hanya diperlebar agar menonjol */
.ecampus-login-card .z-button-cm {
    min-width: 150px !important;
    font-size: 13.5px !important;
    letter-spacing: .14em !important;
}

/* Info bantuan di bawah form */
.ecampus-login-info {
    display: block !important;
    padding: 10px 14px !important;
    border-radius: 12px !important;
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .07) !important;
    border: 1px dashed rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .35) !important;
    color: #475569 !important;
    font-weight: 500 !important;
}

/* Mobile */
@media screen and (max-width: 600px) {
    .ecampus-login-card {
        max-width: 96vw !important;
        margin: 10px auto !important;
        border-radius: 14px !important;
    }
    .ecampus-login-card .z-row-cnt {
        padding: 8px 10px !important;
    }
    .ecampus-login-tgl .z-vbox {
        margin-bottom: 6px !important;
    }
    .ecampus-login-card .z-button-cm {
        width: 100% !important;
        min-width: 0 !important;
    }
}

/* ======================================================================
   SATU SCROLL GLOBAL - index.zul / pmb.zul / psb.zul
   Hanya <center sclass="main-scroll-center"> (pembungkus grid utama
   main-responsive-main-grid / pmb-zk-shell) yang boleh overflow.
   Semua elemen lain: hidden / visible (pass-through), TANPA scrollbar.
   Blok ini harus tetap di paling bawah file agar memenangkan cascade.
   ====================================================================== */

/* Halaman yang memakai pola ini: matikan scroll di html/body */
html:has(.main-scroll-center),
html:has(.main-scroll-center) body {
    height: 100% !important;
    overflow: hidden !important;
}

/* Window & borderlayout terluar: rantai 100% tanpa scroll */
.main-responsive-root,
.pmb-zk-window,
.main-responsive-root > .z-borderlayout,
.pmb-zk-window > .z-borderlayout {
    height: 100% !important;
    max-height: 100% !important;
    overflow: hidden !important;
}

/* Region center pemilik scroll: dirinya hidden ... */
.z-center.main-scroll-center {
    overflow: hidden !important;
}

/* ... dan body-nya = SATU-SATUNYA scroller global */
.z-center.main-scroll-center > .z-center-body {
    height: 100% !important;
    max-height: 100% !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
}

/* Grid utama di dalam scroller: tinggi mengikuti konten (auto),
   overflow visible agar semua anak ikut memanjang ke 1 scroll */
.main-scroll-center .main-responsive-main-grid,
.main-scroll-center .main-responsive-main-grid > .z-grid-body,
.main-scroll-center .pmb-zk-shell,
.main-scroll-center .pmb-zk-shell > .z-grid-body {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
}

/* Scrollbar scroller global dibuat tipis & ikut tema */
.z-center.main-scroll-center > .z-center-body::-webkit-scrollbar {
    width: 10px;
}
.z-center.main-scroll-center > .z-center-body::-webkit-scrollbar-track {
    background: transparent;
}
.z-center.main-scroll-center > .z-center-body::-webkit-scrollbar-thumb {
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .45);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
}
.z-center.main-scroll-center > .z-center-body::-webkit-scrollbar-thumb:hover {
    background: rgba(var(--ais-theme-primary-rgb, 12, 113, 195), .70);
    border: 2px solid transparent;
    background-clip: padding-box;
}

/* ======================================================================
   STATUS WARNA BARIS PEMBAYARAN (DetailPembayaranMahasiswaRenderer
   .ubahWarnaStatus dan helper Aktifitas* lain)
   Java menandai status via inline style pada <tr class="z-row">:
   - rgba(169,169,169,.4) = lunas/selesai (abu-abu)
   - rgba(205,92,92,.4)   = kurang bayar/terlambat (merah)
   Rule modern memaksa background sel dengan !important sehingga warna
   inline tr tertimpa. Blok ini meneruskan warna status ke sel-selnya.
   ====================================================================== */

html body .z-grid tr.z-row[style*="rgba(169,169,169"] > td.z-row-inner,
html body .z-grid tr.z-row[style*="rgba(169,169,169"] > td.z-row-inner > .z-row-cnt,
html body .z-grid tr.z-row[style*="rgba(169,169,169"] .z-cell,
html body tr.z-row[style*="rgba(169,169,169"] > td.z-row-inner,
html body tr.z-row[style*="rgba(169,169,169"] > td.z-row-inner > .z-row-cnt,
html body tr.z-row[style*="rgba(169,169,169"] .z-cell {
    background: rgba(169, 169, 169, .40) !important;
}

html body .z-grid tr.z-row[style*="rgba(205,92,92"] > td.z-row-inner,
html body .z-grid tr.z-row[style*="rgba(205,92,92"] > td.z-row-inner > .z-row-cnt,
html body .z-grid tr.z-row[style*="rgba(205,92,92"] .z-cell,
html body tr.z-row[style*="rgba(205,92,92"] > td.z-row-inner,
html body tr.z-row[style*="rgba(205,92,92"] > td.z-row-inner > .z-row-cnt,
html body tr.z-row[style*="rgba(205,92,92"] .z-cell {
    background: rgba(205, 92, 92, .40) !important;
}

/* Hover jangan menelan warna status */
html body tr.z-row[style*="rgba(169,169,169"]:hover > td.z-row-inner,
html body tr.z-row[style*="rgba(169,169,169"]:hover .z-cell {
    background: rgba(169, 169, 169, .55) !important;
}
html body tr.z-row[style*="rgba(205,92,92"]:hover > td.z-row-inner,
html body tr.z-row[style*="rgba(205,92,92"]:hover .z-cell {
    background: rgba(205, 92, 92, .55) !important;
}

/* Varian dengan spasi: browser menormalkan ulang atribut style menjadi
   "rgba(205, 92, 92, 0.4)" saat di-set lewat AU update (cssText). */
html body tr.z-row[style*="rgba(169, 169, 169"] > td.z-row-inner,
html body tr.z-row[style*="rgba(169, 169, 169"] > td.z-row-inner > .z-row-cnt,
html body tr.z-row[style*="rgba(169, 169, 169"] .z-cell {
    background: rgba(169, 169, 169, .40) !important;
}
html body tr.z-row[style*="rgba(205, 92, 92"] > td.z-row-inner,
html body tr.z-row[style*="rgba(205, 92, 92"] > td.z-row-inner > .z-row-cnt,
html body tr.z-row[style*="rgba(205, 92, 92"] .z-cell {
    background: rgba(205, 92, 92, .40) !important;
}
html body tr.z-row[style*="rgba(169, 169, 169"]:hover > td.z-row-inner,
html body tr.z-row[style*="rgba(169, 169, 169"]:hover .z-cell {
    background: rgba(169, 169, 169, .55) !important;
}
html body tr.z-row[style*="rgba(205, 92, 92"]:hover > td.z-row-inner,
html body tr.z-row[style*="rgba(205, 92, 92"]:hover .z-cell {
    background: rgba(205, 92, 92, .55) !important;
}


/* ======================================================================
   MODUL DROPDOWN OTOMATIS (patch 2026-06-12)
   Pada layar sempit (<=900px) deretan tombol modul rowHeader2
   (.main-responsive-module-strip di index.zul) otomatis dilipat menjadi
   satu tombol "Modul" yang membuka panel dropdown vertikal.
   Tombol toggle (.ais-modul-dd-toggle) dibuat oleh JS injeksi
   MainStyleHelper.injectResponsiveShellCss; strip ZK asli tidak diubah
   sehingga id/forward semua toolbarbutton tetap hidup, dan tombol modul
   yang visible="false" tetap tersembunyi di dalam panel.
   ====================================================================== */
.ais-modul-dd-toggle {
    display: none;
}

@media (max-width: 900px) {
    /* Baris/sel pembungkus tidak boleh memotong panel absolute */
    .headerHbox.main-responsive-module-row,
    .main-responsive-module-row,
    .main-responsive-module-row .z-row-inner,
    .main-responsive-module-row .z-cell,
    .main-responsive-module-row .z-row-cnt {
        overflow: visible !important;
        max-height: none !important;
        height: auto !important;
    }
    /* Sel induk strip jadi anchor posisi dropdown */
    .ais-modul-dd-host {
        position: relative !important;
        display: block !important;
        overflow: visible !important;
    }

    /* Tombol toggle "Modul" */
    .ais-modul-dd-toggle {
        display: inline-flex !important;
        align-items: center !important;
        gap: 6px;
        margin: 5px 8px !important;
        padding: 7px 16px !important;
        border-radius: 999px !important;
        border: 1px solid rgba(255, 255, 255, .4) !important;
        background: rgba(255, 255, 255, .16) !important;
        color: #fff !important;
        font-family: inherit !important;
        font-size: 11.5px !important;
        font-weight: 700 !important;
        line-height: 1.2 !important;
        cursor: pointer !important;
        -webkit-tap-highlight-color: transparent;
    }
    .ais-modul-dd-toggle:hover {
        background: rgba(255, 255, 255, .28) !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .ais-modul-dd-toggle {
        background: var(--ais-theme-accent, #06b6d4) !important;
        border-color: rgba(255, 255, 255, .7) !important;
    }

    /* Saat tertutup: strip disembunyikan, hanya toggle yang tampak */
    .ais-modul-dd-host .main-responsive-module-strip {
        display: none !important;
    }

    /* Saat terbuka: strip menjadi panel dropdown vertikal bertema.
       position:fixed (top/left diisi inline oleh JS dari posisi tombol
       toggle) supaya panel tidak terpotong ancestor overflow:hidden
       di dalam grid header ZK. */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip {
        display: block !important;
        position: fixed !important;
        right: auto !important;
        z-index: 99990 !important;
        width: auto !important;
        min-width: 260px !important;
        max-width: 92vw !important;
        /* "SCROLLBAR FIX V4" mengunci height:32px pada strip/td;
           saat jadi panel dropdown tinggi harus mengikuti isi */
        height: auto !important;
        min-height: 0 !important;
        max-height: 62vh !important;
        overflow-y: auto !important;
        overflow-x: hidden !important;
        margin: 0 !important;
        padding: 8px !important;
        background: linear-gradient(165deg, var(--ais-theme-primary, #1d4ed8), var(--ais-theme-accent, #06b6d4)) !important;
        border: 1px solid rgba(255, 255, 255, .25) !important;
        border-radius: 14px !important;
        box-shadow: 0 18px 44px rgba(0, 0, 0, .38) !important;
    }
    /* Bebaskan semua pembungkus internal dari klem tinggi 32/42px
       (SCROLLBAR FIX V4 dan blok mobile lama) */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip table,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip tbody,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip tr,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip td,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip > tbody > tr > td {
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        overflow: visible !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip table {
        display: block !important;
        width: 100% !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip tbody {
        display: block !important;
        width: 100% !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip tr {
        display: flex !important;
        flex-direction: column !important;
        flex-wrap: nowrap !important;
        align-items: stretch !important;
        width: 100% !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip td {
        display: block !important;
        width: 100% !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
        margin: 2px 0 !important;
        border-radius: 9px !important;
        text-align: left !important;
        white-space: nowrap !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton-body,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton-cnt {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
        padding: 8px 10px !important;
        font-size: 11.5px !important;
        text-align: left !important;
    }
    /* Modul nonaktif (visible="false" -> inline display:none) tetap tersembunyi */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton[style*="display:none"],
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton[style*="display: none"] {
        display: none !important;
    }
}

/* Penanda sclass dari ubahWarnaStatus (lebih kokoh daripada deteksi
   inline style yang bisa dinormalkan ulang browser) */
html body tr.z-row.ais-status-lunas > td.z-row-inner,
html body tr.z-row.ais-status-lunas > td.z-row-inner > .z-row-cnt,
html body tr.z-row.ais-status-lunas .z-cell {
    background: rgba(169, 169, 169, .40) !important;
}
html body tr.z-row.ais-status-kurang > td.z-row-inner,
html body tr.z-row.ais-status-kurang > td.z-row-inner > .z-row-cnt,
html body tr.z-row.ais-status-kurang .z-cell {
    background: rgba(205, 92, 92, .40) !important;
}
html body tr.z-row.ais-status-lunas:hover > td.z-row-inner,
html body tr.z-row.ais-status-lunas:hover .z-cell {
    background: rgba(169, 169, 169, .55) !important;
}
html body tr.z-row.ais-status-kurang:hover > td.z-row-inner,
html body tr.z-row.ais-status-kurang:hover .z-cell {
    background: rgba(205, 92, 92, .55) !important;
}


/* ======================================================================
   PROFIL DROPDOWN MODERN (patch 2026-06-12)
   Menupopup profil pengguna (tombol nama di kanan header, MainAction)
   diberi sclass "ais-profil-menu". Gaya global .z-menu-popup (panel gelap
   + ikon chevron) ditimpa khusus untuk popup ini: kartu putih membulat,
   ikon SVG asli ditampilkan (ikonnya berwarna gelap sehingga justru
   tenggelam di panel gelap lama), item identitas non-klik di atas,
   "Keluar" sebagai aksi destruktif terpisah, dan di mobile panel
   menempel rapi ke tepi kanan dengan target sentuh >= 44px.
   ====================================================================== */
.z-menu-popup.ais-profil-menu {
    background: #ffffff !important;
    border: 1px solid rgba(15, 23, 42, .10) !important;
    border-radius: 14px !important;
    box-shadow: 0 18px 44px rgba(15, 23, 42, .22) !important;
    padding: 8px !important;
    min-width: 250px !important;
    max-width: calc(100vw - 16px) !important;
    overflow: hidden !important;
}
.z-menu-popup.ais-profil-menu .z-menu-popup-cnt {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    min-width: 0 !important;
}

/* Item: baris bersih, teks gelap, sudut membulat */
.z-menu-popup.ais-profil-menu .z-menu-item-cnt,
.z-menu-popup.ais-profil-menu a.z-menu-item-cnt,
.z-menu-popup.ais-profil-menu .z-menu-popup-cnt .z-menu-item a.z-menu-item-cnt {
    display: block !important;
    min-height: 38px !important;
    line-height: 38px !important;
    padding: 0 12px 0 38px !important;
    margin: 1px 0 !important;
    box-sizing: border-box !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 10px !important;
    color: #1f2937 !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    text-shadow: none !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* Hover/fokus: tint warna tema (kontras ringan, bukan blok gelap) */
.z-menu-popup.ais-profil-menu .z-menu-item-cnt:hover,
.z-menu-popup.ais-profil-menu .z-menu-item-over a.z-menu-item-cnt,
.z-menu-popup.ais-profil-menu .z-menu-item-over > .z-menu-item-cl > .z-menu-item-cr > .z-menu-item-cm > .z-menu-item-cnt {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .10) !important;
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .20) !important;
    color: var(--ais-theme-primary, #1d4ed8) !important;
}

/* Ikon SVG asli ditampilkan kembali (chevron global dibuang) */
.z-menu-popup.ais-profil-menu .z-menu-item-img {
    background-image: none !important;
    width: 16px !important;
    height: 16px !important;
    margin-left: -26px !important;
    margin-right: 10px !important;
    vertical-align: -3px !important;
    opacity: .85;
}

/* Identitas pengguna: header non-klik paling atas */
.z-menu-popup.ais-profil-menu .ais-profil-identitas .z-menu-item-cnt,
.z-menu-popup.ais-profil-menu .ais-profil-identitas a.z-menu-item-cnt,
.z-menu-popup.ais-profil-menu .ais-profil-identitas.z-menu-item-disd a.z-menu-item-cnt {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .08) !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .16) !important;
    border-radius: 10px !important;
    margin: 0 0 6px 0 !important;
    min-height: 42px !important;
    line-height: 42px !important;
    color: var(--ais-theme-primary, #1d4ed8) !important;
    font-weight: 800 !important;
    opacity: 1 !important;
    cursor: default !important;
}
.z-menu-popup.ais-profil-menu .ais-profil-identitas,
.z-menu-popup.ais-profil-menu .ais-profil-identitas .z-menu-item-cnt {
    pointer-events: none !important;
    filter: none !important;
    opacity: 1 !important;
}

/* Keluar: aksi destruktif, dipisah garis tipis, merah */
.z-menu-popup.ais-profil-menu .ais-profil-keluar {
    display: block !important;
    border-top: 1px solid rgba(15, 23, 42, .08) !important;
    margin-top: 6px !important;
    padding-top: 5px !important;
}
.z-menu-popup.ais-profil-menu .ais-profil-keluar .z-menu-item-cnt,
.z-menu-popup.ais-profil-menu .ais-profil-keluar a.z-menu-item-cnt {
    color: #dc2626 !important;
}
.z-menu-popup.ais-profil-menu .ais-profil-keluar .z-menu-item-cnt:hover,
.z-menu-popup.ais-profil-menu .ais-profil-keluar.z-menu-item-over a.z-menu-item-cnt {
    background: rgba(220, 38, 38, .08) !important;
    border-color: rgba(220, 38, 38, .22) !important;
    color: #b91c1c !important;
}

/* Mobile: panel menempel ke tepi kanan, item lebih tinggi (touch target) */
@media (max-width: 768px) {
    .z-menu-popup.ais-profil-menu {
        left: auto !important;
        right: 8px !important;
        width: calc(100vw - 16px) !important;
        max-width: 400px !important;
        min-width: 0 !important;
    }
    .z-menu-popup.ais-profil-menu .z-menu-item-cnt,
    .z-menu-popup.ais-profil-menu a.z-menu-item-cnt {
        min-height: 44px !important;
        line-height: 44px !important;
        font-size: 13px !important;
    }
    .z-menu-popup.ais-profil-menu .ais-profil-identitas .z-menu-item-cnt,
    .z-menu-popup.ais-profil-menu .ais-profil-identitas a.z-menu-item-cnt {
        min-height: 46px !important;
        line-height: 46px !important;
    }
}

/* ======================================================================
   PAGING KONTRAS (mold default ZK)
   Tema tenant lama mewarnai bar .z-paging biru tua sehingga teks, input
   nomor halaman, dan info "[1 - 10/539]" nyaris tak terbaca. Samakan
   dengan gaya paging mold "os" yang dipakai paging utama: latar putih,
   teks gelap, input jelas. Paging kembar (paging2) kini juga otomatis
   ikut mold "os" via MyPagingKembar, blok ini penjaga sisanya.
   ====================================================================== */
html body .z-paging {
    background: #fff !important;
    border: 1px solid var(--ais-border, #e2e8f0) !important;
    border-radius: 8px !important;
    padding: 4px 8px !important;
    color: #334155 !important;
    box-shadow: none !important;
}
html body .z-paging td,
html body .z-paging .z-paging-cnt {
    background: transparent !important;
    color: #334155 !important;
}
html body .z-paging input.z-paging-inp {
    background: #fff !important;
    color: #0f172a !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 6px !important;
    padding: 2px 6px !important;
    width: 44px !important;
    text-align: center !important;
    font-weight: 600 !important;
}
html body .z-paging .z-paging-info {
    color: #475569 !important;
    font-size: 12px !important;
    font-weight: 600 !important;
}
html body .z-paging .z-paging-text {
    color: #334155 !important;
}
/* Tombol first/prev/next/last — kotak dengan panah Unicode agar tidak
   bergantung pada FontAwesome dari zkfontawesome.jar yang sering gagal load */
html body .z-paging .z-paging-first,
html body .z-paging .z-paging-prev,
html body .z-paging .z-paging-next,
html body .z-paging .z-paging-last {
    background-color: #f8fafc !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 6px !important;
    min-width: 28px !important;
    height: 28px !important;
    text-align: center !important;
    vertical-align: middle !important;
    padding: 0 4px !important;
    cursor: pointer !important;
}
/* a/button di dalam sel tombol navigasi */
html body .z-paging .z-paging-first > a,
html body .z-paging .z-paging-prev  > a,
html body .z-paging .z-paging-next  > a,
html body .z-paging .z-paging-last  > a,
html body .z-paging .z-paging-first > button,
html body .z-paging .z-paging-prev  > button,
html body .z-paging .z-paging-next  > button,
html body .z-paging .z-paging-last  > button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 100% !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    color: #334155 !important;
    text-decoration: none !important;
    background: transparent !important;
    border: none !important;
    padding: 0 !important;
    cursor: pointer !important;
    /* hapus background-image sprite ZK agar tidak bertumpuk dengan ::before */
    background-image: none !important;
}
/* Sembunyikan img sprite yang mungkin tidak ter-load */
html body .z-paging .z-paging-first img,
html body .z-paging .z-paging-prev  img,
html body .z-paging .z-paging-next  img,
html body .z-paging .z-paging-last  img {
    display: none !important;
}
/* Override ::before dari zkfontawesome dengan panah Unicode */
html body .z-paging .z-paging-first > a::before,
html body .z-paging .z-paging-first > button::before { content: "\00AB" !important; font-family: inherit !important; font-size: 14px !important; color: #334155 !important; }
html body .z-paging .z-paging-prev  > a::before,
html body .z-paging .z-paging-prev  > button::before { content: "\2039" !important; font-family: inherit !important; font-size: 17px !important; color: #334155 !important; }
html body .z-paging .z-paging-next  > a::before,
html body .z-paging .z-paging-next  > button::before { content: "\203A" !important; font-family: inherit !important; font-size: 17px !important; color: #334155 !important; }
html body .z-paging .z-paging-last  > a::before,
html body .z-paging .z-paging-last  > button::before { content: "\00BB" !important; font-family: inherit !important; font-size: 14px !important; color: #334155 !important; }
/* State disabled: tombol disamarkan */
html body .z-paging .z-paging-first.z-paging-disd,
html body .z-paging .z-paging-prev.z-paging-disd,
html body .z-paging .z-paging-next.z-paging-disd,
html body .z-paging .z-paging-last.z-paging-disd {
    opacity: 0.35 !important;
    cursor: default !important;
    pointer-events: none !important;
}
/* Hover state */
html body .z-paging .z-paging-first:hover,
html body .z-paging .z-paging-prev:hover,
html body .z-paging .z-paging-next:hover,
html body .z-paging .z-paging-last:hover {
    background-color: var(--ais-theme-primary-bg, #e8f2fc) !important;
    border-color: var(--ais-theme-primary, #0c71c3) !important;
}
html body .z-paging .z-paging-first:hover > a::before,
html body .z-paging .z-paging-prev:hover  > a::before,
html body .z-paging .z-paging-next:hover  > a::before,
html body .z-paging .z-paging-last:hover  > a::before,
html body .z-paging .z-paging-first:hover > button::before,
html body .z-paging .z-paging-prev:hover  > button::before,
html body .z-paging .z-paging-next:hover  > button::before,
html body .z-paging .z-paging-last:hover  > button::before {
    color: var(--ais-theme-primary, #0c71c3) !important;
}


/* ======================================================================
   NOTIFIKASI INFO DROPDOWN (patch 2026-06-12)
   Popup tombol lonceng "Info" (MainAction.notif) memakai dasar kartu
   putih ais-profil-menu plus penyesuaian: judul "Notifikasi" di atas,
   item notifikasi boleh membungkus 2-3 baris (subjek bisa panjang),
   dan empty state "Tidak ada informasi baru" tampil netral non-klik.
   ====================================================================== */
.z-menu-popup.ais-notif-menu {
    min-width: 280px !important;
}

/* Item notifikasi: teks boleh wrap, padding nyaman, tetap klikabel */
.z-menu-popup.ais-notif-menu .ais-notif-item .z-menu-item-cnt,
.z-menu-popup.ais-notif-menu .ais-notif-item a.z-menu-item-cnt {
    min-height: 0 !important;
    line-height: 1.45 !important;
    padding: 9px 12px 9px 38px !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    word-break: break-word;
}
.z-menu-popup.ais-notif-menu .ais-notif-item .z-menu-item-img {
    vertical-align: top !important;
    margin-top: 2px !important;
}

/* Empty state: netral, terpusat, tanpa kursor aksi */
.z-menu-popup.ais-notif-menu .ais-notif-kosong .z-menu-item-cnt,
.z-menu-popup.ais-notif-menu .ais-notif-kosong a.z-menu-item-cnt,
.z-menu-popup.ais-notif-menu .ais-notif-kosong.z-menu-item-disd a.z-menu-item-cnt {
    background: rgba(15, 23, 42, .04) !important;
    border: 1px dashed rgba(15, 23, 42, .14) !important;
    border-radius: 10px !important;
    color: #64748b !important;
    font-weight: 600 !important;
    text-align: center !important;
    padding: 10px 12px !important;
    min-height: 0 !important;
    line-height: 1.4 !important;
    white-space: normal !important;
    opacity: 1 !important;
    cursor: default !important;
}
.z-menu-popup.ais-notif-menu .ais-notif-kosong,
.z-menu-popup.ais-notif-menu .ais-notif-kosong .z-menu-item-cnt {
    pointer-events: none !important;
}
.z-menu-popup.ais-notif-menu .ais-notif-kosong .z-menu-item-img {
    display: none !important;
}

/* Mobile: tinggi baris mengikuti isi (menimpa line-height 44px profil),
   panel maksimal setinggi 60vh dengan scroll sendiri bila notifikasi banyak */
@media (max-width: 768px) {
    .z-menu-popup.ais-notif-menu {
        max-height: 60vh !important;
        overflow-y: auto !important;
    }
    .z-menu-popup.ais-notif-menu .ais-notif-item .z-menu-item-cnt,
    .z-menu-popup.ais-notif-menu .ais-notif-item a.z-menu-item-cnt {
        min-height: 0 !important;
        line-height: 1.45 !important;
        font-size: 13px !important;
    }
}


/* ======================================================================
   AKTIFITAS TABBOX MODERN (patch 2026-06-12)
   Tabbox pada helper ais.action.master.helper.Aktifitas* (Perkuliahan,
   Skripsi, TugasAkhir, KKN, PKL, KRS, GrupPertemuan, Pembelajaran sekolah,
   jadwal ujian PMB/PSB/pegawai, integrator feeder) diberi sclass
   "ais-aktifitas-tabbox". Penyesuaian: deret tab boleh wrap (9 tab tidak
   terpotong di layar sempit), tab pill membulat mengikuti tema, kartu hero
   identitas di tab Home, dan catatan kaki bergaya hint.
   ====================================================================== */
/* Deret tab boleh turun baris, tidak overflow horizontal */
.ais-aktifitas-tabbox .z-tabs,
.ais-aktifitas-tabbox .z-tabs-cnt {
    height: auto !important;
    overflow: visible !important;
}
.ais-aktifitas-tabbox .z-tabs-cnt {
    display: block !important;
    white-space: normal !important;
}
.ais-aktifitas-tabbox .z-tabs-cnt li,
.ais-aktifitas-tabbox .z-tab {
    display: inline-block !important;
    float: none !important;
    vertical-align: bottom !important;
    margin: 2px 3px 0 0 !important;
}

/* Tab pill membulat penuh; selected diberi tint tema */
.ais-aktifitas-tabbox .z-tab-hl,
.ais-aktifitas-tabbox .z-tab-hr,
.ais-aktifitas-tabbox .z-tab-hm {
    border-radius: 10px !important;
    border: 1px solid var(--ais-border, #e2e8f0) !important;
}
.ais-aktifitas-tabbox .z-tab .z-tab-text,
.ais-aktifitas-tabbox .z-tab-seld .z-tab-text {
    padding: 7px 12px !important;
    font-size: 12px !important;
}
.ais-aktifitas-tabbox .z-tab-seld .z-tab-hl,
.ais-aktifitas-tabbox .z-tab-seld .z-tab-hr,
.ais-aktifitas-tabbox .z-tab-seld .z-tab-hm {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .10) !important;
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .45) !important;
    box-shadow: none !important;
}

/* Panel isi: lebar penuh, tidak overflow horizontal */
.ais-aktifitas-tabbox .z-tabpanel,
.ais-aktifitas-tabbox .z-tabpanel-cnt {
    max-width: 100% !important;
    overflow-x: hidden !important;
    box-sizing: border-box !important;
}

/* Kartu hero identitas (tab Home AktifitasPerkuliahanHelper) */
.ais-aktifitas-hero {
    border-radius: 14px;
    padding: 14px 16px;
    margin: 2px 0 8px 0;
    color: #fff;
    background:
        linear-gradient(135deg, rgba(0, 0, 0, .35), rgba(0, 0, 0, 0) 55%),
        linear-gradient(135deg, var(--ais-theme-primary, #1d4ed8) 0%, var(--ais-theme-primary, #1d4ed8) 45%, var(--ais-theme-accent, #06b6d4) 100%);
    box-shadow: 0 10px 26px rgba(15, 23, 42, .18);
}
.ais-aktifitas-hero-judul {
    font-size: 16px;
    font-weight: 800;
    line-height: 1.25;
    text-shadow: 0 1px 3px rgba(0, 0, 0, .3);
}
.ais-aktifitas-hero-sub {
    font-size: 11.5px;
    opacity: .92;
    margin-top: 3px;
    line-height: 1.4;
}

/* Konten Home: input/teks selalu muat lebar panel */
.ais-aktifitas-home textarea,
.ais-aktifitas-home input.z-textbox,
.ais-aktifitas-home iframe {
    max-width: 100% !important;
    box-sizing: border-box !important;
}
.ais-aktifitas-home img {
    max-width: 100%;
    height: auto;
}

/* Catatan kaki: hint lembut, bukan teks merah 9px */
.ais-aktifitas-catatan {
    display: inline-block;
    font-size: 10.5px !important;
    font-weight: 600 !important;
    color: #b45309 !important;
    background: rgba(245, 158, 11, .12);
    border: 1px solid rgba(245, 158, 11, .30);
    border-radius: 8px;
    padding: 5px 10px;
}

@media (max-width: 768px) {
    .ais-aktifitas-tabbox .z-tab .z-tab-text,
    .ais-aktifitas-tabbox .z-tab-seld .z-tab-text {
        padding: 6px 9px !important;
        font-size: 11px !important;
    }
    .ais-aktifitas-hero {
        padding: 12px;
        border-radius: 12px;
    }
    .ais-aktifitas-hero-judul {
        font-size: 14px;
    }
}


/* ======================================================================
   FORM PPDB MODERN (patch 2026-06-12)
   Semua form pendaftaran siswa baru (PPDB, PPDB1/2, PPDB_Alumni,
   PPDB_Simple..6 - turunan ais.action.master.sekolah.psb.form.PPDB)
   diberi sclass "ppdb-form-window". Input dirapikan (membulat, fokus
   ber-ring tema), label tebal, dan pada layar sempit label otomatis
   bertumpuk di atas input (pola form mobile standar).
   ====================================================================== */
.ppdb-form-window .z-row-inner,
.ppdb-form-window .z-cell {
    vertical-align: top !important;
    padding: 5px 8px !important;
}
.ppdb-form-window .z-label {
    font-weight: 600;
    color: #334155;
    line-height: 1.4;
}
.ppdb-form-window input.z-textbox,
.ppdb-form-window input.z-intbox,
.ppdb-form-window input.z-decimalbox,
.ppdb-form-window input.z-datebox-inp,
.ppdb-form-window input.z-combobox-inp,
.ppdb-form-window input.z-bandbox-inp,
.ppdb-form-window textarea.z-textbox {
    border: 1px solid #cbd5e1 !important;
    border-radius: 8px !important;
    padding: 6px 9px !important;
    box-sizing: border-box !important;
    max-width: 100% !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ppdb-form-window input.z-textbox:focus,
.ppdb-form-window input.z-intbox:focus,
.ppdb-form-window input.z-decimalbox:focus,
.ppdb-form-window input.z-datebox-inp:focus,
.ppdb-form-window input.z-combobox-inp:focus,
.ppdb-form-window input.z-bandbox-inp:focus,
.ppdb-form-window textarea.z-textbox:focus {
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .65) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .15) !important;
    outline: none !important;
}

/* Popup bandbox (Daftar Siswa, dsb) tidak boleh keluar layar */
.z-bandbox-pp,
.z-bandbox-pp .z-bandpopup,
.z-bandpopup {
    max-width: calc(100vw - 24px) !important;
    box-sizing: border-box !important;
}

@media (max-width: 768px) {
    /* Label bertumpuk di atas input: tiap sel baris jadi blok penuh */
    .ppdb-form-window .z-row > .z-row-inner {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
        padding: 3px 8px !important;
    }
    .ppdb-form-window .z-row > .z-row-inner:first-child {
        padding-bottom: 0 !important;
    }
    .ppdb-form-window input.z-textbox,
    .ppdb-form-window textarea.z-textbox,
    .ppdb-form-window .z-combobox,
    .ppdb-form-window .z-bandbox,
    .ppdb-form-window .z-datebox {
        width: 100% !important;
    }
    .z-bandbox-pp,
    .z-bandpopup {
        max-height: 80vh !important;
        overflow-y: auto !important;
    }
}


/* ======================================================================
   PENCARIAN LANJUT BANBOX (patch 2026-06-12)
   Semua popup banbox AmbilData* mendapat tombol "Pencarian Lebih Lanjut"
   (dibuat JS injeksi MainStyleHelper): hanya baris filter pertama (kode/
   nama/NIM) yang tampil, baris filter lain disembunyikan sampai tombol
   diklik - meniru pola launcher pencarian pada halaman *.zul.
   ====================================================================== */
.ais-bp-cari-grid.ais-bp-cari-sembunyi tr.ais-bp-baris-lanjut {
    display: none !important;
}

.ais-bp-cari-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 4px 8px 6px 8px;
    padding: 6px 14px;
    border-radius: 999px;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .35);
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .08);
    color: var(--ais-theme-primary, #1d4ed8);
    font-family: var(--ais-font, inherit);
    font-size: 11px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s ease;
}
.ais-bp-cari-toggle:hover {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .16);
}

/* Popup banbox: input filter nyaman disentuh & tidak meluber di mobile */
.z-bandpopup input.z-textbox,
.z-bandpopup input.z-combobox-inp,
.z-bandpopup input.z-bandbox-inp,
.z-bandpopup input.z-decimalbox {
    border-radius: 7px !important;
    padding: 5px 8px !important;
    box-sizing: border-box !important;
    max-width: 100% !important;
}

@media (max-width: 768px) {
    .ais-bp-cari-toggle {
        font-size: 12px;
        padding: 8px 14px;
    }
}

/* e-Learning versi mobile: shell mengikuti lebar penuh, tab tidak terpotong */
.elearning-mobile-shell {
    padding: 4px 2px 12px !important;
    box-sizing: border-box !important;
}
.elearning-mobile-shell .z-tabbox,
.elearning-mobile-shell .z-tabpanels,
.elearning-mobile-shell .z-tabpanel {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    overflow-x: hidden !important;
}
.elearning-mobile-shell .z-tabs .z-tab {
    max-width: 46vw !important;
}
.elearning-mobile-shell .z-tabs .z-tab .z-tab-text {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}


/* ======================================================================
   PAPAN PENGUMUMAN GAYA JSP (patch 2026-06-12)
   Panel pengumuman Home (MainAction.appendModernPengumumanPanel,
   .main-announcement-modern-v7) dirapikan mengikuti layout
   WEB-INF/baru/modul/home/pengumuman.jsp: kartu putih, header satu baris
   (judul + ikon di kiri, kotak pencarian compact di kanan), tanpa blok
   hero gradien besar.
   ====================================================================== */
.main-announcement-modern-v7 .main-announcement-hero {
    background: #ffffff !important;
    color: #0f172a !important;
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px 14px !important;
    padding: 13px 16px !important;
    border-bottom: 1px solid #eef2f7 !important;
    border-radius: 14px 14px 0 0 !important;
    text-shadow: none !important;
}
.main-announcement-modern-v7 .main-announcement-hero-text {
    flex: 1 1 260px;
    min-width: 0;
}
.main-announcement-modern-v7 .main-announcement-eyebrow {
    color: #94a3b8 !important;
    font-size: 9.5px !important;
    letter-spacing: 1.2px !important;
    text-shadow: none !important;
}
.main-announcement-modern-v7 .main-announcement-title {
    color: var(--ais-theme-primary, #1d4ed8) !important;
    font-size: 14.5px !important;
    font-weight: 800 !important;
    text-shadow: none !important;
}
.main-announcement-modern-v7 .main-announcement-title::before {
    content: "";
    display: inline-block;
    width: 15px;
    height: 15px;
    margin-right: 7px;
    vertical-align: -2px;
    background: var(--ais-theme-primary, #1d4ed8);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-.214c-2.162-1.241-4.49-1.843-6.912-2.083l.405 2.712A1 1 0 0 1 5.51 15.1h-.548a1 1 0 0 1-.916-.599l-1.85-3.49a68.14 68.14 0 0 0-.202-.003A2.014 2.014 0 0 1 0 9V7a2.02 2.02 0 0 1 1.992-2.013 74.663 74.663 0 0 0 2.483-.075c3.043-.154 6.148-.849 8.525-2.199V2.5z'/%3E%3C/svg%3E") no-repeat center / contain;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13 2.5a1.5 1.5 0 0 1 3 0v11a1.5 1.5 0 0 1-3 0v-.214c-2.162-1.241-4.49-1.843-6.912-2.083l.405 2.712A1 1 0 0 1 5.51 15.1h-.548a1 1 0 0 1-.916-.599l-1.85-3.49a68.14 68.14 0 0 0-.202-.003A2.014 2.014 0 0 1 0 9V7a2.02 2.02 0 0 1 1.992-2.013 74.663 74.663 0 0 0 2.483-.075c3.043-.154 6.148-.849 8.525-2.199V2.5z'/%3E%3C/svg%3E") no-repeat center / contain;
}
.main-announcement-modern-v7 .main-announcement-subtitle {
    color: #64748b !important;
    font-size: 10.5px !important;
    text-shadow: none !important;
}
.main-announcement-modern-v7 .main-announcement-count {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .08) !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .18) !important;
    color: var(--ais-theme-primary, #1d4ed8) !important;
    border-radius: 999px !important;
    padding: 4px 11px !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    text-shadow: none !important;
}
/* Kotak pencarian compact di kanan header (input-group ala Bootstrap) */
.main-announcement-modern-v7 .main-announcement-search-panel {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 0 0 auto !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    flex: 0 1 340px;
    min-width: 220px;
}
.main-announcement-modern-v7 .main-announcement-search-input,
.main-announcement-modern-v7 input.main-announcement-search-input {
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .45) !important;
    border-radius: 8px !important;
    padding: 6px 10px !important;
    font-size: 11.5px !important;
    background: #fff !important;
    box-shadow: none !important;
}
.main-announcement-modern-v7 .main-announcement-search-primary,
.main-announcement-modern-v7 .main-announcement-search-primary .z-toolbarbutton-cnt {
    background: var(--ais-theme-primary, #1d4ed8) !important;
    color: #fff !important;
    border-radius: 8px !important;
}
@media (max-width: 768px) {
    .main-announcement-modern-v7 .main-announcement-search-panel {
        flex: 1 1 100% !important;
        min-width: 0 !important;
    }
}

/* Sisi kanan header: badge jumlah + input-group cari (markup baru
   main-announcement-hero-right / main-announcement-search-group). */
.main-announcement-hero-right {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    gap: 7px !important;
    margin-left: auto !important;
    flex: 0 1 340px;
    min-width: 220px;
}
.main-announcement-search-group {
    display: flex !important;
    align-items: stretch !important;
    width: 100% !important;
}
.main-announcement-search-group .main-announcement-search-group-input,
.main-announcement-search-group input.main-announcement-search-group-input {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: 100% !important;
    margin: 0 !important;
    height: 32px !important;
    padding: 5px 12px !important;
    font-size: 11.5px !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .45) !important;
    border-right: 0 !important;
    border-radius: 8px 0 0 8px !important;
    background: #fff !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
}
.main-announcement-search-group .main-announcement-search-group-button {
    margin: 0 !important;
    padding: 0 14px !important;
    display: inline-flex !important;
    align-items: center !important;
    border: 1px solid var(--ais-theme-primary, #1d4ed8) !important;
    border-radius: 0 8px 8px 0 !important;
    background: var(--ais-theme-primary, #1d4ed8) !important;
    cursor: pointer !important;
}
.main-announcement-search-group .main-announcement-search-group-button .z-toolbarbutton-cnt {
    background: transparent !important;
    color: #ffffff !important;
    font-size: 11.5px !important;
    font-weight: 800 !important;
}
@media (max-width: 768px) {
    .main-announcement-hero-right {
        flex: 1 1 100% !important;
        min-width: 0 !important;
        align-items: stretch !important;
    }
    .main-announcement-hero-right .main-announcement-count {
        align-self: flex-start !important;
    }
    .main-announcement-search-group .main-announcement-search-group-input {
        height: 38px !important;
        font-size: 13px !important;
    }
    .main-announcement-search-group .main-announcement-search-group-button {
        min-height: 38px !important;
    }
}

/* ======================================================================
   KALENDER AKADEMIK HOME (patch 2026-06-12)
   Panel baru di bawah papan pengumuman (MainAction.appendKalenderAkademikPanel)
   meniru layout WEB-INF/baru/modul/home/admin/_kalender_akademik.jsp:
   kartu grid responsif dengan blok tanggal bergradien tema, badge tahun
   ajaran & semester, deskripsi 2 baris, dan rentang tanggal.
   ====================================================================== */
.main-kalender-akademik-body {
    padding: 12px 14px 14px 14px;
}
/* Baris filter Tahun Akademik + Semester (meniru dropdown di
   kalender_akademik.jsp; default: tahun berjalan + semua semester). */
.main-kalender-filter-baris {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 6px 8px !important;
    padding: 9px 14px !important;
    background: #f8fafc !important;
    border-bottom: 1px solid #eef2f7 !important;
}
.main-kalender-filter-label {
    font-size: 11px !important;
    font-weight: 800 !important;
    color: #475569 !important;
}
.main-kalender-filter-combo .z-combobox-inp,
.main-kalender-filter-combo input {
    height: 28px !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
    color: #0f172a !important;
    border: 1px solid #dbe3ee !important;
    border-radius: 8px 0 0 8px !important;
    background: #ffffff !important;
    padding: 4px 10px !important;
    box-sizing: border-box !important;
    cursor: pointer !important;
}
@media (max-width: 768px) {
    .main-kalender-filter-baris .main-kalender-filter-combo {
        flex: 1 1 calc(50% - 60px);
    }
}
.main-kalender-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}
.main-kalender-kosong {
    width: 100%;
    text-align: center;
    color: #94a3b8;
    font-size: 12px;
    padding: 26px 10px;
    border: 1px dashed #e2e8f0;
    border-radius: 12px;
}
.main-kalender-card {
    flex: 1 1 300px;
    max-width: 100%;
    display: flex;
    background: #ffffff;
    border: 1px solid #eef2f7;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 12px rgba(15, 23, 42, .06);
    transition: transform .25s ease, box-shadow .25s ease;
}
.main-kalender-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 22px rgba(15, 23, 42, .13);
}
.main-kalender-tanggal {
    min-width: 78px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 12px 8px;
    color: #fff;
    background: linear-gradient(160deg, var(--ais-theme-primary, #1d4ed8), var(--ais-theme-accent, #06b6d4));
}
.main-kalender-bulan {
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: 1.5px;
}
.main-kalender-hari {
    font-size: 26px;
    font-weight: 800;
    line-height: 1.1;
}
.main-kalender-isi {
    flex: 1 1 auto;
    min-width: 0;
    padding: 11px 13px;
}
.main-kalender-judul {
    font-size: 12.5px;
    font-weight: 800;
    color: #0f172a;
    line-height: 1.3;
    margin-bottom: 6px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.main-kalender-badge-baris {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 6px;
}
.main-kalender-badge {
    display: inline-block;
    font-size: 9.5px;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 999px;
}
.main-kalender-badge-ta {
    background: #f1f5f9;
    color: #475569;
    border: 1px solid #e2e8f0;
}
.main-kalender-badge-ganjil {
    background: rgba(245, 158, 11, .15);
    color: #92400e;
    border: 1px solid rgba(245, 158, 11, .35);
}
.main-kalender-badge-genap {
    background: rgba(6, 182, 212, .14);
    color: #155e75;
    border: 1px solid rgba(6, 182, 212, .35);
}
.main-kalender-deskripsi {
    font-size: 11px;
    color: #64748b;
    line-height: 1.4;
    min-height: 2.6em;
    margin-bottom: 7px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.main-kalender-rentang {
    border-top: 1px solid #eef2f7;
    padding-top: 6px;
    font-size: 10.5px;
    font-weight: 700;
    color: var(--ais-theme-primary, #1d4ed8);
}
@media (max-width: 768px) {
    .main-kalender-card {
        flex: 1 1 100%;
    }
}


/* ======================================================================
   INPUT NILAI BESAR (patch 2026-06-12)
   Kotak input nilai/skor pada grid penilaian (TugasMandiriHelper,
   NamaTugasKelompokPunyaMahasiswaHelper, dst - dipasang lewat
   UIUtil.gayaInputNilai). Keluhan lapangan: kotak terlalu kecil sehingga
   angka tersembunyi dan rawan salah input. Angka dibuat besar-tebal di
   tengah, kotak punya lebar minimum, dan nyaman disentuh di mobile.
   ====================================================================== */
input.ais-input-nilai,
.ais-input-nilai {
    min-width: 64px !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    padding: 7px 8px !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    text-align: center !important;
    color: #0f172a !important;
    background: #ffffff !important;
    border: 1.5px solid #cbd5e1 !important;
    border-radius: 8px !important;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, .05) !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}
input.ais-input-nilai:focus,
.ais-input-nilai:focus {
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .75) !important;
    box-shadow: 0 0 0 3px rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .18) !important;
    outline: none !important;
}
/* Sel grid yang memuat input nilai tidak boleh memotongnya */
.z-row td .ais-input-nilai {
    display: block !important;
}
@media (max-width: 768px) {
    input.ais-input-nilai,
    .ais-input-nilai {
        min-width: 72px !important;
        min-height: 42px !important;
        font-size: 16px !important;
    }
}

/* ======================================================================
   HERO PANEL MOBILE PROPORSIONAL
   Di desktop .main-announcement-hero-text memakai flex-basis 260px
   (lebar). Saat mobile hero berubah flex-direction:column sehingga
   basis 260px berlaku sebagai TINGGI -> hero "Informasi Hari Ini /
   Kehadiran Dosen" tampak kosong menjulang. Netralkan di layar sempit.
   ====================================================================== */
@media (max-width: 768px) {
    .main-announcement-hero {
        min-height: 0 !important;
        padding: 10px 14px 8px 14px !important;
        gap: 4px !important;
    }
    .main-announcement-hero-text {
        flex: 0 0 auto !important;
        width: 100% !important;
        min-height: 0 !important;
    }
    .main-announcement-hero .main-announcement-count {
        margin-top: 2px !important;
    }
}

/* ======================================================================
   POLES DROPDOWN MODUL/MENU MOBILE (patch 2026-06-12 b)
   - Label tombol menjadi "Menu" di HP (diatur JS MainStyleHelper).
   - Target sentuh >=44px, umpan balik tekan, focus ring aksesibel.
   - Panel turun dengan animasi halus; item lega & mudah disentuh.
   ====================================================================== */
@media (max-width: 900px) {
    .ais-modul-dd-toggle {
        min-height: 44px !important;
        padding: 9px 18px !important;
        gap: 8px !important;
        font-size: 12.5px !important;
        letter-spacing: .02em !important;
        box-shadow: 0 2px 8px rgba(0, 0, 0, .14) !important;
        transition: background .18s ease, transform .12s ease, box-shadow .18s ease !important;
    }
    .ais-modul-dd-toggle:active {
        transform: scale(.97) !important;
        box-shadow: 0 1px 3px rgba(0, 0, 0, .18) !important;
    }
    .ais-modul-dd-toggle:focus-visible {
        outline: 2px solid #fff !important;
        outline-offset: 2px !important;
    }

    /* Panel masuk dengan fade + slide kecil */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip {
        animation: aisModulDdMasuk .16s ease-out !important;
    }

    /* Item modul di dalam panel: baris penuh, tinggi sentuh nyaman */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton {
        min-height: 44px !important;
        border-radius: 10px !important;
        margin: 2px 0 !important;
        transition: background .15s ease !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton:hover,
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip .z-toolbarbutton:active {
        background: rgba(255, 255, 255, .18) !important;
    }

    /* Scrollbar panel tipis agar tidak makan lebar */
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip::-webkit-scrollbar {
        width: 6px;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip::-webkit-scrollbar-thumb {
        background: rgba(255, 255, 255, .35);
        border-radius: 999px;
    }
}

@keyframes aisModulDdMasuk {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* HP kecil: tombol toggle melebar penuh agar mudah dijangkau ibu jari,
   panel mengikuti hampir selebar layar */
@media (max-width: 480px) {
    .ais-modul-dd-toggle {
        display: flex !important;
        width: calc(100% - 16px) !important;
        justify-content: center !important;
    }
    .ais-modul-dd-host.ais-modul-dd-buka .main-responsive-module-strip {
        min-width: 86vw !important;
        max-height: 68vh !important;
    }
}

/* ======================================================================
   ELEARNING RAIL TAB VERTIKAL (.elearning-menu-tabbox)
   Tabbox orient=vertical ZK 5 dihitung dengan tabel+JS sehingga kolom
   tabnya bisa melayang menabrak panel sebelah. Di sini layout dipaksa
   flex murni: rail tab 46px di kiri (ikon + label diputar), panel isi
   mengisi sisanya. Tab terpilih = pil gradasi tema. Di mobile rail
   berubah menjadi baris tab horizontal yang bisa digeser.
   ====================================================================== */
html body .elearning-menu-tabbox.z-tabbox-ver,
html body .elearning-menu-tabbox {
    display: flex !important;
    flex-direction: row !important;
    align-items: stretch !important;
    width: 100% !important;
    max-width: 100% !important;
    position: relative !important;
    background: transparent !important;
    border: 0 !important;
    overflow: visible !important;
}

/* Rail tab: kolom tetap 46px, ikut tinggi panel, bisa scroll sendiri */
html body .elearning-menu-tabbox .z-tabs-ver,
html body .elearning-menu-tabbox > .z-tabs-ver {
    position: static !important;
    left: auto !important;
    top: auto !important;
    flex: 0 0 46px !important;
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
    height: auto !important;
    max-height: none !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    margin: 0 !important;
    padding: 6px 4px !important;
    box-sizing: border-box !important;
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .06) !important;
    border: 0 !important;
    border-right: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .14) !important;
    border-radius: 12px 0 0 12px !important;
}
html body .elearning-menu-tabbox .z-tabs-ver-cnt,
html body .elearning-menu-tabbox .z-tabs-ver-cnt li {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

/* Panel isi mengisi sisa lebar */
html body .elearning-menu-tabbox .z-tabpanels-ver,
html body .elearning-menu-tabbox > .z-tabpanels-ver {
    position: static !important;
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    border-radius: 0 12px 12px 0 !important;
    overflow: hidden !important;
}

/* Tiap tab: kapsul vertikal rapi, ikon di atas label yang diputar */
html body .elearning-menu-tabbox .z-tab-ver {
    display: block !important;
    width: 38px !important;
    margin: 3px auto !important;
    padding: 0 !important;
    border: 1px solid transparent !important;
    border-radius: 10px !important;
    background: transparent !important;
    box-sizing: border-box !important;
    transition: background .15s ease, border-color .15s ease !important;
}
html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-cnt,
html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-hl,
html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-hr {
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    width: auto !important;
}
html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-text {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 9px 3px !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    letter-spacing: .03em !important;
    line-height: 1.15 !important;
    color: #334155 !important;
    white-space: nowrap !important;
    max-height: 190px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
html body .elearning-menu-tabbox .z-tab-ver img {
    width: 18px !important;
    height: 18px !important;
    margin: 0 !important;
    display: block !important;
}

/* Hover & terpilih: ikuti tema */
html body .elearning-menu-tabbox .z-tab-ver:hover {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .10) !important;
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .18) !important;
}
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld {
    background: linear-gradient(180deg,
        var(--ais-theme-primary, #1d4ed8),
        var(--ais-theme-accent, #06b6d4)) !important;
    border-color: transparent !important;
    box-shadow: 0 6px 14px rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .35) !important;
}
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-text {
    color: #fff !important;
}

/* Scrollbar rail tipis */
html body .elearning-menu-tabbox .z-tabs-ver::-webkit-scrollbar {
    width: 5px;
}
html body .elearning-menu-tabbox .z-tabs-ver::-webkit-scrollbar-thumb {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .30);
    border-radius: 999px;
}

/* Mobile: rail TETAP vertikal dengan teks diputar (sesuai permintaan),
   dirampingkan ke 38px; tab terpilih tidak boleh memanjang menjadi balok
   kosong, dan panel isi mengisi sisa lebar di kanan rail. */
@media (max-width: 768px) {
    html body .elearning-menu-tabbox.z-tabbox-ver,
    html body .elearning-menu-tabbox {
        flex-direction: row !important;
        align-items: stretch !important;
        height: 100% !important;
        min-height: 0 !important;
    }
    html body .elearning-menu-tabbox .z-tabs-ver {
        flex: 0 0 38px !important;
        width: 38px !important;
        min-width: 38px !important;
        max-width: 38px !important;
        height: auto !important;
        max-height: 100% !important;
        align-self: stretch !important;
        padding: 4px 2px !important;
        -webkit-overflow-scrolling: touch !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver {
        width: 32px !important;
        margin: 2px auto !important;
    }
    /* Tab (termasuk yang terpilih) mengikuti tinggi isinya saja */
    html body .elearning-menu-tabbox .z-tab-ver,
    html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld {
        height: auto !important;
        max-height: 170px !important;
        flex: 0 0 auto !important;
        overflow: hidden !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-text {
        padding: 8px 2px !important;
        font-size: 10px !important;
        max-height: 150px !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver img {
        width: 16px !important;
        height: 16px !important;
    }
    html body .elearning-menu-tabbox .z-tabpanels-ver {
        flex: 1 1 auto !important;
        min-width: 0 !important;
        max-width: none !important;
        height: auto !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
    }
    html body .elearning-menu-tabbox .z-tabpanels-ver .z-tabpanel-ver {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
        padding: 4px !important;
    }
}

/* ======================================================================
   TOMBOL MENU MOBILE TIDAK TERPOTONG (patch 2026-06-12 c)
   Baris modul header (rowHeader2) masih membawa klem tinggi 32-42px dari
   blok scrollbar-fix lama + overflow:hidden pada header, sehingga tombol
   toggle "Menu" 44px terpangkas. Di layar sempit: tinggi baris mengikuti
   isi, semua pembungkusnya tidak boleh memotong, dan tombol diberi napas.
   ====================================================================== */
@media (max-width: 900px) {
    /* Header & seluruh rantai baris modul: jangan memotong isi */
    html body .main-responsive-header,
    html body tr.headerHbox.main-responsive-module-row,
    html body .main-responsive-module-row > td.z-row-inner,
    html body .main-responsive-module-row > td.z-row-inner > .z-row-cnt,
    html body .main-responsive-module-row .z-cell,
    html body .ais-modul-dd-host {
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        overflow: visible !important;
    }

    /* Area baris modul: tinggi mengikuti tombol + ruang napas atas-bawah */
    html body .ais-modul-dd-host {
        padding: 6px 8px 8px 8px !important;
        box-sizing: border-box !important;
        display: flex !important;
        align-items: center !important;
    }
    html body .ais-modul-dd-toggle {
        margin: 0 !important;
        position: relative !important;
        z-index: 5 !important;
    }

    /* Header tetap berlatar tema namun tidak mengunci tinggi 98px penuh
       di layar kecil; bayangan tipis memisahkan dari area tab di bawah */
    html body .main-responsive-header {
        min-height: 0 !important;
        padding-bottom: 2px !important;
        box-shadow: 0 2px 6px rgba(15, 23, 42, .14) !important;
    }
}

/* HP kecil: toggle melebar penuh sudah diatur blok sebelumnya; pastikan
   host membungkus penuh tanpa terpotong dan jarak ke baris tab cukup */
@media (max-width: 480px) {
    html body .ais-modul-dd-host {
        padding: 6px 8px 10px 8px !important;
    }
}

/* ======================================================================
   POPUP INFORMASI BISA DI-SCROLL (ais-ui-update-info-window)
   Dipakai popup "Pembaruan Tampilan" dan popup "Pengumuman Akademik"
   (langsungMunculDiTab). Di HP, popup yang lebih tinggi dari layar
   sebelumnya tidak bisa digulir; kini tinggi dibatasi viewport dan
   isinya menggulir di dalam jendela.
   ====================================================================== */
html body .ais-ui-update-info-window {
    max-width: 94vw !important;
    max-height: 86vh !important;
    display: flex !important;
    flex-direction: column !important;
    border-radius: 16px !important;
    overflow: hidden !important;
}
html body .ais-ui-update-info-window .z-window-modal-cnt,
html body .ais-ui-update-info-window .z-window-modal-cnt-noborder,
html body .ais-ui-update-info-window .z-window-highlighted-cnt,
html body .ais-ui-update-info-window .z-window-highlighted-cnt-noborder,
html body .ais-ui-update-info-window .z-window-overlapped-cnt,
html body .ais-ui-update-info-window .z-window-overlapped-cnt-noborder {
    max-height: calc(86vh - 46px) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    box-sizing: border-box !important;
}
/* Isi pengumuman (HTML bebas dari editor): gambar/tabel tidak meluber */
html body .ais-ui-update-info-isi {
    display: block !important;
    max-width: 100% !important;
    overflow-wrap: break-word !important;
    word-break: break-word !important;
}
html body .ais-ui-update-info-isi img,
html body .ais-ui-update-info-isi table {
    max-width: 100% !important;
    height: auto !important;
}
/* Tombol aksi selalu terlihat & mudah disentuh */
html body .ais-ui-update-info-actions .z-toolbarbutton {
    min-height: 40px !important;
    padding: 8px 18px !important;
}
@media (max-width: 600px) {
    html body .ais-ui-update-info-window {
        max-height: 92vh !important;
    }
    html body .ais-ui-update-info-window .z-window-modal-cnt,
    html body .ais-ui-update-info-window .z-window-modal-cnt-noborder,
    html body .ais-ui-update-info-window .z-window-highlighted-cnt,
    html body .ais-ui-update-info-window .z-window-highlighted-cnt-noborder {
        max-height: calc(92vh - 42px) !important;
    }
}

/* ======================================================================
   KOMPAT PORTALLAYOUT CE (ais.ui.compat.Portallayout/Portalchildren)
   Pengganti zkmax Portallayout (EE): baris kolom flex; lebar persen
   dari setWidth() Portalchildren dipakai sebagai basis kolom. Panel di
   dalamnya tetap Panel CE biasa. Responsif: kolom menumpuk di layar
   sempit. Berlaku sama di ZK 5 CE maupun ZK 9/10 CE.
   ====================================================================== */
/* PENTING: jarak antar kolom tidak boleh memakai column-gap, karena
   setWidth("50%") + gap membuat total > 100% sehingga kolom jatuh ke
   bawah. Jarak horizontal memakai padding di dalam kolom (box-sizing
   border-box menjaga 50%+50% tetap pas satu baris). */
html body .ais-ce-portallayout {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: flex-start !important;
    row-gap: 12px !important;
    column-gap: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}
html body .ais-ce-portalchildren {
    flex: 1 1 280px !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    padding: 0 6px !important;
}
/* Kolom dengan setWidth() inline: flex-basis WAJIB auto agar nilai
   width (50%, 100%, dst.) yang dipakai - tanpa ini basis 280px default
   mengalahkan width sehingga semua kolom menciut menumpuk di kiri. */
html body .ais-ce-portalchildren[style*="width"] {
    flex: 0 1 auto !important;
}
/* Panel di dalam kolom mengisi penuh lebar kolom */
html body .ais-ce-portalchildren > .z-panel {
    width: 100% !important;
    max-width: 100% !important;
}
@media (max-width: 900px) {
    html body .ais-ce-portallayout {
        flex-direction: column !important;
    }
    html body .ais-ce-portalchildren,
    html body .ais-ce-portalchildren[style*="width"] {
        width: 100% !important;
        max-width: 100% !important;
        flex: 1 1 auto !important;
    }
}
/* Colorbox CE: kotak warna rapi */
html body .ais-ce-colorbox,
html body input.ais-ce-colorbox {
    min-width: 48px !important;
    height: 32px !important;
    padding: 2px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 8px !important;
    cursor: pointer !important;
    background: #fff !important;
}


/* ======================================================================
   POPUP INFO PEMBARUAN TAMPILAN (patch 2026-06-13)
   Jaga window popup selalu DI ATAS modal mask ZK. Bila mask kebetulan
   mendapat z-index lebih tinggi dari window (gejala: tombol "Ya, Paham"
   diklik tidak bereaksi karena klik tertahan mask), aturan ini
   memulihkannya; !important menang atas z-index inline dari ZK.
   ====================================================================== */
.ais-ui-update-info-window {
    z-index: 99999 !important;
}

/* ======================================================================
   KOMPAT DETAIL CE (ais.ui.util.MyDetail) - revisi 13-06-2026
   Pengganti org.zkoss.zul.Detail (widget client-nya milik zkex/PE):
   tombol IKON MATA di baris grid (digambar ::before background-image,
   bukan child component agar kebal Common.clear). Klik membuka jendela
   "Rincian" 85% (min tinggi 550px) berisi konten + tombol Selesai.
   ====================================================================== */
html body .ais-ce-detail {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 28px !important;
    height: 24px !important;
    min-width: 28px !important;
    border-radius: 7px !important;
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .35) !important;
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .08) !important;
    cursor: pointer !important;
    box-sizing: border-box !important;
    transition: background .15s ease, box-shadow .15s ease !important;
}
html body .ais-ce-detail::before {
    content: "";
    width: 16px;
    height: 16px;
    /* relatif terhadap /css/css_utama.css agar ikut context path apa pun */
    background: url('../img/svg/eye.svg') no-repeat center / contain;
    display: block;
}
html body .ais-ce-detail:hover {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .18) !important;
    box-shadow: 0 2px 6px rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .25) !important;
}
/* status terbuka: tombol terisi warna tema, ikon mata diputihkan */
html body .ais-ce-detail.ais-ce-detail-buka {
    background: var(--ais-theme-primary, #1d4ed8) !important;
}
html body .ais-ce-detail.ais-ce-detail-buka::before {
    filter: brightness(0) invert(1);
}

/* Jendela "Rincian": lebar 85% (diset Java), tinggi mengikuti isi
   dengan minimum 550px, maksimum setinggi layar */
html body .ais-ce-detail-window {
    min-height: 550px !important;
    max-height: 92vh !important;
    max-width: 96vw !important;
    border-radius: 14px !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
}
html body .ais-ce-detail-window .ais-ce-detail-isi {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 10px 14px !important;
    flex: 1 1 auto !important;
    min-height: 440px !important;
    /* 150px = judul jendela + bilah Selesai + border; kalau kurang,
       bilah Selesai terpotong oleh overflow hidden jendela */
    max-height: calc(92vh - 150px) !important;
    overflow-y: auto !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
}
/* Bilah bawah dengan tombol Selesai */
html body .ais-ce-detail-kaki {
    flex: 0 0 auto !important;
    padding: 10px 14px !important;
    text-align: right !important;
    border-top: 1px solid #e2e8f0 !important;
    background: #f8fafc !important;
}
html body .ais-ce-detail-kaki .ais-ce-detail-selesai {
    min-height: 38px !important;
    padding: 8px 22px !important;
    font-weight: 800 !important;
}


/* =====================================================================
   DASBOR DRAFT JURNAL (DrafJurnalAction + PostingJurnalHelper)
   Link angka Draft / Terposting / Closing dan uraian baris jurnal.
   ===================================================================== */
html body .ais-posting-angka {
    display: inline-block !important;
    min-width: 44px;
    padding: 3px 10px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    text-align: right;
    text-decoration: none !important;
    color: var(--ais-theme-primary, #2563eb) !important;
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), 0.08);
    border: 1px solid rgba(var(--ais-theme-primary-rgb, 37, 99, 235), 0.18);
    border-radius: 999px;
    cursor: pointer;
    transition: background 0.15s ease, box-shadow 0.15s ease;
}
html body .ais-posting-angka:hover,
html body .ais-posting-angka:focus {
    background: rgba(var(--ais-theme-primary-rgb, 37, 99, 235), 0.16);
    box-shadow: 0 1px 4px rgba(15, 23, 42, 0.18);
    text-decoration: none !important;
}
/* Angka nol diredam supaya mata pengguna fokus ke baris yang masih ada draft */
html body .ais-posting-angka-nol {
    color: #64748b !important;
    background: #f1f5f9;
    border-color: #e2e8f0;
    font-weight: 600 !important;
}
html body .ais-posting-uraian,
html body .ais-posting-uraian .z-label {
    font-size: 11px !important;
    color: #64748b !important;
    white-space: normal !important;
    line-height: 1.35 !important;
}
html body tr.ais-posting-baris > td.z-row-inner {
    vertical-align: middle !important;
}
@media only screen and (max-width: 768px) {
    html body .ais-posting-angka {
        min-width: 40px;
        padding: 6px 10px !important; /* area sentuh lebih lega di layar sentuh */
        font-size: 13px !important;
    }
    html body .ais-posting-uraian,
    html body .ais-posting-uraian .z-label {
        font-size: 10px !important;
    }
}
/* ======================================================================
   HEADER GAYA NAVBAR JSP (patch 2026-06-13)
   Tombol kanan header MainAction dimiripkan dengan
   WEB-INF/baru/include/navbar.jsp:
   - Lonceng notifikasi: ikon saja + badge angka merah di pojok kanan-atas
     (komponen: MainAction.notif, sclass ais-header-bell / -badge).
   - Profil: pill putih berisi foto bulat + nama + role bertumpuk + chevron
     (komponen: MainAction.buatTombolProfilHeader, sclass ais-header-profile-*).
   ====================================================================== */
.ais-header-bell-wrap {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
}
.ais-header-bell {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 38px !important;
    height: 38px !important;
    border-radius: 50% !important;
    text-decoration: none !important;
    cursor: pointer !important;
    transition: background .15s ease !important;
}
.ais-header-bell:hover {
    background: rgba(255, 255, 255, .28) !important;
}
.ais-header-bell i {
    font-size: 17px !important;
}
/* Ikon kini berupa <img> bell.svg (MyToolbarbutton memetakan fa-bell). */
.ais-header-bell img {
    width: 17px !important;
    height: 17px !important;
    vertical-align: middle !important;
}
.ais-header-bell-wrap .ais-header-bell-badge {
    position: absolute !important;
    top: 1px !important;
    right: 0 !important;
}
.ais-header-bell-badge {
    position: absolute !important;
    top: 1px !important;
    right: 0 !important;
    min-width: 15px !important;
    height: 15px !important;
    line-height: 15px !important;
    padding: 0 4px !important;
    background: #dc3545 !important;
    color: #ffffff !important;
    border: 2px solid #ffffff !important;
    border-radius: 999px !important;
    font-size: 9px !important;
    font-weight: 800 !important;
    text-align: center !important;
    box-sizing: content-box !important;
}

.ais-header-profile-pill {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    background: #ffffff !important;
    border: 1px solid rgba(15, 23, 42, .10) !important;
    border-radius: 999px !important;
    padding: 3px 12px 3px 4px !important;
    box-shadow: 0 2px 6px rgba(15, 23, 42, .12) !important;
    text-decoration: none !important;
    cursor: pointer !important;
    max-width: 240px !important;
    transition: box-shadow .15s ease !important;
}
.ais-header-profile-pill:hover {
    box-shadow: 0 4px 12px rgba(15, 23, 42, .20) !important;
}
.ais-header-profile-pill::after {
    content: "\25BE";
    color: #94a3b8;
    font-size: 10px;
    margin-left: 2px;
}
.ais-header-profile-avatar {
    width: 32px !important;
    height: 32px !important;
    border-radius: 50% !important;
    object-fit: cover !important;
    border: 2px solid #ffffff !important;
    box-shadow: 0 1px 3px rgba(15, 23, 42, .25) !important;
    flex: 0 0 auto !important;
    background: #f1f5f9 !important;
}
.ais-header-profile-teks {
    display: flex !important;
    flex-direction: column !important;
    line-height: 1.15 !important;
    min-width: 0 !important;
    text-align: left !important;
}
.ais-header-profile-nama {
    font-size: 11.5px !important;
    font-weight: 800 !important;
    color: #0f172a !important;
    max-width: 150px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}
.ais-header-profile-role {
    font-size: 9.5px !important;
    font-weight: 600 !important;
    color: #64748b !important;
    white-space: nowrap !important;
}

/* Layar sempit: pill cukup foto saja (nama/role/chevron disembunyikan),
   meniru perilaku d-none d-xl-block pada navbar.jsp. */
@media (max-width: 992px) {
    .ais-header-profile-teks {
        display: none !important;
    }
    .ais-header-profile-pill {
        padding: 3px !important;
        gap: 0 !important;
    }
    .ais-header-profile-pill::after {
        display: none;
    }
}


/* =====================================================================
   HEADER KANAN RAPI (lonceng notifikasi + pill profil) - MainAction
   Menyelaraskan jarak, ukuran, dan warna ikon dengan elemen header lain.
   ===================================================================== */
/* Hbox kanan header (ZK merender Hbox sebagai tabel): semua sel sejajar
   tengah secara vertikal dengan jarak antar tombol yang konsisten. */
html body .ais-header-kanan td {
    vertical-align: middle !important;
    padding-left: 10px !important;
}
html body .ais-header-kanan td:first-child {
    padding-left: 0 !important;
}

/* Lonceng notifikasi: tombol diperbesar, diberi latar kaca senada header,
   dan ikon dipaksa PUTIH agar sama dengan teks/ikon header lainnya. */
html body .ais-header-bell {
    width: 44px !important;
    height: 44px !important;
    background: rgba(255, 255, 255, .14) !important;
    border: 1px solid rgba(255, 255, 255, .25) !important;
}
html body .ais-header-bell:hover {
    background: rgba(255, 255, 255, .30) !important;
}
html body .ais-header-bell img {
    width: 20px !important;
    height: 20px !important;
    filter: brightness(0) invert(1) !important; /* ikon svg gelap menjadi putih */
}
html body .ais-header-bell i {
    font-size: 19px !important;
    color: #ffffff !important;
}
html body .ais-header-bell-wrap {
    margin-right: 2px !important;
}
html body .ais-header-bell-wrap .ais-header-bell-badge {
    top: 2px !important;
    right: 2px !important;
}

/* Pill profil: dipastikan tampil sebagai kartu putih (menang dari gaya
   user_button_profile lama) dan sedikit diperlebar agar nama/role lega.
   Tinggi disamakan dengan lonceng (44px) supaya sejajar rapi. */
html body a.ais-header-profile-pill {
    display: inline-flex !important;
    align-items: center !important;
    gap: 9px !important;
    background: #ffffff !important;
    border: 1px solid rgba(15, 23, 42, .10) !important;
    border-radius: 999px !important;
    padding: 4px 14px 4px 5px !important;
    box-shadow: 0 2px 6px rgba(15, 23, 42, .18) !important;
    max-width: 280px !important;
    min-height: 44px !important;
    box-sizing: border-box !important;
}
html body a.ais-header-profile-pill .ais-header-profile-avatar {
    width: 34px !important;
    height: 34px !important;
}
html body a.ais-header-profile-pill .ais-header-profile-nama {
    font-size: 12.5px !important;
    color: #0f172a !important;
    max-width: 170px !important;
}
html body a.ais-header-profile-pill .ais-header-profile-role {
    font-size: 10px !important;
    color: #64748b !important;
}
@media (max-width: 992px) {
    html body a.ais-header-profile-pill {
        padding: 4px !important;
        min-height: 42px !important;
        gap: 0 !important;
    }
}

/* =====================================================================
   SAPAAN PROFIL "Hai, Selamat {Waktu}" & JUDUL GROUP DI GRID PROFIL
   Kolom pertama grid profil hanya 80px (kolom foto) sehingga caption
   group terpotong/menumpuk. Caption dibiarkan meluber penuh ke kanan
   dan diberi gaya judul seksi yang jelas.
   ===================================================================== */
html body .dgrid.fgrid tr.z-group td,
html body .dgrid.fgrid tr.z-group td.z-group-inner {
    white-space: nowrap !important;
    overflow: visible !important;
    padding-top: 10px !important;
    padding-bottom: 6px !important;
}
html body .dgrid.fgrid tr.z-group .z-group-cnt {
    white-space: nowrap !important;
    overflow: visible !important;
}
html body .dgrid.fgrid tr.z-group .z-group-cnt span,
html body .dgrid.fgrid tr.z-group span.z-label {
    font-size: 13.5px !important;
    font-weight: 800 !important;
    /* Band group diberi warna tema (lihat aturan tr.z-group global),
       jadi teks harus putih agar selalu terbaca. */
    color: #ffffff !important;
    letter-spacing: .2px;
}
@media only screen and (max-width: 768px) {
    html body .dgrid.fgrid tr.z-group .z-group-cnt span,
    html body .dgrid.fgrid tr.z-group span.z-label {
        font-size: 12.5px !important;
    }
}
/* Jendela "Rincian" milik MyDetail.
   CATATAN: blok utama ada di bagian "KOMPAT DETAIL CE revisi" di atas;
   di sini hanya pelengkap yang TIDAK menyentuh tinggi. Dulu blok ini
   memasang max-height 90vh + isi calc(90vh - 60px) sehingga isi+judul+
   bilah Selesai melebihi tinggi jendela dan tombol Selesai TERPOTONG
   oleh overflow hidden. */
html body .ais-ce-detail-window .ais-ce-detail-isi {
    border-left: 0 !important;
}


/* =====================================================================
   LINK DI DALAM CAPTION GROUP (band biru tema)
   Caption group konfigurasi berisi link riwayat revisi (.z-a). Warna
   global --ais-link (hijau tua) tidak terbaca di atas band biru tema,
   dan gaya chip inline-nya kalah oleh aturan !important global.
   Di sini link dipaksa putih dengan chip kaca transparan agar jelas.
   ===================================================================== */
html body tr.z-group .z-a,
html body tr.z-group a.z-a,
html body td.z-group-inner .z-a,
html body td.z-group-inner a.z-a {
    color: #ffffff !important;
    background: rgba(255, 255, 255, .14) !important;
    border: 1px solid rgba(255, 255, 255, .30) !important;
    border-radius: 6px !important;
    padding: 3px 9px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    text-shadow: none !important;
    display: inline-block !important;
    line-height: 1.4 !important;
    white-space: normal !important;
}
html body tr.z-group .z-a:hover,
html body td.z-group-inner .z-a:hover {
    color: #ffffff !important;
    background: rgba(255, 255, 255, .26) !important;
    border-color: rgba(255, 255, 255, .45) !important;
}
/* Label biasa di caption group ikut dipastikan putih (selain .z-label
   yang sudah dicakup aturan tema lama). */
html body tr.z-group .z-group-cnt,
html body td.z-group-inner .z-group-cnt {
    color: #ffffff !important;
}
/* ======================================================================
   SCROLL PANEL TABBOX (patch 2026-06-13)
   Pasangan Common.tampilanScrollTabbox() (marker .ais-scroll-tabbox-host):
   panel tab ZK 5 yang tingginya terkukur default-nya overflow:hidden,
   sehingga konten panjang TERPOTONG tanpa scrollbar (contoh: popup
   Informasi Pembayaran Mahasiswa). Aturan ini mengaktifkan scroll
   internal pada isi panel; deretan tab tetap terlihat saat discroll.
   Komponen ber-height 100% (iframe laporan, dsb.) tidak terpengaruh —
   mereka pas dengan area panel sehingga scrollbar tidak muncul.
   ====================================================================== */
.ais-scroll-tabbox-host .z-tabpanel,
.ais-scroll-tabbox-host .z-tabpanel-cnt {
    overflow: auto !important;
    box-sizing: border-box !important;
    -webkit-overflow-scrolling: touch;
}

/* ======================================================================
   PENGUAT HEADER KANAN (lonceng + profil) - 13-06-2026
   Hbox ZK 5 dirender sebagai <table>; tanpa penyelarasan td, lonceng
   dan pill profil tampak mengambang/menumpuk. Blok ini (paling akhir,
   html body) memastikan: sel rata-tengah vertikal, jarak antar aksi,
   pill profil SELALU horizontal, lonceng kontras di banner tema.
   ====================================================================== */
html body .ais-header-kanan,
html body .ais-header-kanan > tbody,
html body .ais-header-kanan > tbody > tr {
    vertical-align: middle !important;
}
html body .ais-header-kanan > tbody > tr > td {
    vertical-align: middle !important;
    padding: 0 0 0 12px !important;
    text-align: right !important;
}

/* Lonceng: lingkaran lembut di atas banner tema, ikon diputihkan */
html body .ais-header-bell,
html body span.z-toolbarbutton.ais-header-bell {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    border: 1px solid rgba(255, 255, 255, .35) !important;
    background: rgba(255, 255, 255, .14) !important;
    box-sizing: border-box !important;
}
html body .ais-header-bell:hover {
    background: rgba(255, 255, 255, .28) !important;
}
html body .ais-header-bell img {
    width: 18px !important;
    height: 18px !important;
    filter: brightness(0) invert(1) !important;
}

/* Pill profil: PAKSA horizontal (avatar kiri, teks kanan, caret ujung) */
html body a.ais-header-profile-pill,
html body .ais-header-profile-pill {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    white-space: nowrap !important;
    gap: 8px !important;
    background: rgba(255, 255, 255, .96) !important;
    border: 1px solid rgba(255, 255, 255, .55) !important;
    border-radius: 999px !important;
    padding: 4px 14px 4px 5px !important;
    box-shadow: 0 3px 10px rgba(15, 23, 42, .22) !important;
    line-height: 1.15 !important;
}
html body .ais-header-profile-pill > * {
    display: inline-flex !important;
    vertical-align: middle !important;
}
html body .ais-header-profile-pill .ais-header-profile-teks,
html body div.ais-header-profile-teks {
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    margin: 0 !important;
}
html body .ais-header-profile-avatar {
    width: 34px !important;
    height: 34px !important;
    border-radius: 50% !important;
    object-fit: cover !important;
}
/* Caret menempel di ujung kanan pill, bukan turun baris */
html body .ais-header-profile-pill::after {
    content: "\25BE";
    color: #94a3b8;
    font-size: 11px;
    margin-left: 4px;
    align-self: center;
}

/* Tombol "Online user(s)" di bawahnya: kapsul kecil senada */
html body .users_online_button {
    display: inline-block !important;
    margin-top: 6px !important;
    padding: 3px 12px !important;
    border-radius: 999px !important;
    border: 1px solid rgba(255, 255, 255, .30) !important;
    background: rgba(255, 255, 255, .10) !important;
    color: #ffffff !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
}

/* HP: pill cukup avatar (teks & caret sembunyi), lonceng tetap */
@media (max-width: 600px) {
    html body .ais-header-profile-pill .ais-header-profile-teks {
        display: none !important;
    }
    html body .ais-header-profile-pill::after {
        content: "";
        margin: 0;
    }
    html body .ais-header-profile-pill {
        padding: 3px !important;
    }
    html body .ais-header-kanan > tbody > tr > td {
        padding-left: 8px !important;
    }
}

/* ======================================================================
   PENCARIAN MENU DROPDOWN KONTRAS (popup Menu biru tua) - 13-06-2026
   Masalah: hasil pencarian (grid fgrid + MyToolbarbuttonConfig) dan
   ikon kaca pembesar berwarna gelap di atas latar biru tua popup
   sehingga nyaris tak terlihat.
   ====================================================================== */

/* Tombol kaca pembesar: kapsul putih agar ikon navy-nya kontras */
html body .main-responsive-menu-popup .main-responsive-menu-search-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 40px !important;
    height: 36px !important;
    border-radius: 10px !important;
    background: #ffffff !important;
    border: 1px solid rgba(255, 255, 255, .65) !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .25) !important;
    box-sizing: border-box !important;
}
html body .main-responsive-menu-popup .main-responsive-menu-search-button:hover {
    background: #f1f5f9 !important;
}
html body .main-responsive-menu-popup .main-responsive-menu-search-button img {
    width: 18px !important;
    height: 18px !important;
}

/* Judul "Hasil pencarian menu" (Group) : teks terang + garis pemisah */
html body .main-responsive-menu-popup .z-group .z-group-cnt,
html body .main-responsive-menu-popup .z-group .z-label,
html body .main-responsive-menu-popup .z-grid .z-label {
    color: rgba(255, 255, 255, .92) !important;
    font-weight: 800 !important;
    letter-spacing: .02em !important;
}
html body .main-responsive-menu-popup .z-group,
html body .main-responsive-menu-popup .z-group .z-group-inner,
html body .main-responsive-menu-popup .z-group td {
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(255, 255, 255, .18) !important;
}

/* Grid hasil: transparan, tiap hasil = baris terang yang jelas terbaca */
html body .main-responsive-menu-popup .z-grid,
html body .main-responsive-menu-popup .z-grid-body,
html body .main-responsive-menu-popup .z-grid tr.z-row,
html body .main-responsive-menu-popup .z-grid td.z-row-inner,
html body .main-responsive-menu-popup .z-grid .z-row-cnt {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
html body .main-responsive-menu-popup .z-grid .z-toolbarbutton {
    display: block !important;
    width: 100% !important;
    margin: 3px 0 !important;
    padding: 9px 12px !important;
    border-radius: 10px !important;
    background: rgba(255, 255, 255, .10) !important;
    border: 1px solid rgba(255, 255, 255, .14) !important;
    box-sizing: border-box !important;
    cursor: pointer !important;
    transition: background .15s ease !important;
}
html body .main-responsive-menu-popup .z-grid .z-toolbarbutton:hover {
    background: rgba(255, 255, 255, .22) !important;
}
html body .main-responsive-menu-popup .z-grid .z-toolbarbutton .z-toolbarbutton-cnt,
html body .main-responsive-menu-popup .z-grid .z-toolbarbutton-cnt {
    color: #ffffff !important;
    font-weight: 700 !important;
    font-size: 12px !important;
    text-align: left !important;
    white-space: normal !important;
}

/* ======================================================================
   KARTU IDENTITAS PROFIL (ProfileUiHelper.mulaiKartuIdentitas)
   Foto + sapaan + nama + kontak digabung satu kartu horizontal,
   menggantikan layout grid 2 kolom yang membuat identitas turun
   ke bawah. Kontak (HP/email) berdampingan bila muat.
   ====================================================================== */
html body .ais-profil-kartu {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
    border: 1px solid #dbeafe !important;
    border-radius: 16px !important;
    padding: 12px 16px !important;
    box-shadow: 0 10px 24px rgba(15, 23, 42, .07) !important;
}
html body .ais-profil-kartu-foto {
    flex: 0 0 auto !important;
}
html body .ais-profil-kartu-foto img {
    width: 72px !important;
    height: 72px !important;
    border-radius: 16px !important;
    object-fit: cover !important;
    box-shadow: 0 4px 12px rgba(15, 23, 42, .18) !important;
    display: block !important;
}
html body .ais-profil-kartu-info {
    flex: 1 1 240px !important;
    min-width: 0 !important;
    display: block !important;
    text-align: left !important;
}
html body .ais-profil-kartu-sapaan {
    display: block !important;
    font-size: 10.5px !important;
    font-weight: 800 !important;
    letter-spacing: .08em !important;
    text-transform: uppercase !important;
    color: #64748b !important;
    margin-bottom: 2px !important;
}
/* Label nama/NIM tampil per baris rapat */
html body .ais-profil-kartu-info > .z-label {
    display: block !important;
    line-height: 1.35 !important;
}
/* Kontak (hbox ikon+nomor dari tampilkanHp/Email) berdampingan */
html body .ais-profil-kartu-info > table {
    display: inline-table !important;
    width: auto !important;
    vertical-align: middle !important;
    margin: 4px 16px 0 0 !important;
}
@media (max-width: 480px) {
    html body .ais-profil-kartu-foto img {
        width: 58px !important;
        height: 58px !important;
    }
    html body .ais-profil-kartu {
        padding: 10px 12px !important;
        gap: 10px !important;
    }
}

/* ======================================================================
   HEADER KANAN: lonceng ber-label "Info" + rapat ke pill profil
   (13-06-2026 b). Akar jarak lebar: hbox ZK ber-width 100% membuat
   sel tabel melar - kini tabel menyusut seukuran isinya dan menempel
   ke kanan, jarak antar aksi hanya 8px.
   ====================================================================== */
html body .ais-header-kanan {
    width: auto !important;
    display: inline-table !important;
    float: right !important;
    margin-left: auto !important;
}
html body .ais-header-kanan > tbody > tr > td {
    padding: 0 0 0 8px !important;
    width: auto !important;
    white-space: nowrap !important;
}

/* Lonceng kini kapsul ber-label "Info" (bukan lingkaran ikon saja) */
html body .ais-header-bell,
html body span.z-toolbarbutton.ais-header-bell {
    width: auto !important;
    min-width: 0 !important;
    height: 40px !important;
    padding: 0 14px 0 10px !important;
    border-radius: 999px !important;
    gap: 6px !important;
}
html body .ais-header-bell .z-toolbarbutton-body,
html body .ais-header-bell .z-toolbarbutton-cnt {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    color: #ffffff !important;
    font-size: 11.5px !important;
    font-weight: 800 !important;
    letter-spacing: .02em !important;
    background: transparent !important;
    border: 0 !important;
    padding: 0 !important;
}
/* badge angka menyesuaikan posisi kapsul baru */
html body .ais-header-bell-wrap .ais-header-bell-badge {
    top: -2px !important;
    right: -2px !important;
}


/* =====================================================================
   ELEARNING RAIL TAB VERTIKAL - DIPERLEBAR (TampilanELearningAction)
   Rail ramping ala app-launcher: ikon di ATAS, label horizontal di BAWAH
   (tanpa rotasi) agar label terbaca namun ruang panel tetap hemat.
   Menimpa blok "ELEARNING RAIL TAB VERTIKAL" di atas; gaya inline
   writing-mode pada tiap tab ikut dinetralkan.
   ===================================================================== */
html body .elearning-menu-tabbox .z-tabs-ver,
html body .elearning-menu-tabbox > .z-tabs-ver {
    flex: 0 0 86px !important;
    width: 86px !important;
    min-width: 86px !important;
    max-width: 86px !important;
    padding: 6px 5px !important;
}
html body .elearning-menu-tabbox .z-tab-ver {
    display: block !important;
    width: 100% !important;
    margin: 3px 0 !important;
    writing-mode: horizontal-tb !important; /* netralkan gaya inline vertical-rl */
}
html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-text {
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 5px !important;
    padding: 8px 4px !important;
    font-size: 10.5px !important;
    text-align: center !important;
    writing-mode: horizontal-tb !important;
    text-orientation: initial !important;
    /* label boleh wrap maksimal ~2 baris agar nama panjang tetap terbaca */
    white-space: normal !important;
    word-break: break-word !important;
    max-height: 60px !important;
    line-height: 1.25 !important;
}
html body .elearning-menu-tabbox .z-tab-ver img {
    width: 20px !important;
    height: 20px !important;
    flex: 0 0 auto !important;
}

/* Mobile: rail tetap horizontal-label namun sedikit lebih ramping */
@media (max-width: 768px) {
    html body .elearning-menu-tabbox .z-tabs-ver {
        flex: 0 0 74px !important;
        width: 74px !important;
        min-width: 74px !important;
        max-width: 74px !important;
        padding: 4px 4px !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver,
    html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld {
        width: 100% !important;
        margin: 2px 0 !important;
        max-height: none !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver .z-tab-ver-text {
        padding: 6px 3px !important;
        font-size: 9.5px !important;
        max-height: 54px !important;
    }
    html body .elearning-menu-tabbox .z-tab-ver img {
        width: 16px !important;
        height: 16px !important;
    }
}

/* =====================================================================
   ELEARNING RAIL: TAB TERPILIH TERBACA
   Tema global mengecat lapisan dalam tab terpilih (-hl/-hr/-hm) putih,
   menutupi gradasi tema sehingga teks putih ikut "hilang". Di rail
   e-learning lapisan dalam dibuat transparan agar gradasi tema tampak
   dan teks putihnya kontras.
   ===================================================================== */
html body .elearning-menu-tabbox .z-tab-ver-seld .z-tab-ver-hl,
html body .elearning-menu-tabbox .z-tab-ver-seld .z-tab-ver-hr,
html body .elearning-menu-tabbox .z-tab-ver-seld .z-tab-ver-hm,
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hl,
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hr,
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hm {
    background: transparent !important;
    border-color: transparent !important;
    box-shadow: none !important;
}
/* Teks & ikon tab terpilih putih di atas gradasi tema */
html body .elearning-menu-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-text {
    color: #ffffff !important;
    font-weight: 800 !important;
}
/* Tab tidak terpilih dipastikan teks gelap agar kontras di rail terang */
html body .elearning-menu-tabbox .z-tab-ver:not(.z-tab-ver-seld) .z-tab-ver-text {
    color: #334155 !important;
}

/* =====================================================================
   PENGATURAN KONFIGURASI (.ais-konfig-tabbox) - KonfigurasiNewAction
   1. Rail tab vertikal diperbesar dan dirapikan (label boleh wrap,
      tidak lagi terpotong "Monitoring, Audit, da...").
   2. Label tiap konfigurasi (link riwayat revisi di caption Groupbox)
      dipaksa kontras: teks putih + chip kaca di atas band biru tema.
   ===================================================================== */
html body .ais-konfig-tabbox .z-tabs-ver,
html body .ais-konfig-tabbox > .z-tabs-ver {
    width: 212px !important;
    min-width: 212px !important;
    max-width: 212px !important;
    padding: 6px 6px !important;
    box-sizing: border-box !important;
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .05) !important;
    border-right: 1px solid rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .14) !important;
}
html body .ais-konfig-tabbox .z-tab-ver {
    display: block !important;
    width: 100% !important;
    margin: 2px 0 !important;
    border: 1px solid transparent !important;
    border-radius: 9px !important;
    background: transparent !important;
    box-sizing: border-box !important;
    writing-mode: horizontal-tb !important;
}
html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-cnt,
html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-hl,
html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-hr,
html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-hm {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    margin: 0 !important;
    width: auto !important;
}
html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-text {
    display: block !important;
    padding: 8px 11px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    color: #334155 !important;
    text-align: left !important;
    line-height: 1.3 !important;
    /* label panjang boleh wrap, jangan dipotong elipsis */
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    writing-mode: horizontal-tb !important;
    text-orientation: initial !important;
}
html body .ais-konfig-tabbox .z-tab-ver:hover {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .10) !important;
    border-color: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .18) !important;
}
html body .ais-konfig-tabbox .z-tab-ver.z-tab-ver-seld {
    background: linear-gradient(135deg,
        var(--ais-theme-primary, #1d4ed8),
        var(--ais-theme-accent, #06b6d4)) !important;
    border-color: transparent !important;
    box-shadow: 0 5px 12px rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .30) !important;
}
html body .ais-konfig-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hl,
html body .ais-konfig-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hr,
html body .ais-konfig-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-hm {
    background: transparent !important;
    border-color: transparent !important;
    box-shadow: none !important;
}
html body .ais-konfig-tabbox .z-tab-ver.z-tab-ver-seld .z-tab-ver-text {
    color: #ffffff !important;
    font-weight: 800 !important;
}
/* Rail bisa discroll sendiri dengan scrollbar tipis */
html body .ais-konfig-tabbox .z-tabs-ver {
    overflow-y: auto !important;
    overflow-x: hidden !important;
}
html body .ais-konfig-tabbox .z-tabs-ver::-webkit-scrollbar {
    width: 5px;
}
html body .ais-konfig-tabbox .z-tabs-ver::-webkit-scrollbar-thumb {
    background: rgba(var(--ais-theme-primary-rgb, 29, 78, 216), .30);
    border-radius: 999px;
}

/* Label konfigurasi = link riwayat revisi di dalam caption Groupbox yang
   band-nya biru tema. Paksa putih + chip kaca agar selalu kontras
   (gaya inline chip biru muda kalah oleh aturan global .z-a !important). */
html body .ais-konfig-tabbox .z-caption .z-a,
html body .ais-konfig-tabbox .z-caption a.z-a {
    color: #ffffff !important;
    background: rgba(255, 255, 255, .15) !important;
    border: 1px solid rgba(255, 255, 255, .32) !important;
    border-radius: 6px !important;
    padding: 3px 9px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    text-shadow: none !important;
    display: inline-block !important;
    line-height: 1.4 !important;
    white-space: normal !important;
}
html body .ais-konfig-tabbox .z-caption .z-a:hover {
    color: #ffffff !important;
    background: rgba(255, 255, 255, .28) !important;
    border-color: rgba(255, 255, 255, .48) !important;
}
/* Label tanpa hak revisi (Label biasa) di caption ikut putih */
html body .ais-konfig-tabbox .z-caption .z-label {
    color: #ffffff !important;
}

/* Mobile: rail menyempit, label tetap horizontal & wrap */
@media only screen and (max-width: 768px) {
    html body .ais-konfig-tabbox .z-tabs-ver {
        width: 132px !important;
        min-width: 132px !important;
        max-width: 132px !important;
        padding: 4px 4px !important;
    }
    html body .ais-konfig-tabbox .z-tab-ver .z-tab-ver-text {
        padding: 7px 8px !important;
        font-size: 10.5px !important;
    }
}

/* ======================================================================
   FORM ROW — ais-form-row
   Menggantikan UIUtil.rowForm() yang dihapus.
   Dipasang via row.setSclass("ais-form-row") pada Row ZK.
   Berlaku untuk semua form legacy (non-FormBuilder) yang masih
   menggunakan Row langsung di dalam Grid/MyGrid.

   FormBuilder sendiri menggunakan Cell dengan inline-style per-sel
   (alternating odd/even) sehingga tidak memerlukan class ini.
   ====================================================================== */

/* Sel-sel di dalam baris form: hapus border bawaan ZK, beri padding standar */
.ais-form-row > td,
.ais-form-row > .z-cell {
    border: 0 !important;
    padding: 4px !important;
    vertical-align: top !important;
}

/* Pastikan input di dalam baris form tidak mendapat border ekstra dari tema */
.ais-form-row > td > input,
.ais-form-row > td > textarea,
.ais-form-row > td > select {
    box-sizing: border-box;
}

/* ======================================================================
   INPUT NILAI BESAR — ais-input-nilai
   Digunakan via UIUtil.gayaInputNilai(comp) untuk kotak nilai/skor.
   Ukuran besar, angka tebal di tengah, nyaman disentuh di mobile.
   ====================================================================== */
.ais-input-nilai {
    font-size: 16px !important;
    font-weight: 700 !important;
    text-align: center !important;
    min-height: 36px !important;
    padding: 4px 6px !important;
    border: 2px solid var(--ais-border, #dce6ef) !important;
    border-radius: var(--ais-radius-sm, 6px) !important;
    background: #fff !important;
    color: var(--ais-text, #1f2937) !important;
    transition: border-color .15s ease;
}
.ais-input-nilai:focus {
    border-color: var(--ais-info, #2563eb) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(37,99,235,.15) !important;
}