/* ABSENKI admin phone layout — activated only below 768px. */
@media (max-width: 767.98px) {
  :root {
    --admin-mobile-gutter: 12px;
    --admin-mobile-topbar: 64px;
  }

  html { width: 100%; overflow-x: hidden; -webkit-text-size-adjust: 100%; }
  body.admin-shell, body.login-shell {
    width: 100%;
    min-height: calc(var(--absenki-vh, 1vh) * 100);
    overflow-x: hidden;
    background: #f5f7fb;
  }
  body.admin-shell input,
  body.admin-shell select,
  body.admin-shell textarea,
  body.login-shell input { font-size: 16px !important; }

  .admin-shell .main-content { margin-left: 0 !important; width: 100%; min-width: 0; padding-bottom: 18px; }
  .admin-shell .main-content > .container-fluid,
  .admin-shell .main-content .header > .container-fluid { padding-left: var(--admin-mobile-gutter) !important; padding-right: var(--admin-mobile-gutter) !important; }

  .admin-topbar {
    position: sticky !important;
    top: 0;
    z-index: 1035 !important;
    min-height: var(--admin-mobile-topbar);
    padding: 7px 0 !important;
    box-shadow: 0 8px 24px rgba(39,48,78,.13);
  }
  .admin-topbar .container-fluid { padding-left: 10px !important; padding-right: 10px !important; }
  .admin-topbar .navbar-collapse { min-width: 0; }
  .admin-topbar .sidenav-toggler { padding-right: 10px !important; flex: 0 0 auto; }
  .admin-page-meta { min-width: 0; }
  .admin-page-kicker { display: none !important; }
  .admin-page-title { max-width: 54vw; margin: 0 !important; font-size: .98rem !important; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .admin-topbar .avatar { width: 36px !important; height: 36px !important; }
  .admin-topbar .dropdown-menu {
    position: fixed !important;
    top: calc(var(--admin-mobile-topbar) + 7px) !important;
    left: 10px !important;
    right: 10px !important;
    width: auto !important;
    transform: none !important;
  }

  .admin-shell .sidenav {
    width: min(88vw, 350px) !important;
    max-width: min(88vw, 350px) !important;
    z-index: 1050 !important;
    box-shadow: 18px 0 42px rgba(15,23,42,.18);
  }
  .admin-shell .sidenav .scrollbar-inner { height: calc(var(--absenki-vh, 1vh) * 100); overflow-y: auto; }
  .admin-shell .sidenav .navbar-brand-img { max-height: 42px; max-width: 100px; }
  .admin-shell .sidenav .nav-link { min-height: 48px; }

  .admin-shell .header { padding-top: 16px !important; padding-bottom: 10px !important; min-height: 0 !important; }
  .admin-shell .header .row { margin-left: -5px; margin-right: -5px; }
  .admin-shell .header [class*="col-"] { padding-left: 5px; padding-right: 5px; }
  .admin-shell .container-fluid.mt--6,
  .admin-shell .container-fluid.mt--7,
  .admin-shell .container-fluid.mt--8 { margin-top: 0 !important; }

  .admin-shell .row { min-width: 0; }
  .admin-shell .row > [class*="col-"] { min-width: 0; }
  .admin-shell .card,
  .admin-shell .page-card,
  .admin-shell .settings-shell { border-radius: 16px !important; }
  .admin-shell .card { margin-bottom: 14px; }
  .admin-shell .card-header,
  .admin-shell .card-body,
  .admin-shell .card-footer { padding: 14px !important; }
  .admin-shell .card-header h3,
  .admin-shell .card-header h4,
  .admin-shell .card-header h5 { font-size: 1rem; line-height: 1.3; }
  .admin-shell .card-body { overflow-wrap: anywhere; }

  .admin-shell .form-control,
  .admin-shell .custom-select,
  .admin-shell select.form-control,
  .login-shell .form-control { min-height: 48px; border-radius: 12px; }
  .admin-shell textarea.form-control { min-height: 112px; }
  .admin-shell .input-group-text { min-width: 46px; justify-content: center; }
  .admin-shell .form-row { margin-left: -5px; margin-right: -5px; }
  .admin-shell .form-row > [class*="col-"] { padding-left: 5px; padding-right: 5px; }
  .admin-shell .settings-grid.two-col,
  .admin-shell .settings-grid.three-col { grid-template-columns: 1fr !important; }
  .admin-shell .settings-shell { padding: 12px !important; }
  .admin-shell .settings-toggle-row { align-items: flex-start; }

  .admin-shell .btn { min-height: 42px; white-space: normal; }
  .admin-shell .card-footer,
  .admin-shell .form-actions,
  .admin-shell .settings-actions { display: grid !important; grid-template-columns: 1fr; gap: 8px; }
  .admin-shell .card-footer .btn,
  .admin-shell .form-actions .btn,
  .admin-shell .settings-actions .btn { width: 100%; margin: 0 !important; }
  .admin-shell .btn-group,
  .admin-shell .btn-group-export { display: flex; width: 100%; overflow-x: auto; }
  .admin-shell .btn-group > .btn,
  .admin-shell .btn-group-export .btn { flex: 1 0 auto; }

  /* DataTables: phone controls stack, data remains scrollable. */
  .admin-shell .table-responsive,
  .admin-shell .dataTables_wrapper {
    width: 100%;
    max-width: 100%;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }
  .admin-shell .table-responsive > table,
  .admin-shell .dataTables_wrapper table { min-width: 720px; margin-bottom: 0; }
  .admin-shell .dataTables_wrapper > .row { margin-left: 0 !important; margin-right: 0 !important; }
  .admin-shell .dataTables_wrapper > .row > [class*="col-"] { flex: 0 0 100%; max-width: 100%; padding: 4px 0; }
  .admin-shell .dataTables_length,
  .admin-shell .dataTables_filter,
  .admin-shell .dataTables_info,
  .admin-shell .dataTables_paginate { width: 100%; text-align: left !important; }
  .admin-shell .dataTables_filter label { display: block; width: 100%; }
  .admin-shell .dataTables_filter input { width: 100% !important; margin: 6px 0 0 !important; min-height: 44px; }
  .admin-shell .dataTables_paginate .pagination { justify-content: center !important; flex-wrap: wrap; }
  .admin-shell table td,
  .admin-shell table th { white-space: nowrap; }

  .admin-shell .nav-tabs,
  .admin-shell .nav-pills { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
  .admin-shell .nav-tabs::-webkit-scrollbar,
  .admin-shell .nav-pills::-webkit-scrollbar { display: none; }
  .admin-shell .nav-tabs .nav-item,
  .admin-shell .nav-pills .nav-item { flex: 0 0 auto; }
  .admin-shell .nav-tabs .nav-link,
  .admin-shell .nav-pills .nav-link { white-space: nowrap; min-height: 44px; }

  .admin-shell .modal-dialog {
    width: calc(100% - 12px);
    max-width: none;
    min-height: calc(100% - 12px);
    margin: 6px auto;
    display: flex;
    align-items: flex-end;
  }
  .admin-shell .modal-content { max-height: calc(var(--absenki-vh, 1vh) * 100 - 12px); border-radius: 20px 20px 0 0 !important; overflow: hidden; }
  .admin-shell .modal-body { overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .admin-shell .modal-footer { display: grid; grid-template-columns: 1fr; gap: 8px; }
  .admin-shell .modal-footer .btn { width: 100%; margin: 0 !important; }

  .admin-shell .filterbar-section { flex-direction: column; align-items: stretch; padding: 12px; }
  .admin-shell .filterbar-section .form-group,
  .admin-shell .filterbar-section .btn { width: 100%; }
  .admin-shell .dashboard-stat-card .card-body { padding: 14px !important; }
  .admin-shell .dashboard-stat-value { font-size: 1.45rem !important; }
  .admin-shell .attendance-status-grid,
  .admin-shell .history-summary-grid,
  .admin-shell .report-summary-grid { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }

  .admin-shell #reader,
  .admin-shell .scanner-shell,
  .admin-shell .scan-shell { width: 100% !important; max-width: 100% !important; }
  .admin-shell #reader video,
  .admin-shell video { max-width: 100%; height: auto; }

  .admin-shell .footer { padding: 10px 12px 4px !important; }
  .admin-shell .footer .copyright { text-align: center !important; font-size: .76rem; }

  /* Admin login is a dedicated phone screen. */
  .login-shell .login-shell-container { min-height: calc(var(--absenki-vh, 1vh) * 100) !important; padding: 18px 12px !important; align-items: center !important; }
  .login-shell .login-shell-row { margin: 0; }
  .login-shell .login-panel-col { padding: 0; }
  .login-shell .login-panel { border-radius: 22px !important; box-shadow: 0 18px 45px rgba(29,39,69,.14) !important; }
  .login-shell .login-panel .card-body { padding: 24px 18px !important; }
  .login-shell .login-panel-logo { max-height: 52px !important; }
  .login-shell .login-panel-meta { gap: 8px; }
  .login-shell .login-submit-btn { min-height: 50px; border-radius: 14px; }

  .admin-shell .absenki-network-bar {
    left: 8px !important;
    right: 8px !important;
    bottom: calc(8px + env(safe-area-inset-bottom)) !important;
    max-width: none !important;
  }
}

/* ABSENKI responsive refinement v2. These rules intentionally override
   Argon's compact-sidebar transform on phones. */
@media (max-width: 767.98px) {
  :root {
    --admin-mobile-gutter: clamp(10px, 3.2vw, 14px);
    --admin-mobile-topbar: 60px;
    --admin-mobile-drawer: min(86vw, 330px);
  }

  html,
  body.admin-shell {
    max-width: 100%;
    overflow-x: clip !important;
  }

  body.admin-shell.g-sidenav-pinned,
  body.admin-shell.g-sidenav-show {
    overflow: hidden !important;
    touch-action: none;
  }

  .admin-shell .sidenav {
    top: 0 !important;
    left: 0 !important;
    right: auto !important;
    width: var(--admin-mobile-drawer) !important;
    min-width: var(--admin-mobile-drawer) !important;
    max-width: var(--admin-mobile-drawer) !important;
    height: calc(var(--absenki-vh, 1vh) * 100) !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: translate3d(-105%, 0, 0) !important;
    transition: transform .22s ease !important;
    overflow: hidden !important;
    border-radius: 0 22px 22px 0;
    box-shadow: 20px 0 48px rgba(15,23,42,.2) !important;
    will-change: transform;
  }

  .admin-shell.g-sidenav-pinned .sidenav,
  .admin-shell.g-sidenav-show .sidenav {
    transform: translate3d(0, 0, 0) !important;
  }

  .admin-shell.g-sidenav-hidden .sidenav,
  .admin-shell.g-sidenav-hide .sidenav {
    transform: translate3d(-105%, 0, 0) !important;
  }

  .admin-shell .sidenav.fixed-left + .main-content,
  .admin-shell.g-sidenav-pinned .sidenav.fixed-left + .main-content,
  .admin-shell.g-sidenav-show .sidenav.fixed-left + .main-content {
    margin-left: 0 !important;
    transform: none !important;
  }

  .admin-shell .sidenav .scrollbar-inner,
  .admin-shell .sidenav .scroll-wrapper,
  .admin-shell .sidenav .scroll-content {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
  }

  .admin-shell .sidenav .scrollbar-inner {
    height: calc(var(--absenki-vh, 1vh) * 100) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }

  .admin-shell .sidenav .scroll-content {
    position: static !important;
    max-height: none !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  .admin-shell .sidenav .scroll-element,
  .admin-shell .sidenav .scrollbar-track {
    display: none !important;
  }

  .admin-shell .sidenav-header {
    height: auto !important;
    min-height: 72px !important;
    padding: 12px 12px 10px !important;
    border-bottom: 1px solid #eef2f7;
    background: rgba(255,255,255,.98);
  }

  .admin-shell .sidenav-brand-wrap {
    width: 100%;
    min-width: 0;
    gap: 10px;
  }

  .admin-shell .sidenav-brand-wrap .navbar-brand {
    display: flex !important;
    align-items: center;
    flex: 0 0 auto;
    max-width: 74px;
  }

  .admin-shell .sidenav .navbar-brand-img {
    display: block;
    width: auto;
    max-width: 72px !important;
    max-height: 38px !important;
    object-fit: contain;
  }

  .admin-shell .sidenav-brand-text {
    display: block !important;
    flex: 1 1 auto;
    min-width: 0;
  }

  .admin-shell .sidenav-brand-text strong {
    display: block;
    max-width: 100%;
    font-size: .9rem;
    line-height: 1.25;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .admin-shell .sidenav-mobile-close {
    flex: 0 0 38px;
  }

  .admin-shell .sidenav .navbar-inner {
    width: 100%;
    min-width: 0;
    padding: 6px 8px 14px !important;
  }

  .admin-shell .sidenav .navbar-collapse,
  .admin-shell .sidenav .navbar-nav,
  .admin-shell .sidenav .nav-item {
    width: 100%;
    min-width: 0;
  }

  .admin-shell .sidenav .navbar-collapse {
    display: block !important;
    overflow: visible !important;
  }

  .admin-shell .menu-section-label {
    padding: 13px 12px 5px !important;
    font-size: .64rem !important;
    line-height: 1.25;
    letter-spacing: .075em;
    overflow-wrap: anywhere;
  }

  .admin-shell .sidenav .navbar-nav .nav-link {
    width: auto;
    min-width: 0;
    min-height: 46px;
    margin: 2px 3px !important;
    padding: 10px 12px !important;
    gap: 10px;
    border-radius: 13px;
    font-size: .9rem;
    line-height: 1.25;
    overflow: visible;
  }

  .admin-shell .sidenav .navbar-nav .nav-link i {
    min-width: 22px;
    margin-right: 0 !important;
    text-align: center;
    flex: 0 0 22px;
  }

  .admin-shell .sidenav .nav-link-text {
    display: block !important;
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .admin-shell .sidenav .nav-sm .nav-link {
    min-height: 42px;
    padding: 8px 10px 8px 44px !important;
    font-size: .84rem;
  }

  .admin-shell .sidebar-footer-card {
    width: auto;
    min-width: 0;
    margin: 12px 4px 8px !important;
    padding: 13px !important;
    border-radius: 16px;
    overflow: hidden;
  }

  .admin-shell .sidebar-footer-card strong {
    font-size: .9rem;
    line-height: 1.3;
    overflow-wrap: anywhere;
  }

  .admin-shell .sidebar-footer-card p {
    font-size: .75rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
  }

  .admin-shell .sidebar-footer-card .btn {
    min-height: 44px !important;
    font-size: .88rem;
  }

  .admin-shell .backdrop {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1040 !important;
    width: 100vw !important;
    height: calc(var(--absenki-vh, 1vh) * 100) !important;
    background: rgba(15,23,42,.46) !important;
    backdrop-filter: blur(2px);
  }

  .admin-topbar {
    width: 100%;
    min-width: 0;
    padding-top: max(6px, env(safe-area-inset-top)) !important;
  }

  .admin-topbar .collapse.navbar-collapse {
    width: 100%;
  }

  .admin-page-title {
    max-width: min(55vw, 220px) !important;
    font-size: clamp(.9rem, 4vw, 1rem) !important;
    letter-spacing: 0;
  }

  .admin-shell .header {
    padding-top: 12px !important;
    padding-bottom: 8px !important;
  }

  .admin-shell .header + .container-fluid,
  .admin-shell .dashboard-modern {
    width: 100%;
    max-width: 100%;
  }

  .admin-shell .card-header h3,
  .admin-shell .card-header h4,
  .admin-shell .card-header h5,
  .admin-shell .page-card h3,
  .admin-shell .page-card h4 {
    overflow-wrap: anywhere;
  }
}

@media (max-width: 374.98px) {
  :root { --admin-mobile-drawer: calc(100vw - 38px); }
  .admin-shell .sidenav-header { padding-left: 10px !important; padding-right: 10px !important; }
  .admin-shell .sidenav .navbar-inner { padding-left: 5px !important; padding-right: 5px !important; }
  .admin-shell .sidenav .navbar-nav .nav-link { font-size: .86rem; }
  .admin-page-title { max-width: 48vw !important; }
}

/* Tablet: keep the desktop structure, but improve spacing and text wrapping. */
@media (min-width: 768px) and (max-width: 1199.98px) {
  .admin-shell .main-content { margin-left: 0 !important; }
  .admin-shell .sidenav {
    width: min(42vw, 340px) !important;
    max-width: min(42vw, 340px) !important;
  }
  .admin-shell.g-sidenav-show .sidenav,
  .admin-shell.g-sidenav-pinned .sidenav { transform: translateX(0) !important; }
  .admin-shell .sidenav .nav-link-text,
  .admin-shell .sidenav-brand-text { white-space: normal; overflow-wrap: anywhere; }
  .admin-shell .container-fluid { max-width: 100%; }
}
@media (max-width: 767.98px) {
  .admin-shell .sidenav .navbar-collapse {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .admin-shell .sidenav .navbar-nav {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .admin-shell .sidenav .navbar-nav > .nav-item,
  .admin-shell .sidenav .menu-section-label {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* ========================================================================
   ABSENKI V5 — phone drawer hard reset
   Menghapus efek geser Argon/jquery.scrollbar pada HP dan memastikan semua
   isi sidebar selalu berada di dalam viewport. Desktop/tablet tidak berubah.
   ======================================================================== */
@media (max-width: 767.98px) {
  :root {
    --admin-mobile-drawer-v5: calc(100vw - 10px);
  }

  html,
  body.admin-shell {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
    overscroll-behavior-x: none;
  }

  body.admin-shell {
    position: relative;
  }

  body.admin-shell #sidenav-main {
    position: fixed !important;
    inset: 0 auto 0 0 !important;
    left: 0 !important;
    right: auto !important;
    top: 0 !important;
    bottom: 0 !important;
    width: var(--admin-mobile-drawer-v5) !important;
    min-width: 0 !important;
    max-width: 390px !important;
    height: 100vh !important;
    height: 100dvh !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    border-radius: 0 18px 18px 0 !important;
    transform: translate3d(calc(-100% - 12px), 0, 0) !important;
    -webkit-transform: translate3d(calc(-100% - 12px), 0, 0) !important;
    will-change: transform;
  }

  body.admin-shell.g-sidenav-pinned #sidenav-main,
  body.admin-shell.g-sidenav-show #sidenav-main,
  body.admin-shell.absenki-admin-drawer-open #sidenav-main {
    transform: translate3d(0, 0, 0) !important;
    -webkit-transform: translate3d(0, 0, 0) !important;
  }

  /* Open state wins even when Argon temporarily leaves a hidden class behind. */
  body.admin-shell.absenki-admin-drawer-open.g-sidenav-hidden #sidenav-main,
  body.admin-shell.absenki-admin-drawer-open.g-sidenav-hide #sidenav-main {
    transform: translate3d(0, 0, 0) !important;
    -webkit-transform: translate3d(0, 0, 0) !important;
  }

  body.admin-shell #sidenav-main,
  body.admin-shell #sidenav-main * {
    box-sizing: border-box;
  }

  /* Normalize both the original element and wrappers made by jquery.scrollbar. */
  body.admin-shell #sidenav-main > .scrollbar-inner,
  body.admin-shell #sidenav-main > .scroll-wrapper,
  body.admin-shell #sidenav-main .absenki-drawer-scroll,
  body.admin-shell #sidenav-main .scroll-wrapper,
  body.admin-shell #sidenav-main .scroll-wrapper > .scroll-content,
  body.admin-shell #sidenav-main .scroll-content {
    left: 0 !important;
    right: auto !important;
    top: 0 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    transform: none !important;
    -webkit-transform: none !important;
    box-sizing: border-box !important;
  }

  body.admin-shell #sidenav-main > .scrollbar-inner,
  body.admin-shell #sidenav-main .absenki-drawer-scroll,
  body.admin-shell #sidenav-main .scroll-wrapper > .scroll-content {
    display: block !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    padding: 0 0 max(10px, env(safe-area-inset-bottom)) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable;
  }

  body.admin-shell #sidenav-main .scroll-wrapper {
    position: static !important;
    height: 100% !important;
    max-height: 100% !important;
    padding: 0 !important;
    overflow: visible !important;
  }

  body.admin-shell #sidenav-main .scroll-element,
  body.admin-shell #sidenav-main .scrollbar-track {
    display: none !important;
  }

  body.admin-shell #sidenav-main .sidenav-header,
  body.admin-shell #sidenav-main .sidenav-brand-wrap,
  body.admin-shell #sidenav-main .navbar-inner,
  body.admin-shell #sidenav-main .navbar-collapse,
  body.admin-shell #sidenav-main .navbar-nav,
  body.admin-shell #sidenav-main .navbar-nav > .nav-item,
  body.admin-shell #sidenav-main .menu-section-label,
  body.admin-shell #sidenav-main .sidebar-footer-card,
  body.admin-shell #sidenav-main .sidebar-footer-actions {
    position: relative !important;
    left: 0 !important;
    right: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    transform: none !important;
    -webkit-transform: none !important;
  }

  body.admin-shell #sidenav-main .sidenav-header {
    padding-left: max(12px, env(safe-area-inset-left)) !important;
    padding-right: 12px !important;
  }

  body.admin-shell #sidenav-main .navbar-inner {
    padding: 7px 12px 16px !important;
    overflow: visible !important;
  }

  body.admin-shell #sidenav-main .navbar-collapse {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
  }

  body.admin-shell #sidenav-main .navbar-nav {
    margin: 0 !important;
    padding: 0 !important;
  }

  body.admin-shell #sidenav-main .menu-section-label {
    margin: 0 !important;
    padding: 14px 12px 5px !important;
    overflow: visible !important;
    text-indent: 0 !important;
  }

  body.admin-shell #sidenav-main .navbar-nav .nav-link {
    left: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 2px 0 !important;
    padding: 10px 12px !important;
    transform: none !important;
    -webkit-transform: none !important;
    overflow: visible !important;
  }

  body.admin-shell #sidenav-main .navbar-nav .nav-link i {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 24px !important;
    width: 24px !important;
    min-width: 24px !important;
    margin: 0 !important;
  }

  body.admin-shell #sidenav-main .navbar-nav .nav-link-text {
    display: block !important;
    flex: 1 1 auto;
    min-width: 0 !important;
    margin: 0 !important;
    white-space: normal !important;
    overflow: visible !important;
    opacity: 1 !important;
    transform: none !important;
  }

  body.admin-shell #sidenav-main .nav-sm .nav-link {
    padding-left: 46px !important;
  }

  body.admin-shell #sidenav-main .sidebar-footer-card {
    margin: 12px 0 8px !important;
    padding: 14px !important;
    overflow: hidden !important;
  }

  body.admin-shell #sidenav-main .sidebar-footer-card strong,
  body.admin-shell #sidenav-main .sidebar-footer-card p {
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    text-indent: 0 !important;
  }

  /* The label itself is pinned to the geometric center of each button. */
  body.admin-shell #sidenav-main .sidebar-main-site-btn,
  body.admin-shell #sidenav-main .sidebar-logout-btn {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-height: 50px !important;
    margin: 0 !important;
    padding: 0 52px !important;
    line-height: 1 !important;
    text-align: center !important;
  }

  body.admin-shell #sidenav-main .sidebar-main-site-btn i,
  body.admin-shell #sidenav-main .sidebar-logout-btn i {
    position: absolute !important;
    left: 18px !important;
    top: 50% !important;
    width: 24px !important;
    margin: 0 !important;
    text-align: center !important;
    transform: translateY(-50%) !important;
  }

  body.admin-shell #sidenav-main .sidebar-main-site-btn span,
  body.admin-shell #sidenav-main .sidebar-logout-btn span {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: auto !important;
    max-width: calc(100% - 104px) !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    white-space: nowrap !important;
    transform: translate(-50%, -50%) !important;
  }
}

