/* ============================================================
   E-PRESENSI (ADMIN PRO) - MOBILE & RESPONSIVE STYLESHEET (HP & TABLET)
   SD Muhammadiyah Serut
   - Dioptimalkan khusus untuk layar HP, Tablet, & Touch Interface
   - Drawer Sidebar Off-Canvas & Mobile Hamburger Toggle
   - Modal Dialog & Formulir Responsif di Layar Kecil
   - Penyesuaian Tabel Data, Rekap & Pengaturan di HP
   ============================================================ */

        @media (max-width: 768px) {
            .settings-container {
                flex-direction: column;
            }

            .settings-sidebar {
                width: 100%;
                overflow-x: auto;
                flex-direction: row;
                padding-bottom: 10px;
            }

            .settings-nav-v {
                display: flex;
                flex-direction: row;
                background: transparent;
                border: none;
                box-shadow: none;
                padding: 0;
            }
        }

        /* --- TABLET & SMALL DESKTOP (<= 1024px) --- */
        @media (max-width: 1024px) {
            :root {
                --sidebar-width: 260px;
            }

            .sidebar {
                position: fixed;
                top: 0;
                bottom: 0;
                left: calc(var(--sidebar-width) * -1);
                height: 100dvh;
                max-height: 100dvh;
                display: flex;
                flex-direction: column;
                overflow: hidden;
                transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
                z-index: 1000;
                box-shadow: none;
            }

            .sidebar-header {
                flex-shrink: 0;
            }

            .sidebar-menu {
                flex: 1 1 auto;
                min-height: 0 !important;
                height: 100%;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch !important;
                overscroll-behavior: contain;
                touch-action: pan-y;
                padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px)) !important;
            }

            body.sidebar-open .sidebar {
                transform: translateX(var(--sidebar-width));
                box-shadow: 10px 0 30px rgba(0, 0, 0, 0.3);
            }

            body.sidebar-open #sidebarOverlay {
                display: block;
                opacity: 1;
            }

            .main-wrapper {
                margin-left: 0 !important;
                width: 100% !important;
            }

            header {
                padding: 0 16px;
            }

            .mobile-toggle {
                display: flex;
            }

            #statistik_kedisiplinan > div {
                grid-template-columns: 1fr !important;
            }

            .sidebar-rekap {
                position: static !important;
            }
        }

        /* --- MOBILE GENERAL (<= 768px) --- */
        @media (max-width: 768px) {
            /* 1. VIEWPORT & FONT NORMALIZATION */
            body {
                height: 100dvh;
                font-size: 14px;
                line-height: 1.45;
                -webkit-text-size-adjust: 100%;
            }

            .main-wrapper {
                height: 100dvh;
                width: 100vw !important;
                max-width: 100vw !important;
                overflow-x: hidden !important;
                padding: 0 !important;
            }

            .content-area {
                height: calc(100dvh - 56px);
                padding: 12px !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch;
            }

            .text-sm,
            .text-xs {
                font-size: 12px !important;
            }

            /* Mencegah auto-zoom agresif pada browser HP saat fokus ke input */
            input,
            select,
            textarea,
            .input-group-control,
            .form-control,
            .pin-field {
                font-size: 16px !important;
                min-height: 42px;
            }

            .input-group label {
                font-size: 12px;
                margin-bottom: 4px;
            }

            /* 2. HEADER MOBILE */
            header {
                padding: 0 12px !important;
                height: 56px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
            }

            .header-actions {
                gap: 6px !important;
                align-items: center !important;
            }

            /* Sembunyikan teks label Auto-ACC agar tidak berdesakan, toggle tetap utuh & berfungsi */
            .auto-acc-label {
                display: none !important;
            }

            .auto-acc-wrapper {
                padding: 6px 8px !important;
                min-height: 36px;
                display: flex;
                align-items: center;
            }

            /* Sembunyikan teks tanggal panjang, sisakan jam digital */
            .date-text {
                display: none !important;
            }

            .datetime-container {
                padding: 4px 8px !important;
                gap: 4px !important;
                box-shadow: none !important;
            }

            .live-time {
                font-size: 12px !important;
                min-width: 48px !important;
            }

            /* Dropdown Notifikasi adaptif viewport HP (tidak pernah meluber keluar layar) */
            .notif-dropdown {
                position: fixed !important;
                top: 60px !important;
                left: 12px !important;
                right: 12px !important;
                width: auto !important;
                max-width: calc(100vw - 24px) !important;
                max-height: 75dvh !important;
                border-radius: 12px !important;
                box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25) !important;
                z-index: 1001 !important;
            }

            .notif-item {
                padding: 10px 12px;
                font-size: 13px;
            }

            /* 3. TOUCH TARGET & BUTTONS */
            .btn {
                min-height: 40px;
                padding: 8px 14px;
                font-size: 13px;
                display: inline-flex;
                align-items: center;
                justify-content: center;
            }

            .btn-sm {
                min-height: 36px;
                padding: 6px 12px;
                font-size: 12px;
            }

            .btn-icon {
                min-width: 38px;
                width: 38px;
                min-height: 38px;
                padding: 6px;
                justify-content: center;
            }

            .nav-btn,
            .period-nav-btn {
                min-width: 40px;
                min-height: 40px;
            }

            /* 4. STAT CARDS: HORIZONTAL SWIPE CONTAINER */
            .stat-grid {
                display: flex !important;
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch;
                gap: 10px !important;
                padding: 4px 2px 12px 2px !important;
                scroll-snap-type: x proximity;
                scrollbar-width: thin;
            }

            .stat-grid::-webkit-scrollbar {
                height: 4px;
            }

            .stat-grid::-webkit-scrollbar-thumb {
                background: #86efac;
                border-radius: 4px;
            }

            .stat-card {
                flex: 0 0 135px !important;
                min-width: 135px !important;
                max-width: 155px !important;
                padding: 12px 10px !important;
                scroll-snap-align: start;
                text-align: center;
            }

            .stat-icon {
                width: 36px !important;
                height: 36px !important;
                border-radius: 10px !important;
            }

            .stat-icon i {
                font-size: 18px !important;
            }

            .stat-info h3 {
                font-size: 18px !important;
            }

            .stat-info p {
                font-size: 10px !important;
            }

            /* 5. TABEL MOBILE & RESET STICKY 3 KOLOM */
            .table-wrapper,
            .table-responsive {
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch;
                width: 100% !important;
                border-radius: 10px;
                margin-bottom: 12px;
            }

            table {
                min-width: 600px;
                font-size: 13px !important;
                width: 100%;
            }

            th,
            td {
                padding: 8px 10px !important;
                font-size: 13px !important;
            }

            th {
                height: 38px !important;
                font-size: 11px !important;
            }

            /* Nonaktifkan freeze 3 kolom di layar HP agar tidak mengunci 85% layar */
            .rekap-full-table th:nth-child(-n+3),
            .rekap-full-table td:nth-child(-n+3) {
                position: static !important;
                left: auto !important;
                box-shadow: none !important;
                border-right: 1px solid var(--border) !important;
            }

            .rekap-full-table th:nth-child(2),
            .rekap-full-table td:nth-child(2) {
                min-width: 140px !important;
            }

            /* 6. FILTER & SEARCH FULL-WIDTH */
            .dash-filter {
                display: flex !important;
                flex-direction: column !important;
                align-items: stretch !important;
                gap: 10px !important;
                width: 100% !important;
                margin-bottom: 14px !important;
            }

            .dash-filter > div {
                width: 100% !important;
                justify-content: flex-start !important;
            }

            .dash-tab {
                padding: 8px 12px;
                font-size: 12px;
                white-space: nowrap;
            }

            .search-container,
            .search-wrapper {
                width: 100% !important;
                max-width: 100% !important;
                margin: 0 !important;
            }

            .search-input,
            .search-input-mini {
                width: 100% !important;
                font-size: 14px !important;
                min-height: 40px;
            }

            .card-header-actions {
                width: 100% !important;
                flex-wrap: wrap !important;
                gap: 8px !important;
            }

            .period-picker-container {
                min-width: 100% !important;
                width: 100% !important;
            }

            /* 7. CARDS & WIDGETS */
            .card {
                padding: 14px !important;
                border-radius: 12px !important;
                margin-bottom: 14px !important;
            }

            .card-header {
                padding-bottom: 10px !important;
                margin-bottom: 12px !important;
                flex-wrap: wrap !important;
                gap: 8px !important;
            }

            .card-title {
                font-size: 13px !important;
            }

            .rekap-summary-grid {
                grid-template-columns: 1fr !important;
                gap: 8px !important;
            }

            .kiosk-list {
                grid-template-columns: 1fr !important;
            }

            .dynamic-row {
                grid-template-columns: 1fr !important;
                gap: 8px !important;
            }

            /* 8. MODAL MOBILE */
            .modal-overlay {
                padding: 10px;
                align-items: center;
            }

            .modal-content {
                width: 100% !important;
                max-width: calc(100vw - 20px) !important;
                max-height: calc(100dvh - 24px) !important;
                border-radius: 14px;
            }

            .modal-header {
                padding: 14px 16px;
            }

            .modal-header h3 {
                font-size: 14px;
            }

            .modal-body {
                max-height: calc(100dvh - 120px);
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
            }
        }

        /* --- SMALL MOBILE (<= 480px) --- */
        @media (max-width: 480px) {
            header {
                padding: 0 8px !important;
            }

            .brand-text h1 {
                font-size: 11px;
            }

            .brand-text p {
                font-size: 9px;
            }

            .btn {
                padding: 8px 10px;
                font-size: 12px;
            }

            .btn-sm {
                padding: 6px 10px;
                font-size: 11px;
            }

            .stat-card {
                flex: 0 0 120px !important;
                min-width: 120px !important;
                padding: 10px 8px !important;
            }

            .stat-value,
            .stat-info h3 {
                font-size: 16px !important;
            }

            .content-area {
                padding: 10px !important;
            }
        }

        .stat-mini-box {
            background: var(--bg-app);
            padding: 15px;
            border-radius: 12px;
            display: flex;
            flex-direction: column;
            gap: 4px;
            transition: transform 0.2s;
            border: 1px solid var(--border);
        }

        .stat-mini-box:hover {
            transform: translateX(5px);
            background: white;
            box-shadow: var(--shadow-sm);
        }

        .stat-mini-box .label {
            font-size: 10px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            color: var(--text-secondary);
            font-weight: 700;
        }

        .stat-mini-box .value {
            font-size: 20px;
            font-weight: 800;
            color: var(--text-primary);
        }

        /* Spin Animation untuk Loading Indicators */
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        /* =========================================
           MOBILE ENHANCEMENT PACK v2
           Preview Slip Gaji + Modal + General Layout
           SAFE OVERRIDE — NO JS/BUSINESS LOGIC CHANGE
           ========================================= */

        @media (max-width: 768px) {

            /* ── PREVIEW SLIP GAJI ── */
            /* Modal preview slip: gunakan hampir seluruh layar, bisa discroll */
            #previewSlipModal .modal-content {
                max-width: calc(100vw - 16px) !important;
                max-height: calc(100dvh - 20px) !important;
                margin: 0 auto;
                border-radius: 16px;
                display: flex;
                flex-direction: column;
            }

            #previewSlipModal .modal-body {
                padding: 14px !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch;
                flex: 1;
            }

            /* Konten slip itu sendiri: tabel adaptif & teks terbaca */
            #previewSlipContent {
                font-size: 13px !important;
                line-height: 1.55 !important;
                word-break: break-word;
            }

            #previewSlipContent table {
                width: 100% !important;
                min-width: unset !important;      /* batalkan min-width 600px agar tidak memaksa scroll di sini */
                font-size: 13px !important;
                border-collapse: collapse;
                table-layout: fixed;
            }

            #previewSlipContent table td {
                padding: 5px 4px !important;
                font-size: 13px !important;
                vertical-align: middle;
                word-break: break-word;
                white-space: normal !important;
            }

            /* Kolom kiri (nama item): ambil sisa ruang */
            #previewSlipContent table td:first-child {
                width: auto;
                text-align: left;
            }

            /* Kolom kanan (nominal): lebar cukup, rata kanan */
            #previewSlipContent table td:last-child {
                width: 110px;
                text-align: right !important;
                white-space: nowrap !important;
                font-size: 13px !important;
            }

            /* Total bersih: lebih menonjol */
            #previewSlipContent table tr:last-child td {
                font-size: 15px !important;
                padding: 10px 4px !important;
            }

            /* Judul info pegawai di atas slip */
            #previewSlipContent h3 {
                font-size: 15px !important;
            }

            /* Tombol aksi bawah slip (Terbitkan, Hapus, Tutup) */
            #previewSlipContent > div:last-child,
            #previewSlipModal .modal-body > div:last-child {
                display: flex !important;
                flex-direction: column !important;
                gap: 8px !important;
            }

            #previewSlipContent > div:last-child .btn,
            #previewSlipModal .modal-body > div:last-child .btn {
                width: 100% !important;
                min-height: 44px !important;
                font-size: 13px !important;
                justify-content: center !important;
            }

            /* ── MODAL HONOR INSIDENTAL: grid 2 kolom → 1 kolom ── */
            #honorModal .modal-content {
                max-width: calc(100vw - 16px) !important;
                max-height: calc(100dvh - 20px) !important;
            }

            #honorModal .modal-body {
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch;
                max-height: calc(100dvh - 140px) !important;
            }

            /* Pecah grid 2-kolom tanggal+nominal menjadi 1 kolom di HP */
            #honorModal div[style*="grid-template-columns: 1fr 1fr"] {
                grid-template-columns: 1fr !important;
            }

            /* ── SEMUA MODAL: footer tombol stack vertikal di HP kecil ── */
            .modal-footer,
            div[style*="justify-content: flex-end"][style*="gap: 10px"] {
                flex-wrap: wrap !important;
                gap: 8px !important;
            }

            /* ── MONITORING MODAL / MODAL BESAR: scroll mulus ── */
            #monitoringModal .modal-content,
            #rekapDetailModal .modal-content,
            #izinDetailModal .modal-content,
            #laporanDetailModal .modal-content,
            #editPresensiModal .modal-content,
            #addManualModal .modal-content,
            #agendaFormModal .modal-content,
            #editSlipModal .modal-content,
            #trashModal .modal-content {
                max-width: calc(100vw - 16px) !important;
                max-height: calc(100dvh - 20px) !important;
            }

            /* ── TABEL DI DALAM MODAL: tidak ada min-width paksa ── */
            .modal-body table {
                min-width: unset !important;
                font-size: 12px !important;
            }

            .modal-body th,
            .modal-body td {
                padding: 6px 8px !important;
                font-size: 12px !important;
                white-space: normal !important;
                word-break: break-word;
            }

            /* ── SETTINGS PAGE: sidebar menu jadi horizontal scroll ── */
            .settings-container {
                flex-direction: column !important;
                gap: 12px !important;
            }

            .settings-sidebar {
                width: 100% !important;
                overflow-x: auto !important;
                flex-direction: row !important;
                padding-bottom: 4px !important;
                flex-shrink: 0;
            }

            .settings-nav-v {
                display: flex !important;
                flex-direction: row !important;
                background: transparent !important;
                border: none !important;
                box-shadow: none !important;
                padding: 0 !important;
                gap: 6px;
                white-space: nowrap;
            }

            .settings-btn-v {
                flex-shrink: 0;
                padding: 8px 14px !important;
                font-size: 12px !important;
                min-height: 38px;
            }

            .settings-btn-v i {
                font-size: 16px !important;
            }

            /* ── DATABASE PEGAWAI: ACTION tombol baris tabel ── */
            .allowance-cell {
                display: flex;
                justify-content: flex-end;
                align-items: center;
                gap: 8px;
                flex-wrap: wrap;
            }

            /* ── TOAST NOTIFIKASI: jangan overflow layar HP ── */
            .toast {
                bottom: 16px !important;
                right: 12px !important;
                left: 12px !important;
                max-width: calc(100vw - 24px) !important;
                font-size: 13px !important;
                padding: 10px 16px !important;
                border-radius: 10px !important;
            }

            /* ── REKAP FULL: wrap header tombol ── */
            .rekap-table-wide .card-header {
                flex-direction: column !important;
                align-items: flex-start !important;
            }

            /* ── INLINE GRID 2-KOLOM YANG BANYAK DIPAKAI: override ke 1 kolom ── */
            div[style*="grid-template-columns: 1fr 1fr"]:not(.stat-grid):not(.rekap-summary-grid) {
                grid-template-columns: 1fr !important;
            }

            div[style*="grid-template-columns: 2fr 1fr 2fr auto"] {
                grid-template-columns: 1fr !important;
            }

            /* ── SIARAN DADAKAN (Kepala Sekolah) ── */
            div[style*="flex: 1; height: 70px"] {
                width: 100% !important;
            }

            /* Susun textarea + tombol vertikal */
            div[style*="flex: 1"][style*="align-items: flex-start"],
            .card > div[style*="display: flex"][style*="gap: 12px"] {
                flex-direction: column !important;
            }

            div[style*="width: 140px"] {
                width: 100% !important;
            }
        }

        /* ── SMALL MOBILE TAMBAHAN (<= 480px) ── */
        @media (max-width: 480px) {
            #previewSlipContent table td:last-child {
                width: 95px;
                font-size: 12px !important;
            }

            #previewSlipContent table tr:last-child td {
                font-size: 13px !important;
            }

            .modal-header h3 {
                font-size: 13px !important;
            }

            .settings-btn-v span {
                display: none; /* hanya icon terlihat di layar sangat sempit */
            }

            .settings-btn-v {
                padding: 8px !important;
                min-width: 40px;
                justify-content: center;
            }
        }