@media (max-width: 479.98px) {
  :root { --admin-mobile-drawer-v5: calc(100vw - 8px); }
  body.admin-shell #sidenav-main { max-width: none !important; }
}

/* ========================================================================
   ABSENKI V6 — drawer HP dengan inset aman dan kontrol mandiri
   ======================================================================== */
@media (max-width: 767.98px) {
  :root {
    --absenki-drawer-gap: max(10px, env(safe-area-inset-left));
    --absenki-drawer-right-gap: 10px;
  }

  body.admin-shell #sidenav-main {
    left: var(--absenki-drawer-gap) !important;
    right: var(--absenki-drawer-right-gap) !important;
    width: auto !important;
    max-width: none !important;
    border-radius: 18px !important;
    box-shadow: 0 18px 55px rgba(15, 23, 42, .28) !important;
    transform: translate3d(calc(-100vw - 24px), 0, 0) !important;
    -webkit-transform: translate3d(calc(-100vw - 24px), 0, 0) !important;
  }

  body.admin-shell.absenki-admin-drawer-open #sidenav-main,
  body.admin-shell.g-sidenav-pinned #sidenav-main,
  body.admin-shell.g-sidenav-show #sidenav-main {
    transform: translate3d(0, 0, 0) !important;
    -webkit-transform: translate3d(0, 0, 0) !important;
  }

  /* Hilangkan semua offset bawaan tema pada isi drawer. */
  body.admin-shell #sidenav-main .sidenav-brand-wrap,
  body.admin-shell #sidenav-main .sidenav-brand-wrap > *,
  body.admin-shell #sidenav-main .navbar-brand,
  body.admin-shell #sidenav-main .sidenav-brand-text,
  body.admin-shell #sidenav-main .menu-section-label,
  body.admin-shell #sidenav-main .menu-section-label > span,
  body.admin-shell #sidenav-main .sidebar-footer-card,
  body.admin-shell #sidenav-main .sidebar-footer-card > *,
  body.admin-shell #sidenav-main .sidebar-footer-actions {
    margin-left: 0 !important;
    margin-right: 0 !important;
    text-indent: 0 !important;
    translate: none !important;
  }

  body.admin-shell #sidenav-main .sidenav-header {
    padding-left: 14px !important;
    padding-right: 10px !important;
  }

  body.admin-shell #sidenav-main .navbar-inner {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }

  body.admin-shell #sidenav-main .menu-section-label {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  body.admin-shell #sidenav-main .sidebar-footer-card {
    width: calc(100% - 8px) !important;
    margin: 12px 4px 10px !important;
  }

  /* Tiga kolom simetris membuat label tepat di pusat tombol. */
  body.admin-shell #sidenav-main .sidebar-main-site-btn,
  body.admin-shell #sidenav-main .sidebar-logout-btn {
    display: grid !important;
    grid-template-columns: 40px minmax(0, 1fr) 40px !important;
    align-items: center !important;
    justify-items: center !important;
    width: 100% !important;
    min-height: 52px !important;
    padding: 0 !important;
    gap: 0 !important;
    text-align: center !important;
  }

  body.admin-shell #sidenav-main .sidebar-main-site-btn i,
  body.admin-shell #sidenav-main .sidebar-logout-btn i {
    position: static !important;
    grid-column: 1 !important;
    width: 40px !important;
    transform: none !important;
    margin: 0 !important;
  }

  body.admin-shell #sidenav-main .sidebar-main-site-btn span,
  body.admin-shell #sidenav-main .sidebar-logout-btn span {
    position: static !important;
    grid-column: 2 !important;
    width: 100% !important;
    max-width: none !important;
    transform: none !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2 !important;
    text-align: center !important;
  }

  .absenki-drawer-backdrop {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1039 !important;
    background: rgba(15, 23, 42, .48) !important;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
  }

  body.admin-shell.absenki-admin-drawer-open {
    overflow: hidden !important;
    touch-action: none;
  }

  body.admin-shell.absenki-admin-drawer-open #sidenav-main {
    touch-action: pan-y;
  }
}

/* ========================================================================
   ABSENKI V7 — touch/click reliability on phones
   Final override: drawer is the only interactive layer above its backdrop.
   ======================================================================== */
@media (max-width: 767.98px) {
  .admin-menu-toggle {
    appearance: none !important;
    -webkit-appearance: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 46px !important;
    min-height: 46px !important;
    margin: 0 !important;
    padding: 8px 10px !important;
    border: 0 !important;
    border-radius: 12px !important;
    background: transparent !important;
    color: inherit !important;
    box-shadow: none !important;
    cursor: pointer !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: transparent;
  }

  body.admin-shell #sidenav-main {
    z-index: 1100 !important;
    isolation: isolate !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: transform .22s ease, opacity .16s ease, visibility 0s linear .22s !important;
  }

  body.admin-shell.absenki-admin-drawer-open #sidenav-main,
  body.admin-shell.g-sidenav-show #sidenav-main,
  body.admin-shell.g-sidenav-pinned #sidenav-main {
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    transition: transform .22s ease, opacity .16s ease, visibility 0s !important;
  }

  body.admin-shell #sidenav-main > *,
  body.admin-shell #sidenav-main .absenki-drawer-scroll,
  body.admin-shell #sidenav-main .navbar-inner,
  body.admin-shell #sidenav-main .navbar-collapse,
  body.admin-shell #sidenav-main .navbar-nav,
  body.admin-shell #sidenav-main .nav-item,
  body.admin-shell #sidenav-main .collapse.show {
    pointer-events: auto !important;
  }

  body.admin-shell #sidenav-main a,
  body.admin-shell #sidenav-main button,
  body.admin-shell #sidenav-main [role="button"],
  body.admin-shell #sidenav-main input,
  body.admin-shell #sidenav-main select,
  body.admin-shell #sidenav-main textarea {
    position: relative !important;
    z-index: 2 !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: rgba(91, 67, 234, .12);
  }

  body.admin-shell #sidenav-main .navbar-nav .nav-link {
    min-height: 48px !important;
    cursor: pointer !important;
    user-select: none;
    -webkit-user-select: none;
  }

  body.admin-shell #sidenav-main .nav-sm .nav-link {
    min-height: 44px !important;
  }

  body.admin-shell #sidenav-main .absenki-drawer-scroll {
    touch-action: pan-y pinch-zoom !important;
    overscroll-behavior: contain !important;
  }

  body.admin-shell.g-sidenav-pinned,
  body.admin-shell.g-sidenav-show,
  body.admin-shell.absenki-admin-drawer-open {
    overflow: hidden !important;
    touch-action: auto !important;
  }

  body.admin-shell > .absenki-drawer-backdrop,
  body.admin-shell > .backdrop {
    appearance: none !important;
    -webkit-appearance: none !important;
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    z-index: 1090 !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
  }

  body.admin-shell:not(.absenki-admin-drawer-open) > .absenki-drawer-backdrop {
    display: none !important;
    pointer-events: none !important;
  }

  /* Normal page controls must remain tappable whenever no drawer/modal layer
     is above them. This also fixes old Android WebView delayed tap handling. */
  body.admin-shell .main-content a[href],
  body.admin-shell .main-content button:not(:disabled),
  body.admin-shell .main-content [role="button"],
  body.admin-shell .main-content input:not(:disabled),
  body.admin-shell .main-content select:not(:disabled),
  body.admin-shell .main-content textarea:not(:disabled) {
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: rgba(91, 67, 234, .12);
  }

  /* R16 — sasaran sentuh minimum dan tabel operasional nyaman di HP. */
  body.admin-shell .main-content .btn:not(.btn-block),
  body.admin-shell .main-content button,
  body.admin-shell .main-content [role="button"] {
    min-height: 44px;
  }

  body.admin-shell .main-content .table-responsive,
  body.admin-shell .main-content [class*="table-wrap"] {
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }

  body.admin-shell .main-content input:not([type="checkbox"]):not([type="radio"]),
  body.admin-shell .main-content select,
  body.admin-shell .main-content textarea {
    font-size: 16px;
  }
}
