        :root {
            --primary-color: #ffffff; --secondary-color: #4fc3f7; --secondary-rgb: 79, 195, 247; --accent-color: #29b6f6; --accent-rgb: 41, 182, 246; --text-color: #333333; --light-text: #666666; --icon-color: #333333; --border-color: #e0e0e0; --shadow: 0 2px 10px rgba(0, 0, 0, 0.1); --transition: all 0.3s ease; --danger-color: #f44336; --danger-rgb: 244, 67, 54; --success-color: #4caf50; --success-rgb: 76, 175, 80;
            --app-font: 'Inter', sans-serif;
        }
        .dark-mode {
            --primary-color: #1e1e1e; --secondary-color: #0277bd; --secondary-rgb: 2, 119, 189; --accent-color: #0288d1; --accent-rgb: 2, 136, 209; --text-color: #f5f5f5; --light-text: #b0b0b0; --icon-color: #f5f5f5; --border-color: #333333; --shadow: 0 2px 10px rgba(0, 0, 0, 0.3); --danger-color: #d32f2f; --danger-rgb: 211, 47, 47; --success-color: #388e3c; --success-rgb: 56, 142, 60;
        }
        /* Varian mode gelap: "Temaram" (default) memakai .dark-mode di atas — abu netral gelap.
           Varian "Lampu Mati": hitam pekat, kontras tinggi, cocok untuk layar OLED / ruangan gelap total. */
        .dark-mode.dark-off {
            --primary-color: #000000; --secondary-color: #0277bd; --secondary-rgb: 2, 119, 189; --accent-color: #0288d1; --accent-rgb: 2, 136, 209; --text-color: #ececec; --light-text: #949494; --icon-color: #ececec; --border-color: #1c1c1c; --shadow: 0 2px 10px rgba(0, 0, 0, 0.5); --danger-color: #d32f2f; --danger-rgb: 211, 47, 47; --success-color: #388e3c; --success-rgb: 56, 142, 60;
        }
        * { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
        body {
            font-family: var(--app-font);
            background-color: var(--primary-color);
            color: var(--text-color);
            line-height: 1.6;
            transition: var(--transition);
            overflow-x: hidden;
            height: 100vh;
            overflow-y: auto;
            -webkit-touch-callout: none;
            -webkit-user-select: none;
            -khtml-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
            touch-action: pan-y;
            overscroll-behavior: none;
        }
        input, textarea, [contenteditable] {
            -webkit-user-select: auto;
            -khtml-user-select: auto;
            -moz-user-select: auto;
            -ms-user-select: auto;
            user-select: auto;
        }
        h1, h2, h3, h4 { font-family: 'Montserrat', sans-serif; font-weight: 600; }
        .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 15px; }
        .header { background-color: var(--primary-color); padding: 15px 0; box-shadow: var(--shadow); position: sticky; top: 0; z-index: 100; }
        .header-content { display: flex; justify-content: space-between; align-items: center; }
        .logo { font-family: 'Montserrat', sans-serif; font-size: 1.5rem; font-weight: 700; color: var(--accent-color); }
        .header-actions { display: flex; gap: 15px; }
        .icon-btn { background: none; border: none; font-size: 1.2rem; color: var(--icon-color); cursor: pointer; padding: 8px; border-radius: 50%; transition: var(--transition); }
        .icon-btn:hover { background-color: rgba(0, 0, 0, 0.05); }
        .dark-mode .icon-btn:hover { background-color: rgba(255, 255, 255, 0.1); }

        /* ── Profile Avatar Button ── */
        .profile-avatar-btn { background: none; border: none; cursor: pointer; padding: 3px; border-radius: 50%; transition: var(--transition); display: flex; align-items: center; justify-content: center; }
        .profile-avatar-btn:hover { opacity: 0.85; transform: scale(1.06); }
        .profile-avatar-ring { width: 36px; height: 36px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-color), #4fc3f7); display: flex; align-items: center; justify-content: center; overflow: hidden; box-shadow: 0 0 0 2px rgba(var(--accent-rgb),0.25); }
        .profile-avatar-ring img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
        .profile-avatar-ring i { color: #fff; font-size: 1rem; }
        /* ── Profile Menu Popup ── */
        .profile-popover {
            position: fixed;
            top: 0; right: 0;
            z-index: 2000;
            background: var(--primary-color);
            border-radius: 0 0 0 18px;
            box-shadow: 0 8px 32px rgba(0,0,0,0.18), 0 2px 8px rgba(0,0,0,0.10);
            min-width: 260px; max-width: 310px;
            transform: translateY(-110%);
            opacity: 0;
            transition: transform 0.28s cubic-bezier(.4,0,.2,1), opacity 0.22s ease;
            pointer-events: none;
            border: 1px solid var(--border-color);
            border-top: none; border-right: none;
        }
        .profile-popover.open {
            transform: translateY(0);
            opacity: 1;
            pointer-events: auto;
        }
        .profile-popover-backdrop {
            position: fixed; inset: 0; z-index: 1999;
            display: none;
        }
        .profile-popover-backdrop.open { display: block; }
        .profile-menu-header { padding: 16px 18px 12px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--border-color); }
        .profile-menu-avatar { width: 44px; height: 44px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-color), #4fc3f7); display: flex; align-items: center; justify-content: center; overflow: hidden; box-shadow: 0 2px 6px rgba(var(--accent-rgb),0.25); flex-shrink: 0; }
        .profile-menu-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
        .profile-menu-avatar i { color: #fff; font-size: 1.2rem; }
        .profile-menu-info { flex: 1; min-width: 0; }
        .profile-menu-name { font-family: 'Montserrat', sans-serif; font-size: 0.92rem; font-weight: 700; color: var(--text-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .profile-menu-role { font-size: 0.68rem; font-weight: 600; color: var(--accent-color); text-transform: uppercase; letter-spacing: 0.05em; margin-top: 1px; }
        .profile-menu-list { padding: 4px 0 8px; }
        .profile-menu-item { display: flex; align-items: center; gap: 10px; padding: 10px 18px; cursor: pointer; transition: background 0.13s; border: none; background: none; width: 100%; text-align: left; color: var(--text-color); font-family: 'Inter', sans-serif; font-size: 0.85rem; font-weight: 500; }
        .profile-menu-item:hover { background: rgba(var(--accent-rgb),0.07); }
        .profile-menu-item:active { background: rgba(var(--accent-rgb),0.13); }
        .profile-menu-item i { width: 16px; text-align: center; font-size: 0.8rem; color: var(--light-text); flex-shrink: 0; }
        .profile-menu-item.pm-danger i, .profile-menu-item.pm-danger { color: #e53935; }
        .akun-info-list { margin-top: 18px; text-align: left; border-top: 1px solid var(--border-color); padding-top: 10px; }
        .akun-info-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 2px; border-bottom: 1px solid var(--border-color); }
        .akun-info-row:last-child { border-bottom: none; }
        .akun-info-label { font-family: 'Inter', sans-serif; font-size: 0.78rem; font-weight: 500; color: var(--light-text); }
        .akun-info-value { font-family: 'Inter', sans-serif; font-size: 0.85rem; font-weight: 600; color: var(--text-color); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
        .akun-info-value-wrap { display: flex; align-items: center; gap: 6px; max-width: 68%; }
        .akun-info-editable-btn {
            border: none; background: rgba(var(--accent-rgb),0.1); color: var(--accent-color);
            width: 24px; height: 24px; border-radius: 7px; flex-shrink: 0;
            display: flex; align-items: center; justify-content: center;
            font-size: 0.68rem; cursor: pointer; transition: background 0.15s;
        }
        .akun-info-editable-btn:hover { background: rgba(var(--accent-rgb),0.2); }
        .akun-info-editable-btn.locked { color: var(--light-text); background: rgba(120,120,120,0.1); cursor: not-allowed; }
        .akun-edit-box {
            display: none; margin-top: 8px; padding: 10px; border-radius: 10px;
            background: rgba(var(--accent-rgb),0.05); border: 1px solid rgba(var(--accent-rgb),0.15);
        }
        .akun-edit-box.active { display: block; }
        .akun-edit-box input {
            width: 100%; padding: 9px 10px; border-radius: 8px; border: 1px solid var(--border-color);
            background: var(--primary-color); color: var(--text-color); font-size: 0.85rem; margin-bottom: 8px;
        }
        .akun-edit-box input:focus { outline: none; border-color: var(--accent-color); }
        .akun-edit-box-actions { display: flex; gap: 8px; }
        .akun-edit-box-actions button {
            flex: 1; padding: 8px; border-radius: 8px; border: none; font-size: 0.78rem; font-weight: 600; cursor: pointer;
        }
        .akun-edit-save-btn { background: var(--accent-color); color: #fff; }
        .akun-edit-cancel-btn { background: rgba(120,120,120,0.12); color: var(--text-color); }
        .akun-edit-lock-note { font-size: 0.7rem; color: var(--light-text); margin-top: 6px; line-height: 1.4; }

        /* ── Admin Data Source Bar ── */
        /* ads-bar dipindah ke modal, tidak digunakan di header */
        #adminDataSourceBar { display: none !important; }
        /* Sync dot & label (dipakai di dalam modal Pusat Data) */
        .ads-sync-dot { width: 8px; height: 8px; border-radius: 50%; background: #9e9e9e; flex-shrink: 0; transition: background 0.3s; }
        .ads-sync-dot.synced { background: #4caf50; }
        .ads-sync-dot.partial { background: #ff9800; }
        .ads-sync-label { font-size: 0.72rem; color: var(--light-text); font-weight: 500; }

        /* ── Pusat Data Modal — Modern Redesign ── */
        .pd-modal-content {
            max-width: 700px; width: 96%; max-height: 92vh;
            border-radius: 20px; display: flex; flex-direction: column; overflow: hidden;
            box-shadow: 0 24px 64px rgba(0,0,0,0.18);
        }
        /* Header */
        .pd-modal-header {
            display: flex; align-items: center;
            padding: 16px 18px 12px; border-bottom: 1.5px solid var(--border-color);
            flex-shrink: 0; gap: 12px; background: var(--primary-color);
        }
        .pd-modal-header-left { display: flex; align-items: center; gap: 12px; flex: 1; }
        .pd-header-icon {
            width: 34px; height: 34px; border-radius: 10px;
            background: rgba(var(--accent-rgb),0.12); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center;
            font-size: 0.92rem; flex-shrink: 0;
        }
        .pd-header-title { font-size: 1rem; font-weight: 700; }
        .pd-modal-body { flex: 1; overflow-y: auto; padding: 16px 18px 24px; display: flex; flex-direction: column; gap: 14px; }

        /* ── Sumber Referensi section (inside modal) ── */
        .pd-source-section {
            border: 1.5px solid var(--border-color); border-radius: 14px; overflow: visible;
        }
        .pd-source-label {
            padding: 11px 14px;
            font-size: 0.68rem; font-weight: 700; text-transform: uppercase;
            letter-spacing: 0.08em; color: var(--light-text);
            border-bottom: 1px solid transparent;
            border-radius: 14px 14px 0 0;
        }
        /* border-bottom muncul hanya saat pd-source-body ditampilkan (via JS class) */
        .pd-source-section.src-open { margin-bottom: 0; }
        .pd-source-section.src-open .pd-source-label { border-bottom-color: var(--border-color); }
        .pd-source-body {
            padding: 12px 14px 14px;
        }
        .pd-source-toggle {
            display: flex; gap: 3px;
            background: rgba(0,0,0,0.05); border-radius: 9px; padding: 3px;
            width: 100%;
        }
        .dark-mode .pd-source-toggle { background: rgba(255,255,255,0.07); }
        .pd-source-btn {
            flex: 1; border: none; cursor: pointer; padding: 9px 10px; border-radius: 7px;
            font-size: 0.78rem; font-weight: 600; font-family: inherit;
            background: transparent; color: var(--light-text);
            transition: all 0.18s; display: flex; align-items: center; justify-content: center; gap: 6px;
            white-space: nowrap;
        }
        .pd-source-btn.active {
            background: var(--primary-color); color: var(--accent-color);
            box-shadow: 0 1px 6px rgba(0,0,0,0.12);
        }
        .dark-mode .pd-source-btn.active { box-shadow: 0 1px 6px rgba(0,0,0,0.3); }
        .pd-source-btn i { font-size: 0.72rem; }
        .pd-source-status {
            display: flex; align-items: center; gap: 6px;
            font-size: 0.72rem; color: var(--light-text);
        }

        /* ── Ringkasan singkat (strip tunggal, gaya minimal) ── */
        .pd-summary-strip {
            display: flex; align-items: center;
            border: 1.5px solid var(--border-color); border-radius: 14px;
            padding: 12px 6px;
        }
        .pd-summary-item { flex: 1; text-align: center; display: flex; flex-direction: column; gap: 3px; }
        .pd-summary-val { font-size: 1.1rem; font-weight: 700; color: var(--accent-color); line-height: 1.1; }
        .pd-summary-label { font-size: 0.62rem; color: var(--light-text); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
        .pd-summary-divider { width: 1px; align-self: stretch; background: var(--border-color); margin: 0 2px; }

        /* ── Action buttons ── */
        .pd-action-bar { display: flex; gap: 8px; }

        /* ── Progress bar ── */
        .pd-progress-wrap { display: none; }
        .pd-progress-wrap.visible { display: block; }
        .pd-progress-label { font-size: 0.72rem; color: var(--light-text); margin-bottom: 5px; font-weight: 500; }
        .pd-progress-bar { height: 5px; border-radius: 3px; background: var(--border-color); overflow: hidden; }
        .pd-progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent-color), #4fc3f7); border-radius: 3px; transition: width 0.3s ease; width: 0%; }

        /* ── Edit mode warning banner ── */
        .pd-edit-mode-banner {
            display: none; align-items: flex-start; gap: 8px;
            padding: 9px 13px; background: rgba(244,67,54,0.07);
            border: 1px solid rgba(244,67,54,0.18);
            border-radius: 10px; font-size: 0.72rem; color: #e53935;
        }
        .pd-edit-mode-banner.visible { display: flex; }
        .pd-edit-mode-banner i { flex-shrink: 0; margin-top: 1px; }

        /* ── Collection cards ── */
        .pd-collections-section {}
        .pd-col-card {
            border: 1px solid var(--border-color); border-radius: 12px;
            margin-bottom: 6px; overflow: hidden; transition: border-color 0.15s;
        }
        .pd-col-card:hover { border-color: rgba(var(--accent-rgb),0.25); }
        .pd-col-header {
            display: flex; align-items: center; gap: 10px;
            padding: 11px 14px; cursor: pointer; user-select: none;
            background: transparent; transition: background 0.13s;
        }
        .pd-col-header:hover { background: rgba(var(--accent-rgb),0.04); }
        .pd-col-icon { font-size: 0.75rem; color: var(--accent-color); width: 16px; text-align: center; flex-shrink: 0; }
        .pd-col-name { font-weight: 700; font-size: 0.82rem; flex: 1; font-family: 'Montserrat',sans-serif; }
        .pd-col-badge {
            font-size: 0.65rem; font-weight: 700; padding: 2px 9px; border-radius: 20px;
            background: rgba(var(--accent-rgb),0.1); color: var(--accent-color); white-space: nowrap;
        }
        .pd-col-badge.not-synced { background: rgba(158,158,158,0.1); color: var(--light-text); }
        .pd-col-badge.syncing { background: rgba(255,152,0,0.12); color: #e65100; }
        .pd-col-sync-time { font-size: 0.63rem; color: var(--light-text); white-space: nowrap; }
        .pd-col-chevron { font-size: 0.65rem; color: var(--light-text); transition: transform 0.22s; margin-left: 2px; }
        .pd-col-card.open .pd-col-chevron { transform: rotate(180deg); }
        .pd-col-card.open { border-color: rgba(var(--accent-rgb),0.22); }

        /* Document list */
        .pd-doc-list { display: none; border-top: 1px solid var(--border-color); max-height: 260px; overflow-y: auto; }
        .pd-col-card.open .pd-doc-list { display: block; }
        .pd-doc-row {
            display: flex; align-items: flex-start; gap: 8px;
            padding: 8px 14px; border-bottom: 1px solid var(--border-color);
            font-size: 0.75rem; transition: background 0.12s;
        }
        .pd-doc-row:last-child { border-bottom: none; }
        .pd-doc-row:hover { background: rgba(var(--accent-rgb),0.035); }
        .pd-doc-id { color: var(--light-text); font-family: monospace; font-size: 0.67rem; min-width: 0; width: 88px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .pd-doc-fields { flex: 1; display: flex; flex-wrap: wrap; gap: 3px 10px; min-width: 0; }
        .pd-doc-field { display: flex; gap: 3px; }
        .pd-doc-fkey { color: var(--light-text); font-weight: 500; }
        .pd-doc-fval { color: var(--text-color); font-weight: 600; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .pd-doc-edit-btn {
            border: none; background: none; cursor: pointer;
            color: var(--light-text); font-size: 0.7rem; padding: 3px 5px;
            border-radius: 5px; display: none; flex-shrink: 0;
        }
        .pd-edit-mode .pd-doc-edit-btn { display: flex; align-items: center; }
        .pd-doc-edit-btn:hover { color: var(--accent-color); background: rgba(var(--accent-rgb),0.1); }

        /* Empty state */
        .pd-empty { text-align: center; padding: 20px; color: var(--light-text); font-size: 0.78rem; }
        .pd-empty i { display: block; font-size: 1.4rem; opacity: 0.3; margin-bottom: 6px; }

        /* Edit document overlay (inline, inside Pusat Data modal) */
        .pd-edit-overlay {
            position: absolute; inset: 0; background: rgba(0,0,0,0.45);
            display: none; align-items: center; justify-content: center;
            z-index: 10; border-radius: 20px;
        }
        .pd-edit-overlay.active { display: flex; }
        .pd-edit-box {
            background: var(--primary-color); border-radius: 14px;
            width: 90%; max-width: 480px; padding: 20px;
            box-shadow: 0 12px 40px rgba(0,0,0,0.26);
            display: flex; flex-direction: column; gap: 12px;
            max-height: 80vh; overflow-y: auto;
        }
        .pd-edit-title { font-weight: 700; font-size: 0.9rem; color: var(--accent-color); font-family: 'Montserrat',sans-serif; }
        .pd-edit-warning {
            background: rgba(244,67,54,0.07); border: 1px solid rgba(244,67,54,0.18);
            border-radius: 9px; padding: 9px 12px; font-size: 0.72rem; color: #e53935;
            display: flex; gap: 8px; align-items: flex-start;
        }
        .pd-edit-textarea {
            width: 100%; min-height: 140px; resize: vertical;
            background: rgba(0,0,0,0.025); color: var(--text-color);
            border: 1px solid var(--border-color); border-radius: 8px;
            padding: 10px; font-family: 'Courier New',monospace; font-size: 0.78rem; line-height: 1.5;
        }
        .dark-mode .pd-edit-textarea { background: rgba(255,255,255,0.04); }
        .pd-edit-textarea:focus { outline: none; border-color: var(--accent-color); box-shadow: 0 0 0 2px rgba(var(--accent-rgb),0.15); }
        .pd-edit-actions { display: flex; gap: 8px; }
        .pd-edit-warning i { margin-top: 1px; flex-shrink: 0; }
        .profile-menu-divider { height: 1px; background: var(--border-color); margin: 3px 14px; }
        /* (Foto Profile & Catatan styles consolidated further below) */
        .popup { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; visibility: hidden; transition: var(--transition); }
        .popup.active { opacity: 1; visibility: visible; }
        .popup-content { background-color: var(--primary-color); border-radius: 10px; width: 90%; max-width: 400px; max-height: 80vh; overflow-y: auto; box-shadow: var(--shadow); transform: translateY(-20px); transition: var(--transition); }
        .popup.active .popup-content { transform: translateY(0); }
        .popup-header { padding: 15px 20px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; }
        .popup-title { font-size: 1.2rem; font-weight: 600; }
        .popup-close { background: none; border: none; font-size: 1.2rem; color: var(--icon-color); cursor: pointer; }
        .popup-body { padding: 20px; }

        /* ── Full Modal (was Bottom Sheet — now full-screen centered modal by default) ── */
        .popup.popup-bottomsheet { align-items: center; }
        .popup-bottomsheet .popup-content {
            width: 92%; max-width: 560px; max-height: 88vh;
            border-radius: 20px;
            transform: translateY(-20px);
            margin: 0 auto;
            padding-bottom: env(safe-area-inset-bottom, 0px);
            box-shadow: 0 24px 64px rgba(0,0,0,0.24);
        }
        .popup-bottomsheet.active .popup-content { transform: translateY(0); }
        .popup-bottomsheet .popup-content { transition: transform 0.3s cubic-bezier(.32,.72,0,1); }
        .sheet-handle { display: none; }

        /* ── Pengecualian: modal Ganti Foto (Akun) untuk role Admin tetap bottom sheet ── */
        .popup-bottomsheet.keep-sheet { align-items: flex-end; }
        .popup-bottomsheet.keep-sheet .popup-content {
            width: 100%; max-width: 560px; max-height: 86vh;
            border-radius: 20px 20px 0 0;
            transform: translateY(100%);
            box-shadow: 0 -8px 32px rgba(0,0,0,0.18);
        }
        .popup-bottomsheet.keep-sheet.active .popup-content { transform: translateY(0); }
        .popup-bottomsheet.keep-sheet .sheet-handle { display: block; width: 36px; height: 4px; border-radius: 3px; background: var(--border-color); margin: 10px auto 0; flex-shrink: 0; }
        .popup-bottomsheet .popup-header {
            display: flex; align-items: center; gap: 10px;
            padding: 10px 18px 12px;
        }
        .popup-bottomsheet .popup-header-icon {
            width: 34px; height: 34px; border-radius: 10px;
            background: rgba(var(--accent-rgb),0.12); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center;
            font-size: 0.92rem; flex-shrink: 0;
        }
        .popup-bottomsheet .popup-title { font-size: 1rem; font-weight: 700; flex: 1; }
        .popup-bottomsheet .popup-close {
            width: 30px; height: 30px; border-radius: 50%;
            display: flex; align-items: center; justify-content: center;
            background: rgba(120,120,120,0.1); font-size: 0.95rem; flex-shrink: 0;
        }
        .popup-bottomsheet .popup-close:hover { background: rgba(120,120,120,0.18); }
        .popup-bottomsheet .popup-body { padding: 4px 18px 22px; }

        /* ── Expandable Sheet: tombol expand & swipe-up → full modal ── */
        .sheet-expand-btn {
            width: 30px; height: 30px; border-radius: 50%;
            border: none; background: rgba(120,120,120,0.1);
            color: var(--icon-color); font-size: 0.82rem;
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; flex-shrink: 0;
            transition: background 0.15s, transform 0.2s;
            margin-right: 2px;
        }
        .sheet-expand-btn:hover { background: rgba(120,120,120,0.18); }

        /* State: expanded (full modal) */
        .popup-bottomsheet.sheet-expanded {
            align-items: center;
        }
        .popup-bottomsheet.sheet-expanded .popup-content {
            border-radius: 20px !important;
            max-height: 88vh !important;
            width: 92% !important;
            max-width: 500px !important;
            transform: translateY(0) scale(1) !important;
            box-shadow: 0 24px 64px rgba(0,0,0,0.24) !important;
            margin-bottom: 0 !important;
            padding-bottom: 0 !important;
        }
        .popup-bottomsheet.sheet-expanded .sheet-handle { opacity: 0; pointer-events: none; }
        .popup-bottomsheet.sheet-expanded .sheet-expand-btn i {
            transform: rotate(180deg);
        }
        /* Animasi transisi sheet → modal */
        .popup-bottomsheet .popup-content {
            transition: transform 0.3s cubic-bezier(.32,.72,0,1),
                        border-radius 0.28s ease,
                        max-height 0.28s ease,
                        width 0.28s ease,
                        box-shadow 0.28s ease !important;
        }
        .main-content { padding: 20px 0 80px 0; min-height: calc(100vh - 70px); overflow-y: auto; }
        .section-header { margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 15px; }
        .section-title { font-size: 1.5rem; font-weight: 600; }
        .tabs { display: flex; border-bottom: 1px solid var(--border-color); margin-bottom: 20px; overflow-x: auto; white-space: nowrap; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
        .tabs::-webkit-scrollbar { height: 6px; }
        .tabs::-webkit-scrollbar-thumb { background-color: var(--border-color); border-radius: 3px; }
        .tab { padding: 10px 15px; cursor: pointer; border-bottom: 2px solid transparent; transition: var(--transition); -webkit-user-select: none; user-select: none; }
        .tab.active { border-bottom: 2px solid var(--accent-color); color: var(--accent-color); }
        .table-container { overflow-x: auto; margin-bottom: 20px; border-radius: 8px; box-shadow: var(--shadow); max-height: 450px; overflow-y: auto; -webkit-overflow-scrolling: touch; position: relative; }
        .table-10-rows { max-height: 450px; }
        table { width: 100%; border-collapse: collapse; min-width: 600px; font-family: 'Roboto', 'Inter', sans-serif; }
        th, td { padding: 12px 15px; text-align: left; border-bottom: 1px solid var(--border-color); font-size: 0.93rem; font-variant-numeric: tabular-nums; letter-spacing: 0.01em; }
        th {
            background-color: var(--secondary-color);
            color: #fff;
            font-weight: 500;
            font-size: 0.82rem;
            text-transform: uppercase;
            letter-spacing: 0.04em;
            position: sticky;
            top: 0;
            z-index: 10;
            border-top: 1px solid var(--border-color);
        }
        td { font-weight: 400; color: var(--text-color); }
        tr:hover { background-color: rgba(0, 0, 0, 0.02); }
        .dark-mode tr:hover { background-color: rgba(255, 255, 255, 0.05); }
        .form-group { margin-bottom: 15px; }
        label { display: block; margin-bottom: 5px; font-weight: 500; }
        input, select, textarea { width: 100%; padding: 10px 15px; border: 1px solid var(--border-color); border-radius: 5px; background-color: var(--primary-color); color: var(--text-color); font-family: 'Inter', sans-serif; transition: var(--transition); }
        input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent-color); box-shadow: 0 0 0 2px rgba(var(--accent-rgb), 0.2); }
        .btn { padding: 10px 15px; border: none; border-radius: 5px; cursor: pointer; font-family: 'Inter', sans-serif; font-weight: 500; transition: var(--transition); display: inline-flex; align-items: center; gap: 5px; }
        .btn-primary { background-color: var(--accent-color); color: white; }
        .btn-primary:hover { background-color: var(--secondary-color); }
        .btn-secondary { background-color: transparent; border: 1px solid var(--accent-color); color: var(--accent-color); }
        .btn-secondary:hover { background-color: rgba(79, 195, 247, 0.1); }
        .btn-danger { background-color: var(--danger-color); color: white; }
        .btn-danger:hover { background-color: #d32f2f; transform: scale(1.05); }
        .filters { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 20px; }
        .filter-group { flex: 1; min-width: 150px; }
        .financial-summary { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; }
        .financial-card { background-color: var(--primary-color); border-radius: 8px; padding: 12px 10px; box-shadow: var(--shadow); text-align: center; transition: var(--transition); min-width: 0; overflow: hidden; }
        .financial-card:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); }
        .financial-card h3 { font-size: 0.9rem; margin-bottom: 10px; color: var(--light-text); }
        .financial-card .amount {
            font-size: clamp(0.75rem, 2.6vw, 1.5rem);
            font-weight: 600;
            color: var(--text-color);
            word-break: break-word;
            overflow-wrap: break-word;
            line-height: 1.3;
            width: 100%;
        }
        .hidden { display: none !important; }
        .text-right { text-align: right; }
        .currency { font-family: 'Inter', sans-serif; }
        @media (min-width: 768px) {
            .header { padding: 20px 0; }
            .logo { font-size: 1.8rem; }
            .main-content { padding: 30px 0 80px 0; }
            .section-title { font-size: 1.8rem; }
        }
        .content-section { opacity: 1; transition: opacity 0.3s ease; }
        .content-section.hidden { display: none; opacity: 0; }

        /* ── WhatsApp-style swipe slide animation ── */
        #contentContainer {
            position: relative;
            overflow: hidden;
        }
        #contentContainer.slide-left-enter > .content-section:not(.hidden) {
            animation: slideInFromRight 0.15s cubic-bezier(0.25,0.46,0.45,0.94) both;
        }
        #contentContainer.slide-right-enter > .content-section:not(.hidden) {
            animation: slideInFromLeft 0.15s cubic-bezier(0.25,0.46,0.45,0.94) both;
        }
        @keyframes slideInFromRight {
            from { transform: translateX(100%); opacity: 0.6; }
            to   { transform: translateX(0);    opacity: 1; }
        }
        @keyframes slideInFromLeft {
            from { transform: translateX(-100%); opacity: 0.6; }
            to   { transform: translateX(0);     opacity: 1; }
        }
        .custom-period-group { display: flex; gap: 10px; align-items: flex-end; }
        .custom-period-group .filter-group { flex: 1; }
        #inputDetail table { min-width: 1100px; }
        #inputDetail th, #inputDetail td { padding: 15px 10px; min-width: 100px; }
        #inputDetail input { width: 100%; min-width: 80px; padding: 8px; }
        .action-column { width: 60px; text-align: center; }
        #tableDetail .action-column { display: none; }
        .global-edit-mode #tableDetail .action-column { display: table-cell; }
        .input-with-btn { display: flex; gap: 10px; }
        .input-with-btn input { flex: 1; }
        .input-with-btn button { white-space: nowrap; }
        .currency-input { position: relative; }
        .currency-input input { padding-left: 40px; }
        .currency-input::before { content: "Rp"; position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--light-text); z-index: 1; }
        .actions { display: flex; gap: 10px; flex-wrap: wrap; }
        .card-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-bottom: 20px; }
        .data-card { background-color: var(--primary-color); border-radius: 10px; padding: 20px; box-shadow: var(--shadow); transition: var(--transition); }
        .data-card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); }
        .data-card h3 { font-size: 1rem; margin-bottom: 15px; color: var(--light-text); border-bottom: 1px solid var(--border-color); padding-bottom: 10px; }
        .data-item { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px dashed var(--border-color); }
        .data-item:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
        .data-label { font-weight: 500; }
        .data-value { font-weight: 600; color: var(--accent-color); }
        .search-container { display: flex; gap: 5px; margin-bottom: 15px; width: 100%; align-items: center; }
        .search-input { flex: 1; padding: 10px 15px; border: 1px solid var(--border-color); border-radius: 5px; background-color: var(--primary-color); color: var(--text-color); max-width: 200px; }
        .detail-header { display: flex; justify-content: flex-end; align-items: center; margin-bottom: 15px; flex-wrap: wrap; gap: 10px; }
        .detail-search-container { display: flex; align-items: center; gap: 10px; }
        #inputDetail th:nth-child(10), #inputDetail td:nth-child(10) { min-width: 150px; width: 150px; }
        #inputDetail th:nth-child(3), #inputDetail td:nth-child(3) { min-width: 200px; }
        #inputDetail th:nth-child(4), #inputDetail td:nth-child(4) { min-width: 200px; }
        #inputDetail th:nth-child(8), #inputDetail td:nth-child(8),
        #inputDetail th:nth-child(9), #inputDetail td:nth-child(9) { min-width: 150px; }
        .fullscreen-popup { max-width: 95% !important; max-height: 95% !important; width: 95% !important; height: 95% !important; }
        .fullscreen-popup .popup-body { height: calc(100% - 70px); display: flex; flex-direction: column; }
        .fullscreen-table-container { flex: 1; overflow: auto; }
        #loginPopup .popup-content { max-width: 350px; }
        .login-form { display: flex; flex-direction: column; gap: 15px; }
        .login-logo { text-align: center; margin-bottom: 20px; font-size: 2rem; color: var(--accent-color); font-weight: 700; }
        .spinner { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; margin-right: 10px; }
        @keyframes spin { to { transform: rotate(360deg); } }
        .btn.loading { pointer-events: none; opacity: 0.7; }
        .login-footer { text-align: center; margin-top: 20px; font-size: 0.9rem; color: var(--light-text); }
        .user-info { display: flex; align-items: center; gap: 10px; margin-right: 15px; }
        .user-role { font-size: 0.8rem; color: var(--light-text); padding: 2px 8px; background-color: var(--border-color); border-radius: 10px; }
        .control-buttons { display: flex; gap: 3px; align-items: center; }
        .control-btn { background-color: var(--accent-color); color: white; border: none; border-radius: 5px; padding: 8px 12px; cursor: pointer; transition: var(--transition); display: inline-flex; align-items: center; gap: 5px; }
        .control-btn:hover { background-color: var(--secondary-color); }
        .edit-mode .table-container input:not([readonly]) { background-color: rgba(79, 195, 247, 0.1); border-color: var(--accent-color); }
        .supplier-popup table { min-width: 800px; }
        .btn-success { background-color: var(--success-color) !important; }
        .btn-success:hover { background-color: #388e3c !important; }
        .global-edit-mode .table-container input:not([readonly]) { background-color: rgba(79, 195, 247, 0.1); border-color: var(--accent-color); }
/* Kolom nomor pada tabel ringkas (hanya isi baris) */
/* Kolom nomor pada tabel supplier */
#tableSupplier td:first-child {
    background-color: rgba(0, 0, 0, 0.03);
    font-weight: 600;
    text-align: center;
    cursor: pointer; /* tambahan agar terlihat bisa diklik */
}
.dark-mode #tableSupplier td:first-child {
    background-color: rgba(255, 255, 255, 0.1);
}
/* Style untuk state checked dan unchecking pada kolom pertama */
#tableSupplier td:first-child.checked {
    background-color: #4caf50 !important;
    color: white;
}
#tableSupplier td:first-child.unchecking {
    background-color: #f44336 !important;
    color: white;
}
.dark-mode #tableSupplier td:first-child.checked {
    background-color: #2e7d32 !important;
}
.dark-mode #tableSupplier td:first-child.unchecking {
    background-color: #c62828 !important;
}
#tableSupplier td:first-child i {
    margin-left: 5px;
}
#tableRingkas td:first-child {
    background-color: rgba(0, 0, 0, 0.03);
    font-weight: 600;
    text-align: center;
}
.dark-mode #tableRingkas td:first-child {
    background-color: rgba(255, 255, 255, 0.1);
}
        #lkTabelRincian tfoot tr {
            background: rgba(var(--accent-rgb),0.08);
            font-weight: 700;
            border-top: 2px solid var(--border-color);
        }
        #lkTabelRincian tfoot td {
            padding: 10px 15px;
            border-bottom: none;
        }
        /* Absensi Styles */
        .absensi-container { max-width: 900px; margin: 0 auto; }

        /* ── NEW PRESENSI UI ── */
        .pres-shell { max-width: 480px; margin: 0 auto; padding: 0 4px 24px; display: flex; flex-direction: column; gap: 16px; }
        .pres-card { background: var(--primary-color); border-radius: 22px; padding: 22px 18px 20px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); border: 1px solid var(--border-color); }
        .pres-card-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
        .pres-card-label { display: flex; align-items: center; gap: 8px; font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 0.97rem; color: var(--text-color); }
        .pres-hadir-badge { display: flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: 999px; background: rgba(var(--success-rgb),0.13); color: var(--success-color); font-size: 0.78rem; font-weight: 700; border: 1.5px solid rgba(var(--success-rgb),0.3); }
        .dark-mode .pres-hadir-badge { background: rgba(var(--success-rgb),0.18); color: var(--success-color); }
        .pres-desc { font-size: 0.78rem; color: var(--light-text); margin: 6px 0 14px; line-height: 1.5; opacity: 0.85; }
        .pres-main-btn { width: 100%; margin-top: 16px; padding: 15px; border-radius: 18px; background: var(--accent-color); color: #fff; font-size: 1rem; font-weight: 700; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 10px; letter-spacing: 0.01em; transition: opacity 0.15s, transform 0.1s; box-shadow: 0 6px 20px rgba(var(--accent-rgb),0.28); }
        .pres-main-btn:active { opacity: 0.85; transform: scale(0.98); }
        .pres-history-card { background: var(--primary-color); border-radius: 22px; padding: 20px 18px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); border: 1px solid var(--border-color); }
        .pres-history-title { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 0.95rem; color: var(--text-color); margin-bottom: 14px; letter-spacing: 0.01em; }
        .pres-riwayat-list { display: flex; flex-direction: column; gap: 0; }
        .pres-riwayat-item { display: flex; align-items: center; gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--border-color); }
        .pres-riwayat-item:last-child { border-bottom: none; }
        .pres-riwayat-thumb { width: 52px; height: 52px; border-radius: 12px; object-fit: cover; background: var(--secondary-color); flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: var(--light-text); font-size: 1.3rem; overflow: hidden; }
        .pres-riwayat-thumb img { width: 100%; height: 100%; object-fit: cover; border-radius: 12px; }
        .pres-riwayat-info { flex: 1; min-width: 0; }
        .pres-riwayat-date { font-weight: 700; font-size: 0.9rem; color: var(--text-color); display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 5px; }
        .pres-badge { font-size: 0.68rem; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap; }
        .pres-badge.hari-ini { background: rgba(var(--accent-rgb),0.13); color: var(--accent-color); border: 1px solid rgba(var(--accent-rgb),0.2); }
        .pres-badge.tepat { background: rgba(var(--success-rgb),0.13); color: var(--success-color); border: 1px solid rgba(var(--success-rgb),0.25); }
        .pres-badge.terlambat { background: rgba(255,152,0,0.13); color: #e65100; border: 1px solid rgba(255,152,0,0.25); }
        .pres-badge.face-id { background: rgba(var(--secondary-rgb),0.10); color: var(--secondary-color); border: 1px solid rgba(var(--secondary-rgb),0.2); }
        .dark-mode .pres-badge.tepat { background: rgba(var(--success-rgb),0.18); color: var(--success-color); }
        .dark-mode .pres-badge.terlambat { background: rgba(255,152,0,0.18); color: #ffb74d; }
        .dark-mode .pres-badge.face-id { background: rgba(var(--secondary-rgb),0.15); color: var(--secondary-color); }
        .pres-riwayat-meta { font-size: 0.75rem; color: var(--light-text); display: flex; flex-direction: column; gap: 2px; }
        .pres-riwayat-time { display: flex; align-items: center; gap: 5px; color: var(--accent-color); font-weight: 600; font-size: 0.78rem; }
        .pres-riwayat-loc { display: flex; align-items: center; gap: 5px; font-size: 0.72rem; color: var(--light-text); }

        /* Tombol utama presensi kini selalu mengikuti --accent-color dari palet aktif (lihat .pres-main-btn di atas) */
        .absensi-note { background-color: var(--primary-color); border: 1px solid var(--border-color); border-radius: 12px; margin-bottom: 20px; box-shadow: var(--shadow); overflow: hidden; }
        .dark-mode .absensi-note { background-color: rgba(255,255,255,0.03); border-color: rgba(255,179,0,0.25); }
        .absensi-note-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; background: linear-gradient(90deg, rgba(255,179,0,0.12) 0%, rgba(255,248,225,0.4) 100%); border-bottom: 1px solid rgba(255,179,0,0.2); cursor: pointer; user-select: none; gap: 10px; }
        .dark-mode .absensi-note-header { background: linear-gradient(90deg, rgba(255,179,0,0.10) 0%, rgba(255,179,0,0.04) 100%); border-bottom-color: rgba(255,179,0,0.15); }
        .absensi-note-header-left { display: flex; align-items: center; gap: 9px; }
        .absensi-note-icon { width: 32px; height: 32px; border-radius: 8px; background: rgba(255,179,0,0.18); display: flex; align-items: center; justify-content: center; color: #e65100; font-size: 0.95rem; flex-shrink: 0; }
        .absensi-note-title { font-family: 'Montserrat', sans-serif; font-weight: 700; font-size: 0.95rem; color: #b45309; }
        .dark-mode .absensi-note-title { color: #fbbf24; }
        .absensi-note-badge { font-size: 0.7rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: rgba(255,179,0,0.18); color: #92400e; letter-spacing: 0.03em; }
        .dark-mode .absensi-note-badge { background: rgba(255,179,0,0.2); color: #fcd34d; }
        .absensi-note-toggle { background: none; border: 1px solid rgba(255,179,0,0.35); border-radius: 6px; padding: 5px 11px; cursor: pointer; color: #92400e; font-size: 0.78rem; font-weight: 600; display: flex; align-items: center; gap: 5px; transition: var(--transition); white-space: nowrap; flex-shrink: 0; }
        .dark-mode .absensi-note-toggle { color: #fcd34d; border-color: rgba(255,179,0,0.3); }
        .absensi-note-toggle:hover { background: rgba(255,179,0,0.12); }
        .absensi-note-toggle i { transition: transform 0.3s ease; }
        .absensi-note-toggle.expanded i { transform: rotate(180deg); }
        .absensi-note-body { display: none; padding: 10px 12px; border-top: 1px dashed rgba(255,179,0,0.2); }
        .absensi-note-body.open { display: block; animation: fadeInDown 0.22s ease; }
        @keyframes fadeInDown { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }
        .absensi-rule-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; }
        .absensi-rule-item { display: flex; align-items: center; gap: 7px; font-size: 0.78rem; color: var(--text-color); line-height: 1.4; padding: 5px 8px; background: rgba(255,179,0,0.04); border-radius: 6px; border-left: 2px solid rgba(255,179,0,0.35); }
        .dark-mode .absensi-rule-item { background: rgba(255,179,0,0.05); }
        .absensi-rule-item i { color: #d97706; flex-shrink: 0; font-size: 0.7rem; }
        .absensi-rule-item.rule-cara { background: rgba(var(--accent-rgb),0.05); border-left-color: var(--accent-color); }
        .absensi-rule-item.rule-cara i { color: var(--accent-color); }
        .absensi-rule-jadwal { font-weight: 600; color: #1b5e20; }
        .dark-mode .absensi-rule-jadwal { color: #81c784; }
        .absensi-controls { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 15px; }
        .absensi-status { margin: 10px 0; padding: 10px; border-radius: 5px; background-color: rgba(79, 195, 247, 0.1); }
        .absensi-tepat { color: #1b5e20; font-weight: 600; }
        .absensi-terlambat { color: #f57c00; font-weight: 600; }
        .absensi-invalid { color: #b71c1c; font-weight: 600; }
        .absensi-ok { color: #1b5e20; font-weight: 600; }
        .absensi-flag { color: #b71c1c; font-weight: 600; }
        #photoPreview { max-width: 200px; margin-top: 10px; display: none; border-radius: 5px; border: 2px solid var(--border-color); }
        #randomCode { font-family: monospace; font-size: 18px; background: var(--border-color); padding: 5px 10px; display: inline-block; margin-left: 10px; border-radius: 3px; }
        .ip-info { font-size: 12px; color: var(--light-text); margin: 5px 0; }
        .absensi-log-table { margin-top: 20px; }
        .absensi-log-table th, .absensi-log-table td { padding: 8px; font-size: 14px; font-variant-numeric: tabular-nums; }
        #cameraInput { display: none; }
        .countdown-display { font-weight: 600; color: var(--accent-color); }
        .location-display { background: var(--border-color); padding: 8px; border-radius: 5px; margin: 10px 0; font-size: 14px; }
        .photo-preview-container { text-align: center; margin: 15px 0; }
        .btn:disabled { opacity: 0.5; cursor: not-allowed; }

        /* ===== DAFTAR KONTAK & PRE-ORDER CARD ===== */
        .kontak-po-shell { max-width: 960px; margin: 0 auto; }
        .kontak-po-tabs { display: flex; gap: 0; border-bottom: 2px solid var(--border-color); margin-bottom: 16px; }
        .kontak-po-tab { flex: 1; padding: 10px 0; border: none; background: none; color: var(--light-text); font-weight: 600; font-size: 0.9rem; cursor: pointer; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: var(--transition); }
        .kontak-po-tab.active { color: var(--accent-color); border-bottom-color: var(--accent-color); }
        .kontak-po-panel { display: none; }
        .kontak-po-panel.active { display: block; }
        .kontak-card { background: var(--primary-color); border: 1px solid var(--border-color); border-radius: 12px; padding: 14px 16px; margin-bottom: 12px; box-shadow: var(--shadow); position: relative; }
        .kontak-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
        .kontak-card-name { font-weight: 700; font-size: 1rem; color: var(--text-color); }
        .kontak-card-actions { display: flex; gap: 6px; }
        .kontak-card-field { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px dashed var(--border-color); font-size: 0.85rem; }
        .kontak-card-field:last-child { border-bottom: none; }
        .kontak-field-label { color: var(--light-text); font-weight: 500; }
        .kontak-field-value { font-weight: 600; color: var(--text-color); text-align: right; max-width: 60%; word-break: break-word; }
        .kontak-wa-link { color: var(--accent-color); text-decoration: none; }
        .kontak-wa-link:hover { text-decoration: underline; }
        .kontak-maps-btn { background: var(--accent-color); color: #fff; border: none; border-radius: 6px; padding: 4px 9px; font-size: 0.75rem; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
        .kontak-maps-btn:hover { background: var(--secondary-color); }
        .kontak-empty { text-align: center; padding: 32px 16px; color: var(--light-text); border: 1px dashed var(--border-color); border-radius: 12px; font-size: 0.9rem; }
        .po-badge { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 999px; font-size: 0.72rem; font-weight: 700; }
        .po-badge.pending { background: rgba(255,152,0,0.12); color: #f57c00; border: 1px solid rgba(255,152,0,0.3); }
        .po-badge.done    { background: rgba(76,175,80,0.12); color: #2e7d32; border: 1px solid rgba(76,175,80,0.3); }
        .po-badge.cancel  { background: rgba(244,67,54,0.10); color: #c62828; border: 1px solid rgba(244,67,54,0.25); }
        .po-badge.proses  { background: rgba(var(--accent-rgb),0.12); color: #0277bd; border: 1px solid rgba(var(--accent-rgb),0.3); }
        .po-badge.ambil   { background: rgba(156,39,176,0.10); color: #7b1fa2; border: 1px solid rgba(156,39,176,0.25); font-size:0.68rem; }
        .po-badge.antar   { background: rgba(0,150,136,0.10);  color: #00695c; border: 1px solid rgba(0,150,136,0.25);  font-size:0.68rem; }
        .dark-mode .po-badge.pending { background: rgba(255,152,0,0.2); color: #ffb74d; }
        .dark-mode .po-badge.done    { background: rgba(76,175,80,0.2);  color: #81c784; }
        .dark-mode .po-badge.cancel  { background: rgba(244,67,54,0.2);  color: #ef9a9a; }
        .dark-mode .po-badge.proses  { background: rgba(var(--accent-rgb),0.2); color: #4fc3f7; }
        .dark-mode .po-badge.ambil   { background: rgba(156,39,176,0.2); color: #ce93d8; }
        .dark-mode .po-badge.antar   { background: rgba(0,150,136,0.2);  color: #80cbc4; }
        /* Modal form kontak/PO */
        #kontakPoModal .popup-content { max-width: 480px; }

        /* ── PO Card — compact clean design ── */
        .po-card {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            margin-bottom: 10px;
            overflow: hidden;
        }
        .po-card-top {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px 12px;
            gap: 8px;
            border-bottom: 1px solid var(--border-color);
        }
        .po-card-name {
            font-weight: 700;
            font-size: 0.92rem;
            color: var(--text-color);
            flex: 1;
            min-width: 0;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .po-card-meta {
            display: flex;
            align-items: center;
            gap: 5px;
            flex-shrink: 0;
            flex-wrap: wrap;
            justify-content: flex-end;
        }
        .po-card-body {
            padding: 8px 12px;
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .po-row {
            display: flex;
            align-items: center;
            gap: 7px;
            font-size: 0.82rem;
            color: var(--text-color);
            min-height: 22px;
        }
        .po-row-icon {
            width: 14px;
            text-align: center;
            color: var(--light-text);
            flex-shrink: 0;
            font-size: 0.78rem;
        }
        .po-detail-text {
            color: var(--light-text);
            line-height: 1.4;
        }
        .po-icon-btn {
            background: none;
            border: 1px solid var(--border-color);
            border-radius: 6px;
            width: 28px;
            height: 28px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            color: var(--light-text);
            font-size: 0.72rem;
            transition: var(--transition);
            flex-shrink: 0;
        }
        .po-icon-btn:hover { border-color: var(--accent-color); color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        .po-icon-btn.danger:hover { border-color: var(--danger-color); color: var(--danger-color); background: rgba(244,67,54,0.07); }

        /* ── PO Card minimal — klik untuk lihat detail (read-only), aksi edit/hapus di atas ── */
        .po-card-min {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 12px;
            margin-bottom: 10px;
            padding: 11px 12px;
            display: flex;
            align-items: center;
            gap: 10px;
            cursor: pointer;
            transition: var(--transition);
            overflow: hidden;
        }
        .po-card-min:active { background: rgba(var(--accent-rgb),0.05); }
        .po-card-min-main { flex: 1; min-width: 0; }
        .po-card-min-name {
            font-weight: 700; font-size: 0.9rem; color: var(--text-color);
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .po-card-min-sub {
            display: flex; align-items: center; gap: 6px; margin-top: 4px;
            font-size: 0.74rem; color: var(--light-text);
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .po-card-min-sub .dot { width: 3px; height: 3px; border-radius: 50%; background: var(--light-text); flex-shrink: 0; opacity: 0.6; }
        .po-card-min-actions { display: flex; gap: 5px; flex-shrink: 0; }
        .po-card-min-actions button { position: relative; z-index: 2; }
        .po-card-min-chevron { color: var(--light-text); font-size: 0.75rem; flex-shrink: 0; opacity: 0.5; }

        /* Detail view read-only (dipakai di dalam kontakPoModal) */
        .po-detail-view { display: flex; flex-direction: column; gap: 2px; }
        .po-detail-header { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
        .po-detail-row {
            display: flex; align-items: flex-start; gap: 10px;
            padding: 10px 0; border-bottom: 1px solid var(--border-color);
        }
        .po-detail-row:last-child { border-bottom: none; }
        .po-detail-row-icon {
            width: 30px; height: 30px; border-radius: 8px; flex-shrink: 0;
            background: rgba(var(--accent-rgb),0.1); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center; font-size: 0.82rem;
        }
        .po-detail-row-body { flex: 1; min-width: 0; }
        .po-detail-row-label { font-size: 0.68rem; color: var(--light-text); font-weight: 700; text-transform: uppercase; letter-spacing: 0.3px; margin-bottom: 2px; }
        .po-detail-row-value { font-size: 0.88rem; color: var(--text-color); word-break: break-word; line-height: 1.4; }
        .kontak-form-group { margin-bottom: 13px; }
        .kontak-form-group label { display: block; font-size: 0.82rem; font-weight: 600; margin-bottom: 4px; color: var(--light-text); }
        .kontak-form-group input, .kontak-form-group textarea, .kontak-form-group select { width: 100%; padding: 9px 12px; border: 1px solid var(--border-color); border-radius: 6px; background: var(--primary-color); color: var(--text-color); font-family: 'Inter', sans-serif; font-size: 0.88rem; }
        .kontak-form-group input:focus, .kontak-form-group textarea:focus, .kontak-form-group select:focus { outline: none; border-color: var(--accent-color); }
        .kontak-same-pemesan { display: flex; align-items: center; gap: 8px; font-size: 0.82rem; font-weight: 500; margin-bottom: 10px; cursor: pointer; }
        .kontak-coord-row { display: flex; gap: 8px; align-items: flex-end; }
        .kontak-coord-row input { flex: 1; }
        /* ===== END DAFTAR KONTAK & PRE-ORDER ===== */

        .ka-shell { max-width: 960px; margin: 0 auto; padding-bottom: 24px; }
        .ka-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 6px;
        }
        .ka-title {
            font-family: 'Montserrat', sans-serif;
            font-size: 1.2rem;
            font-weight: 700;
            color: var(--text-color);
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .ka-refresh-btn {
            background: none;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 7px 11px;
            cursor: pointer;
            color: var(--icon-color);
            font-size: 0.9rem;
            transition: var(--transition);
        }
        .ka-refresh-btn:hover { background: rgba(var(--accent-rgb),0.08); border-color: var(--accent-color); color: var(--accent-color); }
        .ka-section-label {
            font-family: 'Montserrat', sans-serif;
            font-size: 0.88rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: var(--light-text);
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .ka-filter-bar {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
            align-items: flex-end;
            margin-bottom: 12px;
            padding: 10px 12px;
            background: rgba(var(--accent-rgb),0.04);
            border: 1px solid var(--border-color);
            border-radius: 10px;
        }
        .dark-mode .ka-filter-bar { background: rgba(255,255,255,0.03); }
        .ka-filter-item { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 130px; }
        .ka-label { font-size: 0.75rem; font-weight: 600; color: var(--light-text); }
        .ka-select, .ka-input {
            padding: 8px 10px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            background: var(--primary-color);
            color: var(--text-color);
            font-size: 0.85rem;
            font-family: 'Inter', sans-serif;
            transition: var(--transition);
            width: 100%;
        }
        .ka-select:focus, .ka-input:focus { border-color: var(--accent-color); outline: none; }
        .ka-apply-btn {
            padding: 9px 16px;
            background: var(--accent-color);
            color: #fff;
            border: none;
            border-radius: 8px;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            white-space: nowrap;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            transition: var(--transition);
            align-self: flex-end;
        }
        .ka-apply-btn:hover { background: var(--secondary-color); }

        /* Rekap cards grid */
        .ka-rekap-grid {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            gap: 12px;
            overflow-x: auto;
            padding-bottom: 8px;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: thin;
            scrollbar-color: var(--border-color) transparent;
        }
        .ka-rekap-grid::-webkit-scrollbar { height: 4px; }
        .ka-rekap-grid::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }
        .ka-rekap-card {
            flex: 0 0 200px;
            min-width: 200px;
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 14px;
            padding: 16px 18px;
            box-shadow: var(--shadow);
            transition: var(--transition);
        }
        .ka-rekap-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,0.1); }
        .ka-rekap-name {
            font-weight: 700;
            font-size: 0.95rem;
            margin-bottom: 12px;
            color: var(--text-color);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .ka-rekap-stats {
            display: flex;
            gap: 8px;
            justify-content: space-between;
        }
        .ka-stat {
            flex: 1;
            text-align: center;
            padding: 8px 4px;
            border-radius: 8px;
            background: rgba(0,0,0,0.03);
        }
        .dark-mode .ka-stat { background: rgba(255,255,255,0.05); }
        .ka-stat-val {
            font-size: 1.3rem;
            font-weight: 800;
            line-height: 1;
            margin-bottom: 3px;
        }
        .ka-stat-lbl { font-size: 0.68rem; font-weight: 600; color: var(--light-text); text-transform: uppercase; letter-spacing: 0.03em; }
        .ka-stat.total .ka-stat-val  { color: var(--accent-color); }
        .ka-stat.tepat .ka-stat-val  { color: #4caf50; }
        .ka-stat.lambat .ka-stat-val { color: #f57c00; }

        /* Log/riwayat cards grid */
        .ka-log-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
            gap: 12px;
        }
        .ka-log-card {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 14px;
            padding: 14px 16px;
            box-shadow: var(--shadow);
            transition: var(--transition);
            display: flex;
            flex-direction: column;
            gap: 6px;
        }
        .ka-log-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,0.1); }
        .ka-log-top {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .ka-log-date { font-size: 0.78rem; font-weight: 600; color: var(--light-text); }
        .ka-log-time {
            font-size: 0.95rem;
            font-weight: 800;
            color: var(--accent-color);
            font-family: 'Montserrat', sans-serif;
        }
        .ka-log-name {
            font-size: 0.92rem;
            font-weight: 700;
            color: var(--text-color);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .ka-log-bottom { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 2px; }
        .ka-badge {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px 9px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 700;
            letter-spacing: 0.03em;
        }
        .ka-badge.tepat   { background: rgba(76,175,80,0.12);  color: #2e7d32; border: 1px solid rgba(76,175,80,0.3); }
        .ka-badge.lambat  { background: rgba(245,124,0,0.12);  color: #e65100; border: 1px solid rgba(245,124,0,0.3); }
        .ka-badge.invalid { background: rgba(244,67,54,0.10);  color: #c62828; border: 1px solid rgba(244,67,54,0.25); }
        .dark-mode .ka-badge.tepat  { background: rgba(76,175,80,0.2);  color: #81c784; }
        .dark-mode .ka-badge.lambat { background: rgba(245,124,0,0.2);  color: #ffb74d; }
        .dark-mode .ka-badge.invalid{ background: rgba(244,67,54,0.2);  color: #ef9a9a; }
        .ka-foto-link { font-size: 1rem; text-decoration: none; }
        .ka-empty {
            flex: 0 0 100%;
            min-width: 100%;
            text-align: center;
            padding: 28px 16px;
            color: var(--light-text);
            font-size: 0.9rem;
            border: 1px dashed var(--border-color);
            border-radius: 14px;
        }
        @media (max-width: 480px) {
            .ka-log-grid { grid-template-columns: 1fr 1fr; }
        }
        /* ===== END KEHADIRAN ADMIN CARD UI ===== */

        /* Admin Geofence Monitor Styles */
        .admin-geofence-container { max-width: 1200px; margin: 0 auto; }
        .admin-filters { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; flex-wrap: wrap; }
        .admin-filter-group { display: flex; align-items: center; gap: 6px; }
        .admin-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); justify-content: center; align-items: center; z-index: 1000; }
        .admin-modal.active { display: flex; }
        .admin-modal-content { background: var(--primary-color); padding: 24px; border-radius: 8px; width: 90%; max-width: 500px; box-shadow: var(--shadow); }
        .admin-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
        .admin-modal-body { display: flex; flex-direction: column; gap: 12px; }
        .admin-close-btn { cursor: pointer; font-size: 24px; color: var(--icon-color); }
        .admin-table-container { max-height: 500px; overflow-y: auto; }
        .admin-table th, .admin-table td { padding: 8px; font-size: 14px; font-variant-numeric: tabular-nums; text-align: left; }
        .admin-table th { background-color: var(--secondary-color); color: #fff; font-weight: 500; position: sticky; top: 0; }

        /* ===== AREA SENSITIF ADMIN — redesigned ===== */
        .sensitive-area-container { max-width: 900px; margin: 0 auto; }

        /* Tab navigation bar */
        .sensitive-tabs {
            display: flex;
            gap: 4px;
            flex-wrap: wrap;
            margin-bottom: 14px;
            padding: 4px;
            background: rgba(0,0,0,0.03);
            border-radius: 10px;
            border: 1px solid var(--border-color);
        }
        .dark-mode .sensitive-tabs {
            background: rgba(255,255,255,0.04);
        }
        .sensitive-tab-btn {
            padding: 6px 12px;
            border: none;
            border-radius: 8px;
            background: transparent;
            color: var(--light-text);
            cursor: pointer;
            font-size: 0.78rem;
            font-weight: 600;
            transition: var(--transition);
            display: inline-flex;
            align-items: center;
            gap: 5px;
            white-space: nowrap;
        }
        .sensitive-tab-btn:hover {
            background: rgba(var(--accent-rgb),0.08);
            color: var(--accent-color);
        }
        .sensitive-tab-btn.active {
            background: var(--accent-color);
            color: #fff;
            box-shadow: 0 2px 8px rgba(var(--accent-rgb),0.25);
        }

        .sensitive-panel { display: none; }
        .sensitive-panel.active { display: block; }

        /* Cards/Forms */
        .sensitive-form {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 14px 16px;
            margin-bottom: 10px;
            box-shadow: 0 1px 4px rgba(0,0,0,0.05);
            transition: var(--transition);
        }
        .dark-mode .sensitive-form {
            box-shadow: 0 1px 6px rgba(0,0,0,0.18);
        }
        .sensitive-form h4 {
            margin-bottom: 10px;
            color: var(--accent-color);
            font-size: 0.88rem;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .sensitive-form > p {
            display: none;
        }
        .sensitive-form-row {
            display: flex;
            gap: 12px;
            align-items: flex-end;
            flex-wrap: wrap;
        }
        .sensitive-form-row .form-group { flex: 1; min-width: 140px; }

        /* User list table */
        .user-list-table { width: 100%; border-collapse: collapse; }
        .user-list-table th, .user-list-table td {
            padding: 10px 14px;
            border-bottom: 1px solid var(--border-color);
            text-align: left;
            font-size: 14px;
            font-variant-numeric: tabular-nums;
        }
        .user-list-table th {
            background: var(--secondary-color);
            color: #fff;
            position: sticky;
            top: 0;
            font-size: 12px;
            font-weight: 500;
            text-transform: uppercase;
            letter-spacing: 0.03em;
        }
        .user-list-table tbody tr:hover {
            background: rgba(var(--accent-rgb),0.04);
        }

        /* Action buttons */
        .user-action-btn {
            padding: 5px 10px;
            border: none;
            border-radius: 6px;
            cursor: pointer;
            font-size: 12px;
            display: inline-flex;
            align-items: center;
            gap: 4px;
            transition: var(--transition);
        }
        .user-action-btn.edit { background: var(--accent-color); color: #fff; }
        .user-action-btn.edit:hover { background: var(--secondary-color); transform: translateY(-1px); }


        /* Checkbox list for recipients */
        .user-checkbox-list {
            max-height: 200px;
            overflow-y: auto;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            padding: 8px;
            margin-top: 6px;
        }
        .user-checkbox-item {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 6px 8px;
            border-radius: 6px;
            cursor: pointer;
            transition: background 0.15s;
        }
        .user-checkbox-item:hover { background: rgba(var(--accent-rgb),0.06); }
        .user-checkbox-item input[type="checkbox"] { width: auto; }


        /* Inline location edit */
        .edit-location-inline { background: var(--primary-color); border: 1px solid var(--accent-color); border-radius: 10px; padding: 16px; margin-top: 8px; }

        .private-recipients-note { font-size: 11px; color: var(--danger-color); margin-top: 5px; }

        /* ===== KEHADIRAN PAGE REDESIGN ===== */
        .kh-setting-card {
            background: var(--primary-color);
            border: 1.5px solid var(--border-color);
            border-radius: 14px;
            margin-bottom: 10px;
            overflow: hidden;
        }
        .kh-setting-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 13px 14px;
            cursor: pointer;
            user-select: none;
            -webkit-user-select: none;
            transition: background 0.15s;
        }
        .kh-setting-header:active { background: rgba(var(--accent-rgb),0.05); }
        .kh-setting-title {
            font-size: 0.88rem;
            font-weight: 700;
            color: var(--text-color);
            display: flex;
            align-items: center;
        }
        .kh-setting-chevron {
            font-size: 0.8rem;
            color: var(--light-text);
            transition: transform 0.25s;
        }
        .kh-setting-chevron.open { transform: rotate(180deg); }
        .kh-setting-body {
            padding: 2px 14px 16px;
            border-top: 1.5px solid var(--border-color);
        }
        .kh-info-note {
            font-size: 11.5px; color: var(--light-text); font-weight: 500;
            margin: 12px 0 14px; padding: 9px 11px;
            background: rgba(var(--accent-rgb),0.06); border-radius: 10px; line-height: 1.5;
        }
        .kh-shift-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 6px; }
        .kh-shift-card { border: 1.5px solid var(--border-color); border-radius: 12px; padding: 12px; }
        .kh-shift-title { font-weight: 700; margin-bottom: 10px; color: var(--accent-color); font-size: 0.8rem; }
        .kh-laporan-filter-card {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 12px 14px;
            margin-bottom: 12px;
            box-shadow: var(--shadow);
        }
        .kh-table-card {
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            overflow: hidden;
            box-shadow: var(--shadow);
        }
        .kh-table-card .table-container { border-radius: 0; box-shadow: none; }
        #khTabelKehadiran tbody tr { cursor: default; }
        /* ===== END KEHADIRAN PAGE REDESIGN ===== */

        /* Bottom Navigation Styles */
        .bottom-nav {
            position: fixed;
            bottom: 0;
            left: 0;
            width: 100%;
            background-color: var(--primary-color);
            box-shadow: 0 -2px 10px var(--shadow);
            display: flex;
            justify-content: space-around;
            align-items: center;
            padding: 8px 0;
            z-index: 1000;
            border-top: 1px solid var(--border-color);
            transition: var(--transition);
        }
        .bottom-nav-item {
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            color: var(--light-text);
            font-size: 12px;
            cursor: pointer;
            padding: 4px 0;
            transition: var(--transition);
            border: none;
            background: none;
            gap: 2px;
            position: relative;
        }
        .nav-badge {
            position: absolute;
            top: 4px;
            right: 18px;
            min-width: 18px;
            height: 18px;
            padding: 0 5px;
            border-radius: 999px;
            background: var(--danger-color);
            color: #fff;
            font-size: 10px;
            font-weight: 700;
            display: none;
            align-items: center;
            justify-content: center;
            line-height: 1;
            box-shadow: 0 0 0 2px var(--primary-color);
            pointer-events: none;
        }
        .bottom-nav-item.has-badge .nav-badge {
            display: inline-flex;
        }
        .bottom-nav-item i {
            font-size: 20px;
            margin-bottom: 2px;
        }
        .bottom-nav-item.active {
            color: var(--accent-color);
        }
        .bottom-nav-item:hover {
            background-color: rgba(79, 195, 247, 0.05);
        }
        .dark-mode .bottom-nav-item:hover {
            background-color: rgba(255, 255, 255, 0.05);
        }
        .dark-mode .bottom-nav-item {
            color: var(--light-text);
        }
        .dark-mode .bottom-nav-item.active {
            color: var(--accent-color);
        }

        /* Home page shortcuts */
        .shortcut-card {
            cursor: pointer;
            transition: transform 0.2s;
        }
        .shortcut-card:hover {
            transform: translateY(-5px);
        }

        /* Home Beranda Stats */
        .home-stats-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12px;
            margin-bottom: 12px;
        }
        .home-stat-card {
            background: var(--primary-color);
            border-radius: 14px;
            padding: 16px 14px;
            box-shadow: var(--shadow);
            display: flex;
            flex-direction: column;
            gap: 6px;
            transition: var(--transition);
        }
        .home-stat-card:hover { transform: translateY(-3px); }
        .home-stat-icon {
            width: 36px; height: 36px;
            border-radius: 10px;
            display: flex; align-items: center; justify-content: center;
            font-size: 1rem;
            margin-bottom: 4px;
        }
        .home-stat-icon.terjual { background: rgba(var(--accent-rgb),0.13); color: var(--accent-color); }
        .home-stat-icon.omzet   { background: rgba(var(--success-rgb),0.13); color: var(--success-color); }
        .home-stat-label {
            font-size: 0.72rem;
            font-weight: 600;
            color: var(--light-text);
            text-transform: uppercase;
            letter-spacing: 0.04em;
        }
        .home-stat-value {
            font-family: 'Montserrat', sans-serif;
            font-size: clamp(1rem, 4vw, 1.4rem);
            font-weight: 700;
            color: var(--text-color);
            line-height: 1.2;
            word-break: break-word;
        }
        .home-stat-value.terjual-val { color: var(--accent-color); }
        .home-stat-value.omzet-val   { color: var(--success-color); }
        .home-stat-icon.kehadiran { background: rgba(var(--secondary-rgb),0.18); color: var(--secondary-color); }
        .home-stat-icon.laba     { background: rgba(var(--success-rgb),0.13); color: var(--success-color); }
        .home-stat-value.kehadiran-val { color: var(--secondary-color); }
        .home-stat-value.laba-val      { color: var(--success-color); }

        /* Overview (Admin) greeting & section label */
        .ov-greeting {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            margin-bottom: 14px;
        }
        .ov-greeting-text {
            font-family: 'Montserrat', sans-serif;
            font-size: 1.05rem;
            font-weight: 700;
            color: var(--text-color);
        }
        .ov-greeting-date {
            font-size: 0.75rem;
            color: var(--light-text);
        }
        .ov-section-label {
            font-size: 0.72rem;
            font-weight: 700;
            color: var(--light-text);
            text-transform: uppercase;
            letter-spacing: 0.05em;
            margin: 4px 0 10px;
        }

        /* Home attendance card */
        .home-attendance-card {
            background: var(--primary-color);
            border-radius: 14px;
            padding: 16px 18px;
            box-shadow: var(--shadow);
            display: flex;
            align-items: center;
            gap: 14px;
            margin-bottom: 12px;
            transition: var(--transition);
        }
        .home-att-icon {
            width: 46px; height: 46px;
            border-radius: 14px;
            display: flex; align-items: center; justify-content: center;
            font-size: 1.3rem;
            flex-shrink: 0;
        }
        .home-att-icon.hadir   { background: rgba(var(--success-rgb),0.15); color: var(--success-color); }
        .home-att-icon.belum   { background: rgba(var(--danger-rgb),0.12); color: var(--danger-color); }
        .home-att-info { flex: 1; }
        .home-att-label {
            font-size: 0.72rem; font-weight: 600; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 3px;
        }
        .home-att-status {
            font-family: 'Montserrat', sans-serif;
            font-size: 1rem; font-weight: 700;
        }
        .home-att-status.hadir { color: var(--success-color); }
        .home-att-status.belum { color: var(--danger-color); }
        .home-att-sub { font-size: 0.75rem; color: var(--light-text); margin-top: 2px; }

        /* Home shortcut buttons row */
        .home-shortcut-row {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 10px;
            margin-bottom: 20px;
        }
        .home-shortcut-btn {
            background: var(--primary-color);
            border: none;
            border-radius: 14px;
            box-shadow: var(--shadow);
            padding: 14px 8px;
            cursor: pointer;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 7px;
            transition: var(--transition);
            color: var(--text-color);
            font-family: 'Inter', sans-serif;
        }
        .home-shortcut-btn:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0,0,0,0.12); }
        .home-shortcut-btn:active { transform: scale(0.96); }
        .home-shortcut-btn-icon {
            width: 40px; height: 40px;
            border-radius: 12px;
            display: flex; align-items: center; justify-content: center;
            font-size: 1.1rem;
        }
        .home-shortcut-btn-icon.s1 { background: rgba(var(--accent-rgb),0.13); color: var(--accent-color); }
        .home-shortcut-btn-icon.s2 { background: rgba(var(--danger-rgb),0.12); color: var(--danger-color); filter: saturate(0.85) brightness(1.15); }
        .home-shortcut-btn-icon.s3 { background: rgba(var(--secondary-rgb),0.18); color: var(--secondary-color); }
        .home-shortcut-btn-label {
            font-size: 0.68rem;
            font-weight: 600;
            text-align: center;
            line-height: 1.3;
            color: var(--light-text);
        }

        /* ===== Statistik Karyawan — Entry Card (Overview Admin) — gaya korporat ===== */
        .ov-stat-entry-card {
            background: #1e293b;
            border: 1px solid #1e293b;
            border-radius: 10px;
            padding: 0;
            display: flex;
            align-items: stretch;
            cursor: pointer;
            margin-bottom: 18px;
            transition: var(--transition);
            box-shadow: var(--shadow);
            overflow: hidden;
            position: relative;
        }
        .ov-stat-entry-card::before {
            content: '';
            width: 4px;
            flex-shrink: 0;
            background: #c9a227;
        }
        .ov-stat-entry-card:hover { box-shadow: 0 6px 16px rgba(0,0,0,0.18); }
        .ov-stat-entry-card:active { opacity: 0.92; }
        .ov-stat-entry-inner {
            flex: 1;
            display: flex;
            align-items: center;
            gap: 14px;
            padding: 16px 16px 16px 14px;
        }
        .ov-stat-entry-icon {
            width: 42px; height: 42px;
            border-radius: 8px;
            flex-shrink: 0;
            display: flex; align-items: center; justify-content: center;
            font-size: 1.1rem;
            background: rgba(255,255,255,0.08);
            color: #c9a227;
            border: 1px solid rgba(255,255,255,0.12);
        }
        .ov-stat-entry-body { flex: 1; min-width: 0; }
        .ov-stat-entry-eyebrow {
            font-size: 0.62rem;
            font-weight: 700;
            color: #c9a227;
            text-transform: uppercase;
            letter-spacing: 0.08em;
            margin-bottom: 3px;
        }
        .ov-stat-entry-title {
            font-family: 'Montserrat', sans-serif;
            font-size: 0.92rem;
            font-weight: 700;
            color: #ffffff;
            margin-bottom: 2px;
            letter-spacing: 0.01em;
        }
        .ov-stat-entry-sub {
            font-size: 0.72rem;
            color: rgba(255,255,255,0.62);
            line-height: 1.35;
        }
        .ov-stat-entry-arrow {
            color: rgba(255,255,255,0.45);
            font-size: 0.85rem;
            flex-shrink: 0;
            align-self: center;
            margin-right: 16px;
        }

        /* ===== Modal Statistik Karyawan — ikut tema terang/gelap ===== */
        #statKaryawanModal .popup-content { max-width: 480px; }
        #statKaryawanModal .popup-header {
            background: var(--primary-color);
            border-bottom: 2px solid var(--accent-color);
        }
        #statKaryawanModal .popup-header-icon {
            background: rgba(var(--accent-rgb),0.12);
            color: var(--accent-color);
        }
        #statKaryawanModal .popup-title { color: var(--text-color); }
        #statKaryawanModal .popup-close { color: var(--light-text); }
        #statKaryawanModal .popup-close:hover { color: var(--icon-color); }

        .dl-doc-list {
            display: flex;
            flex-direction: column;
            gap: 12px;
            margin: 16px 0 6px;
        }
        .dl-doc-card {
            display: flex;
            flex-direction: column;
            background: var(--primary-color);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 0;
            overflow: hidden;
        }
        .dl-doc-card.disabled { opacity: 0.6; }
        .dl-doc-header {
            display: flex;
            align-items: flex-start;
            gap: 12px;
            padding: 14px;
            cursor: pointer;
            user-select: none;
            -webkit-tap-highlight-color: transparent;
        }
        .dl-doc-chevron {
            flex-shrink: 0;
            width: 24px; height: 24px;
            display: flex; align-items: center; justify-content: center;
            color: var(--light-text);
            font-size: 0.85rem;
            margin-top: 2px;
            transition: transform 0.25s ease;
        }
        .dl-doc-card.expanded .dl-doc-chevron { transform: rotate(180deg); }
        .dl-doc-icon {
            width: 40px; height: 40px;
            border-radius: 8px;
            flex-shrink: 0;
            display: flex; align-items: center; justify-content: center;
            font-size: 1.05rem;
            background: rgba(var(--accent-rgb),0.12);
            color: var(--accent-color);
        }
        .dl-doc-body { flex: 1; min-width: 0; }
        .dl-doc-title {
            font-size: 0.88rem;
            font-weight: 700;
            color: var(--text-color);
            margin-bottom: 3px;
        }
        .dl-doc-sub {
            font-size: 0.72rem;
            color: var(--light-text);
            line-height: 1.35;
        }
        .dl-doc-controls-wrap {
            display: grid;
            grid-template-rows: 0fr;
            transition: grid-template-rows 0.28s ease;
        }
        .dl-doc-card.expanded .dl-doc-controls-wrap {
            grid-template-rows: 1fr;
        }
        .dl-doc-controls-inner { overflow: hidden; min-height: 0; }
        .dl-doc-controls {
            display: flex;
            flex-direction: column;
            gap: 8px;
            align-items: stretch;
            padding: 0 14px 14px;
            margin-top: 4px;
        }
        .dl-doc-month {
            width: 100%;
            padding: 8px 10px;
            border-radius: 6px;
            border: 1px solid var(--border-color);
            background: var(--secondary-color);
            color: var(--text-color);
            font-size: 0.8rem;
            font-family: 'Inter', sans-serif;
        }
        .dl-doc-month:focus { outline: none; border-color: var(--accent-color); }
        .dl-doc-select { cursor: pointer; }
        .dl-doc-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            width: 100%;
            padding: 9px 14px;
            border-radius: 6px;
            border: none;
            background: var(--accent-color);
            color: #fff;
            font-size: 0.8rem;
            font-weight: 700;
            cursor: pointer;
            white-space: nowrap;
            transition: var(--transition);
        }
        .dl-doc-btn:hover { opacity: 0.9; }
        .dl-doc-btn:disabled {
            background: rgba(120,120,120,0.25);
            color: var(--light-text);
            cursor: not-allowed;
        }
        .dl-doc-status {
            text-align: center;
            font-size: 0.76rem;
            color: var(--light-text);
            min-height: 18px;
            margin-top: 8px;
        }
        .dl-doc-status.error { color: var(--danger-color); }
        .dl-doc-status.success { color: #4caf50; }

/* Tambahkan CSS ini di bagian style */

/* Tambahkan CSS ini di bagian style */
.rekap-table-container {
    width: 100%;
    overflow-x: auto;
    margin-bottom: 20px;
}
.rekap-table {
    min-width: 400px; /* agar tidak terlalu kecil, bisa disesuaikan */
    width: 100%;
    border-collapse: collapse;
}
.rekap-table th, .rekap-table td {
    padding: 8px 12px;
    text-align: left;
    border-bottom: 1px solid var(--border-color);
}
.rekap-table th {
    background-color: var(--secondary-color);
    color: #fff;
    font-weight: 600;
}

        /* ===== ADMIN PAGES COMPACT OVERRIDES ===== */
        #laporanKehadiranAdmin .form-group,
        #areaSensitif .form-group,
        #aturKehadiranModal .form-group {
            margin-bottom: 10px;
        }
        #laporanKehadiranAdmin label,
        #areaSensitif label,
        #aturKehadiranModal label {
            font-size: 12px;
            margin-bottom: 3px;
        }
        #areaSensitif input,
        #areaSensitif select,
        #laporanKehadiranAdmin input,
        #laporanKehadiranAdmin select,
        #aturKehadiranModal input,
        #aturKehadiranModal select {
            padding: 8px 10px;
            font-size: 13px;
        }
        #areaSensitif .btn,
        #laporanKehadiranAdmin .btn,
        #aturKehadiranModal .btn {
            padding: 8px 14px;
            font-size: 13px;
        }
        .sensitive-form-row {
            gap: 8px;
        }
        /* Sembunyikan kalimat info di bawah filter (admin pages) */
        #laporanKehadiranAdminInfo {
            display: none !important;
        }
        /* ===== END ADMIN PAGES COMPACT OVERRIDES ===== */

        
        *:focus, *:focus-visible { outline: none !important; box-shadow: none !important; }

        /* ===== FOTO AREA KERJA (BACK CAMERA) ===== */
        .work-photo-modal {
            position: fixed; inset: 0; z-index: 3500;
            background: #000;
            display: flex; flex-direction: column;
            opacity: 0; visibility: hidden;
            transition: opacity 0.28s ease, visibility 0.28s;
        }
        .work-photo-modal.active { opacity: 1; visibility: visible; }
        .work-photo-header {
            display: flex; align-items: center; justify-content: space-between;
            padding: 14px 16px 8px;
            background: rgba(0,0,0,0.85); backdrop-filter: blur(8px);
            flex-shrink: 0;
        }
        .work-photo-header-title { font-size: 0.95rem; font-weight: 700; color: #fff; display: flex; align-items: center; gap: 8px; }
        .work-photo-counter { font-size: 0.78rem; color: rgba(255,255,255,0.6); background: rgba(255,255,255,0.12); padding: 4px 10px; border-radius: 999px; }
        .work-photo-camera-wrap { position: relative; flex: 1; overflow: hidden; background: #000; }
        .work-photo-video { width: 100%; height: 100%; object-fit: cover; display: block; }
        .work-photo-watermark {
            position: absolute; bottom: 0; left: 0; right: 0;
            background: linear-gradient(to top, rgba(0,0,0,0.82) 0%, rgba(0,0,0,0.4) 60%, transparent 100%);
            padding: 18px 16px 14px;
            pointer-events: none;
        }
        .work-photo-wm-brand { font-family: 'Montserrat', sans-serif; font-size: 1.1rem; font-weight: 800; color: #fff; letter-spacing: 0.04em; margin-bottom: 4px; }
        .work-photo-wm-detail { font-size: 0.72rem; color: rgba(255,255,255,0.9); line-height: 1.5; }
        .work-photo-wm-detail span { display: block; }
        .work-photo-controls {
            display: flex; align-items: center; justify-content: space-around;
            padding: 16px 20px 28px;
            background: rgba(0,0,0,0.92); flex-shrink: 0;
        }
        .work-photo-shutter {
            width: 70px; height: 70px;
            border-radius: 50%;
            background: #fff;
            border: 4px solid rgba(255,255,255,0.5);
            cursor: pointer;
            display: flex; align-items: center; justify-content: center;
            transition: transform 0.1s, background 0.1s;
            font-size: 1.4rem; color: #222;
        }
        .work-photo-shutter:active { transform: scale(0.93); background: #ddd; }
        .work-photo-shutter.done { background: var(--success-color); color: #fff; border-color: rgba(76,175,80,0.4); }
        .work-photo-thumb-row {
            display: flex; gap: 8px; align-items: center;
            min-width: 80px;
        }
        .work-photo-thumb {
            width: 56px; height: 56px;
            border-radius: 10px; overflow: hidden;
            border: 2px solid rgba(255,255,255,0.3);
            background: rgba(255,255,255,0.08);
            display: flex; align-items: center; justify-content: center;
            flex-shrink: 0;
        }
        .work-photo-thumb img { width: 100%; height: 100%; object-fit: cover; }
        .work-photo-thumb-empty { color: rgba(255,255,255,0.25); font-size: 1.1rem; }
        .work-photo-hint { font-size: 0.72rem; color: rgba(255,255,255,0.5); text-align: center; padding: 0 0 4px; }
        .work-photo-progress {
            display: flex; gap: 6px; justify-content: center;
            padding: 0 0 6px;
        }
        .work-photo-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255,255,255,0.25); transition: background 0.2s; }
        .work-photo-dot.filled { background: var(--accent-color); }
        /* ===== END FOTO AREA KERJA ===== */

        /* ===== GAJI POPUP UI — clean, minimal (1 hero + 1 meta row) ===== */
        .gaji-hero {
            background: linear-gradient(135deg, var(--accent-color), #4fc3f7);
            border-radius: 18px;
            padding: 26px 20px 22px;
            text-align: center;
            margin-bottom: 16px;
        }
        .gaji-hero-label { font-size: 0.7rem; font-weight: 600; color: rgba(255,255,255,0.82); text-transform: uppercase; letter-spacing: 0.07em; }
        .gaji-hero-amount { font-family: 'Montserrat', sans-serif; font-size: 2.15rem; font-weight: 800; color: #fff; line-height: 1.2; margin-top: 6px; }
        .gaji-hero-sub { font-size: 0.78rem; color: rgba(255,255,255,0.82); margin-top: 6px; }
        /* Info bar: Hanya tanggal gajian */
        .gaji-info-bar {
            display: flex; align-items: center; gap: 10px;
            background: rgba(var(--accent-rgb),0.08);
            border: 1px solid rgba(var(--accent-rgb),0.18);
            border-radius: 12px;
            padding: 11px 16px;
            margin-bottom: 18px;
        }
        .gaji-info-bar i { color: var(--accent-color); font-size: 0.88rem; flex-shrink: 0; }
        .gaji-info-bar span { font-size: 0.82rem; color: var(--text-color); font-weight: 500; }
        .gaji-info-bar b { color: var(--accent-color); font-weight: 700; }
        /* Riwayat harian */
        .gaji-riwayat-label {
            font-size: 0.7rem; font-weight: 700; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.06em;
            margin-bottom: 8px; padding: 0 2px;
        }
        .gaji-riwayat-list {
            display: flex; flex-direction: column; gap: 1px;
            border: 1px solid var(--border-color); border-radius: 14px; overflow: hidden;
            margin-bottom: 20px;
        }
        .gaji-riwayat-row {
            display: flex; align-items: center;
            padding: 10px 14px; gap: 12px;
            background: var(--primary-color);
            border-bottom: 1px solid var(--border-color);
        }
        .gaji-riwayat-row:last-child { border-bottom: none; }
        .gaji-riwayat-date {
            font-size: 0.78rem; font-weight: 600; color: var(--text-color);
            min-width: 90px; flex-shrink: 0;
        }
        .gaji-riwayat-status {
            font-size: 0.7rem; font-weight: 600; padding: 3px 9px;
            border-radius: 20px; flex-shrink: 0;
        }
        .gaji-riwayat-status.tepat { background: rgba(76,175,80,0.12); color: #388e3c; }
        .gaji-riwayat-status.terlambat { background: rgba(255,152,0,0.12); color: #e65100; }
        .gaji-riwayat-amount {
            font-size: 0.82rem; font-weight: 700; color: var(--text-color);
            margin-left: auto; flex-shrink: 0;
        }
        .gaji-riwayat-empty {
            text-align: center; padding: 28px 16px; color: var(--light-text);
            font-size: 0.82rem;
        }
        /* ===== END GAJI POPUP UI ===== */

        /* ===== PENGGAJIAN (Admin) — form bersih & to the point ===== */
        .pg-modal .popup-body { padding: 2px 18px 22px; }
        .pg-select-wrap { position: relative; margin-bottom: 14px; }
        .pg-select {
            width: 100%; appearance: none; -webkit-appearance: none;
            padding: 13px 38px 13px 14px; border: 1.5px solid var(--border-color); border-radius: 14px;
            background: var(--primary-color); color: var(--text-color);
            font-size: 14px; font-weight: 600; cursor: pointer;
        }
        .pg-select:focus { outline: none; border-color: var(--accent-color); }
        .pg-select-caret { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); font-size: 11px; color: var(--light-text); pointer-events: none; }
        .pg-info-chip {
            display: none; align-items: center; justify-content: space-between;
            font-size: 12px; color: var(--light-text); font-weight: 500;
            margin: -6px 2px 14px; padding: 0 2px;
        }
        .pg-info-chip b { color: var(--accent-color); font-weight: 700; }
        .pg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 4px; }
        .pg-field-full { grid-column: 1 / -1; }
        .pg-field label {
            display: block; font-size: 10.5px; font-weight: 600; color: var(--light-text);
            text-transform: uppercase; letter-spacing: .04em; margin-bottom: 6px;
        }
        .pg-field input {
            width: 100%; border: 1.5px solid var(--border-color); border-radius: 12px; padding: 10.5px 12px;
            background: var(--primary-color); color: var(--text-color);
            font-size: 14.5px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums;
        }
        .pg-field input::placeholder { color: var(--light-text); font-weight: 500; }
        .pg-field input:focus { outline: none; border-color: var(--accent-color); }
        .pg-section-label {
            font-size: 10.5px; font-weight: 600; color: var(--light-text);
            text-transform: uppercase; letter-spacing: .04em; margin-bottom: 8px;
        }
        .pg-hari-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 5px; margin-bottom: 6px; }
        .pg-hari-cell { background: var(--primary-color); border: 1.5px solid var(--border-color); border-radius: 11px; padding: 6px 4px 5px; text-align: center; }
        .pg-hari-cell span { display: block; font-size: 8.5px; font-weight: 700; color: var(--light-text); text-transform: uppercase; letter-spacing: .03em; margin-bottom: 2px; }
        .pg-hari-cell input {
            width: 100%; border: none; background: transparent; color: var(--text-color);
            font-size: 12.5px; font-weight: 700; text-align: center; padding: 1px 0;
        }
        .pg-hari-cell input::placeholder { color: var(--border-color); }
        .pg-hari-cell input:focus { outline: none; color: var(--accent-color); }
        .pg-save-btn {
            width: 100%; border: none; border-radius: 14px; padding: 14px; margin-top: 18px;
            background: var(--accent-color); color: #fff; font-size: 14.5px; font-weight: 700;
            cursor: pointer; transition: opacity .2s ease;
        }
        .pg-save-btn:active { opacity: .85; }
        .pg-save-btn:disabled { opacity: .6; cursor: default; }
        .pg-reset-link {
            display: block; width: 100%; background: none; border: none; cursor: pointer;
            font-size: 12px; font-weight: 600; color: var(--light-text);
            text-align: center; padding: 12px 0 0; text-decoration: underline; text-underline-offset: 2px;
        }
        .pg-status { margin-top: 8px; font-size: 12px; text-align: center; min-height: 16px; font-weight: 600; }
        /* ===== END PENGGAJIAN (Admin) ===== */

        /* ===== FOTO PROFIL — clean ===== */
        .foto-profile-wrap { position: relative; width: 116px; height: 116px; margin: 14px auto 16px; }
        .foto-profile-circle { width: 116px; height: 116px; border-radius: 50%; background: linear-gradient(135deg, var(--accent-color), #4fc3f7); display: flex; align-items: center; justify-content: center; overflow: hidden; box-shadow: 0 6px 20px rgba(var(--accent-rgb),0.28); }
        .foto-profile-circle img { width: 100%; height: 100%; object-fit: cover; }
        .foto-profile-circle i { color: #fff; font-size: 2.5rem; }
        .foto-profile-spinner { position: absolute; inset: 0; border-radius: 50%; background: rgba(0,0,0,0.45); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1.3rem; }
        .foto-profile-spinner.hidden { display: none; }
        .foto-profile-camera-btn { position: absolute; right: 2px; bottom: 2px; width: 34px; height: 34px; border-radius: 50%; background: var(--accent-color); border: 3px solid var(--primary-color); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 0.8rem; box-shadow: 0 2px 8px rgba(0,0,0,0.2); }
        .foto-profile-camera-btn:hover { filter: brightness(1.08); }
        .foto-profile-remove-link { background: none; border: none; color: var(--danger-color); font-size: 0.8rem; font-weight: 600; cursor: pointer; padding: 6px 10px; }
        .foto-profile-remove-link:hover { text-decoration: underline; }
        /* ===== END FOTO PROFIL ===== */

        /* ===== CATATAN — gaya Pre-Order: tab, kartu ramping, detail read-only ===== */
        .catatan-popup-improved .popup-content { max-height: 86vh; display: flex; flex-direction: column; background: var(--primary-color); }
        .catatan-popup-improved .popup-header { border-bottom: 1px solid var(--border-color); }
        .catatan-popup-improved .popup-body { padding: 0 !important; flex: 1; min-height: 0; overflow-y: auto; position: relative; background: var(--bg-color, var(--primary-color)); }
        #catatanListView, #catatanEditorView { display: flex; flex-direction: column; min-height: 100%; }

        /* ── Toolbar ringkas: jumlah catatan ── */
        .catatan-list-toolbar {
            display: flex; align-items: center; justify-content: space-between;
            padding: 0 18px 10px; font-size: 0.7rem; color: var(--light-text);
            font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em;
        }

        /* ── List & Card ramping (mengikuti gaya po-card-min) ── */
        .catatan-list { padding: 0 16px 90px; display: flex; flex-direction: column; gap: 8px; }
        .catatan-card {
            display: flex; align-items: center; gap: 10px; padding: 11px 12px;
            border-radius: 12px; border: 1px solid var(--border-color);
            background: var(--primary-color);
            cursor: pointer; transition: var(--transition);
            overflow: hidden;
        }
        .catatan-card:active { background: rgba(var(--accent-rgb),0.05); }
        .catatan-card-body { flex: 1; min-width: 0; }
        .catatan-card-title-row { display: flex; align-items: center; gap: 6px; }
        .catatan-card-title { font-size: 0.9rem; font-weight: 700; color: var(--text-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; letter-spacing: -0.005em; }
        .catatan-card-title.empty { color: var(--light-text); font-weight: 500; font-style: italic; }
        .catatan-card-pin-icon { color: var(--accent-color); font-size: 0.68rem; flex-shrink: 0; }
        .catatan-card-snippet { font-size: 0.78rem; color: var(--light-text); margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .catatan-card-meta { font-size: 0.7rem; color: var(--light-text); margin-top: 4px; opacity: 0.75; display: flex; align-items: center; gap: 5px; }
        .catatan-card-meta i { font-size: 0.64rem; }
        .catatan-card-chevron { color: var(--light-text); font-size: 0.75rem; flex-shrink: 0; opacity: 0.5; }
        .catatan-card-del-btn { flex-shrink: 0; }

        /* ── Empty state ── */
        .catatan-empty { text-align: center; padding: 60px 24px; color: var(--light-text); }
        .catatan-empty i { font-size: 1.9rem; opacity: 0.28; margin-bottom: 12px; display: block; }
        .catatan-empty p { font-size: 0.82rem; margin: 0; line-height: 1.6; }

        /* ── FAB ── */
        .catatan-fab {
            position: absolute; right: 18px; bottom: 18px;
            width: 52px; height: 52px; border-radius: 50%;
            background: var(--accent-color); color: #fff; border: none;
            font-size: 1.05rem;
            box-shadow: 0 6px 18px rgba(var(--accent-rgb),0.38);
            cursor: pointer; display: flex; align-items: center; justify-content: center;
            transition: transform 0.15s, box-shadow 0.15s;
        }
        .catatan-fab:hover { transform: scale(1.06); box-shadow: 0 8px 22px rgba(var(--accent-rgb),0.46); }
        .catatan-fab:active { transform: scale(0.96); }

        /* ── Editor header ── */
        .catatan-editor-header {
            display: flex; align-items: center; gap: 4px;
            padding: 10px 12px; border-bottom: 1px solid var(--border-color);
            background: var(--primary-color);
        }
        .catatan-editor-back, .catatan-editor-pin, .catatan-editor-delete {
            background: none; border: none; color: var(--icon-color);
            font-size: 0.92rem; cursor: pointer; padding: 9px; border-radius: 9px;
            transition: background 0.15s, color 0.15s; flex-shrink: 0;
            display: flex; align-items: center; justify-content: center;
        }
        .catatan-editor-back:hover, .catatan-editor-pin:hover, .catatan-editor-delete:hover { background: rgba(120,120,120,0.1); }
        .catatan-editor-pin.active { color: var(--accent-color); background: rgba(var(--accent-rgb),0.1); }
        .catatan-editor-delete { color: var(--danger-color); margin-left: auto; }
        .catatan-editor-delete:hover { background: rgba(229,57,53,0.1); }
        .catatan-editor-heading { flex: 1; text-align: center; font-size: 0.85rem; font-weight: 700; color: var(--text-color); }

        /* ── Editor body ── */
        .catatan-title-input {
            width: 100%; border: none; background: transparent;
            font-size: 1.08rem; font-weight: 700; padding: 18px 18px 4px;
            color: var(--text-color); font-family: 'Montserrat', sans-serif; letter-spacing: -0.01em;
        }
        .catatan-title-input::placeholder { color: var(--light-text); font-weight: 600; }
        .catatan-title-input:focus { outline: none; box-shadow: none; }
        .catatan-textarea-improved {
            flex: 1; width: 100%; min-height: 220px;
            padding: 8px 18px 16px; border: none;
            background: transparent; color: var(--text-color);
            font-family: 'Inter', sans-serif; font-size: 0.9rem;
            line-height: 1.75; resize: none;
        }
        .catatan-textarea-improved::placeholder { color: var(--light-text); }
        .catatan-textarea-improved:focus { outline: none; }

        /* ── Editor footer ── */
        .catatan-footer {
            display: flex; align-items: center; justify-content: space-between;
            padding: 12px 18px 16px;
            border-top: 1px solid var(--border-color);
            background: var(--primary-color);
        }
        .catatan-char-count { font-size: 0.72rem; color: var(--light-text); font-weight: 500; }
        .catatan-saved-indicator { font-size: 0.72rem; color: #43a047; min-height: 18px; font-weight: 600; transition: opacity 0.3s; display: flex; align-items: center; gap: 4px; }
        /* ===== END CATATAN POPUP UI ===== */


        /* ===== IMPROVED SUPPLIER KONTAK UI ===== */
        .kontak-shell-improved { display: flex; flex-direction: column; gap: 10px; }
        .kontak-item-card {
            display: flex; align-items: center; gap: 12px;
            background: var(--primary-color); border: 1px solid var(--border-color);
            border-radius: 14px; padding: 12px 14px;
            transition: all 0.18s; cursor: pointer;
        }
        .kontak-item-card:hover { border-color: var(--accent-color); box-shadow: 0 2px 12px rgba(var(--accent-rgb),0.12); }
        .kontak-avatar {
            width: 44px; height: 44px; border-radius: 12px;
            display: flex; align-items: center; justify-content: center;
            font-size: 1rem; flex-shrink: 0; font-weight: 700;
            background: rgba(var(--accent-rgb),0.1); color: var(--accent-color);
        }
        .kontak-info { flex: 1; min-width: 0; }
        .kontak-nama { font-size: 0.9rem; font-weight: 700; color: var(--text-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .kontak-telepon { font-size: 0.78rem; color: var(--light-text); margin-top: 2px; }
        .kontak-action-btns { display: flex; gap: 6px; }
        .kontak-call-btn { width: 36px; height: 36px; border-radius: 10px; border: none; background: rgba(76,175,80,0.12); color: #388e3c; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; transition: all 0.15s; }
        .kontak-call-btn:hover { background: #388e3c; color: #fff; }
        .kontak-wa-btn { width: 36px; height: 36px; border-radius: 10px; border: none; background: rgba(37,211,102,0.12); color: #25d366; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; transition: all 0.15s; }
        .kontak-wa-btn:hover { background: #25d366; color: #fff; }
        .kontak-add-btn {
            display: flex; align-items: center; justify-content: center; gap: 8px;
            padding: 12px; border: 2px dashed var(--border-color); border-radius: 14px;
            background: none; color: var(--light-text); cursor: pointer;
            font-size: 0.85rem; font-weight: 600; transition: all 0.18s; width: 100%;
        }
        .kontak-add-btn:hover { border-color: var(--accent-color); color: var(--accent-color); }
        /* ===== END SUPPLIER KONTAK UI ===== */

        /* ===== STOK TAB: DAFTAR KONTAK - Phone Contacts App Style ===== */
        .kontak-alpha-group { margin-bottom: 2px; }
        .kontak-alpha-header {
            font-size: 0.68rem; font-weight: 700;
            color: var(--light-text); letter-spacing: 0.09em;
            padding: 8px 14px 5px; text-transform: uppercase;
            background: transparent;
        }
        .stok-kontak-item {
            display: flex; align-items: center; gap: 13px;
            padding: 11px 14px;
            border-bottom: 1px solid var(--border-color);
            transition: background 0.13s;
            background: var(--primary-color);
        }
        .stok-kontak-item:last-child { border-bottom: none; }
        .stok-kontak-item:hover { background: rgba(var(--accent-rgb),0.04); }
        .stok-kontak-item:active { background: rgba(var(--accent-rgb),0.09); }
        .stok-kontak-search-wrap {
            position: sticky; top: -1px; z-index: 5;
            background: var(--primary-color);
            padding: 0 0 10px;
            border-bottom: 1px solid var(--border-color);
            margin-bottom: 8px;
        }
        .stok-kontak-search-inner {
            display: flex; align-items: center; gap: 8px;
            background: rgba(0,0,0,0.04);
            border: 1px solid var(--border-color);
            border-radius: 12px; padding: 9px 14px;
        }
        .dark-mode .stok-kontak-search-inner { background: rgba(255,255,255,0.05); }
        .stok-kontak-search-inner i { color: var(--light-text); font-size: 0.85rem; flex-shrink:0; }
        .stok-kontak-search-inner input {
            border: none; background: none; outline: none;
            color: var(--text-color); font-size: 0.9rem;
            padding: 0; box-shadow: none; width: 100%; flex: 1;
        }
        /* FAB button */
        #stokKontakFab {
            position: fixed; bottom: 88px; right: 18px;
            width: 56px; height: 56px; border-radius: 50%;
            background: var(--accent-color); color: #fff;
            border: none;
            box-shadow: 0 4px 16px rgba(var(--accent-rgb),0.45);
            font-size: 1.4rem; cursor: pointer;
            display: none; align-items: center; justify-content: center;
            z-index: 500;
            transition: transform 0.18s, box-shadow 0.18s, background 0.15s;
        }
        #stokKontakFab:hover { transform: scale(1.09); box-shadow: 0 6px 22px rgba(var(--accent-rgb),0.55); }
        #stokKontakFab:active { transform: scale(0.94); }
        body.theme-oneui #stokKontakFab { border-radius: 18px !important; }
        body.theme-ios #stokKontakFab { border-radius: 16px !important; background: #007aff !important; }
        /* ===== ACTION SHEET KONTAK ===== */
        #kontakActionSheet {
            position: fixed; inset: 0; z-index: 4000;
            display: none; align-items: flex-end; justify-content: center;
        }
        #kontakActionSheet.open { display: flex; }
        .kontak-sheet-backdrop {
            position: absolute; inset: 0; background: rgba(0,0,0,0.42);
        }
        .kontak-sheet-box {
            position: relative; background: var(--primary-color);
            border-radius: 20px 20px 0 0; width: 100%; max-width: 480px;
            padding: 10px 0 calc(env(safe-area-inset-bottom,0px) + 16px);
            box-shadow: 0 -4px 28px rgba(0,0,0,0.18);
            z-index: 1;
            animation: sheetSlideUp 0.22s cubic-bezier(.4,0,.2,1) both;
        }
        @keyframes sheetSlideUp {
            from { transform: translateY(100%); opacity: 0; }
            to   { transform: translateY(0);    opacity: 1; }
        }
        .kontak-sheet-handle { width: 36px; height: 4px; border-radius: 2px;
            background: var(--border-color); margin: 0 auto 10px; }
        .kontak-sheet-name {
            font-family: 'Montserrat', sans-serif; font-weight: 700;
            font-size: 1rem; color: var(--text-color);
            padding: 4px 20px 10px; border-bottom: 1px solid var(--border-color);
        }
        .kontak-sheet-phone {
            font-size: 0.78rem; color: var(--light-text); font-weight: 400;
            margin-top: 2px;
        }
        .kontak-sheet-btn {
            display: flex; align-items: center; gap: 14px;
            width: 100%; padding: 14px 20px; border: none; background: none;
            text-align: left; cursor: pointer; color: var(--text-color);
            font-size: 0.93rem; font-weight: 500; transition: background 0.13s;
            font-family: 'Inter', sans-serif;
        }
        .kontak-sheet-btn:hover, .kontak-sheet-btn:active { background: rgba(var(--accent-rgb),0.07); }
        .kontak-sheet-btn-icon {
            width: 36px; height: 36px; border-radius: 10px;
            display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0;
        }
        .kontak-sheet-btn-icon.wa  { background: rgba(37,211,102,0.14); color: #25d366; }
        .kontak-sheet-btn-icon.edit{ background: rgba(var(--accent-rgb),0.14); color: #0288d1; }
        .kontak-sheet-btn-icon.del { background: rgba(244,67,54,0.12);  color: var(--danger-color); }
        .kontak-sheet-divider { height: 1px; background: var(--border-color); margin: 2px 0; }
        /* ===== END ACTION SHEET KONTAK ===== */
        /* ===== END STOK KONTAK ===== */


        .face-camera-shell {
            position: relative;
            width: 100%;
            max-width: 560px;
            margin: 0 auto;
            border-radius: 22px;
            overflow: hidden;
            background: #000;
            box-shadow: var(--shadow);
            aspect-ratio: 3 / 4;
        }
        .face-camera-video {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transform: none !important;
            background: #000;
        }
        .face-overlay-canvas {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
        }
        .face-frame {
            position: absolute;
            inset: 12%;
            border: 2px solid rgba(255,255,255,0.8);
            border-radius: 24px;
            box-shadow: inset 0 0 0 1px rgba(255,255,255,0.15), 0 0 0 9999px rgba(0,0,0,0.12);
            pointer-events: none;
            transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
            animation: facePulse 1.6s ease-in-out infinite;
        }
        .face-frame.detected {
            border-color: var(--success-color);
            box-shadow: inset 0 0 0 1px rgba(76,175,80,0.35), 0 0 22px rgba(76,175,80,0.35), 0 0 0 9999px rgba(0,0,0,0.08);
            animation: none;
        }
        .face-scan-line {
            position: absolute;
            left: 14%;
            right: 14%;
            height: 2px;
            top: 18%;
            background: linear-gradient(90deg, transparent, rgba(79,195,247,0.8), transparent);
            pointer-events: none;
            animation: faceScan 2.2s linear infinite;
            opacity: .85;
        }

        #absensiVideo, #absensiOverlay, #faceFrame, #faceScanLine,
        #faceEnrollVideo, #faceEnrollOverlay, #faceEnrollFrame {
            transform: scaleX(-1);
            transform-origin: center center;
        }
        @keyframes facePulse {
            0%, 100% { transform: scale(1); opacity: .9; }
            50% { transform: scale(1.01); opacity: 1; }
        }
        @keyframes faceScan {
            0% { top: 18%; opacity: .1; }
            20% { opacity: .9; }
            50% { top: 72%; opacity: .8; }
            100% { top: 18%; opacity: .1; }
        }
        .face-chip {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 6px 10px;
            border-radius: 999px;
            background: rgba(79,195,247,0.12);
            color: var(--accent-color);
            font-size: 12px;
            font-weight: 600;
        }
        .face-chip.success {
            background: rgba(76,175,80,0.12);
            color: var(--success-color);
        }
        /* ===== MAP PICKER MODAL ===== */
        .map-picker-modal {
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.6);
            z-index: 2000;
            display: flex;
            align-items: flex-end;
            justify-content: center;
            opacity: 0;
            visibility: hidden;
            transition: opacity 0.25s, visibility 0.25s;
        }
        .map-picker-modal.active {
            opacity: 1;
            visibility: visible;
        }
        .map-picker-sheet {
            background: var(--primary-color);
            border-radius: 20px 20px 0 0;
            width: 100%;
            max-width: 640px;
            display: flex;
            flex-direction: column;
            max-height: 92vh;
            box-shadow: 0 -4px 32px rgba(0,0,0,0.25);
            transform: translateY(30px);
            transition: transform 0.25s ease;
        }
        .map-picker-modal.active .map-picker-sheet {
            transform: translateY(0);
        }
        .map-picker-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 14px 18px 10px;
            border-bottom: 1px solid var(--border-color);
            flex-shrink: 0;
        }
        .map-picker-title {
            font-weight: 700;
            font-size: 1rem;
        }
        .map-picker-close {
            background: none;
            border: none;
            font-size: 1.3rem;
            color: var(--icon-color);
            cursor: pointer;
            padding: 4px 8px;
        }
        #mapPickerContainer {
            width: 100%;
            height: 100%;
            min-height: 300px;
        }
        .map-picker-info {
            padding: 10px 16px;
            font-size: 12px;
            color: var(--light-text);
            border-top: 1px solid var(--border-color);
            display: flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
        }
        .map-picker-coords {
            font-family: monospace;
            font-size: 12px;
            color: var(--accent-color);
            font-weight: 600;
        }
        .map-picker-actions {
            display: flex;
            gap: 10px;
            padding: 10px 16px 18px;
            flex-shrink: 0;
        }
        .map-picker-crosshair {
            position: absolute;
            inset: 0;
            pointer-events: none;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 10;
        }
        .map-picker-crosshair::before,
        .map-picker-crosshair::after {
            content: '';
            position: absolute;
            background: rgba(var(--accent-rgb),0.85);
        }
        .map-picker-crosshair::before {
            width: 2px;
            height: 28px;
        }
        .map-picker-crosshair::after {
            width: 28px;
            height: 2px;
        }
        .map-picker-pin {
            position: absolute;
            left: 50%;
            top: 50%;
            width: 14px;
            height: 14px;
            background: var(--accent-color);
            border: 2px solid #fff;
            border-radius: 50%;
            transform: translate(-50%, -50%);
            box-shadow: 0 0 0 3px rgba(var(--accent-rgb),0.35);
            pointer-events: none;
            z-index: 11;
        }
        #mapPickerContainer .maplibregl-map {
            border-radius: 0;
        }

        /* ===== MULTI-THEME SYSTEM ===== */
        /* Ensure header stays sticky and above canvas */
        .header {
            position: sticky !important;
            top: 0;
            z-index: 100 !important;
            isolation: isolate;
        }
        /* Bottom nav stays fixed and above canvas */
        .bottom-nav {
            z-index: 1000 !important;
            isolation: isolate;
        }
        /* Main content scrolls normally — no position change needed */
        .main-content {
            position: relative;
            z-index: 1;
            isolation: isolate;
        }
        /* Popups above everything */
        .popup, .admin-modal, .map-picker-modal {
            z-index: 9000 !important;
        }
        /* Fix issue 2: platform themes — make body & main-content transparent
           so canvas animation shows through. Cards/elements keep their own bg. */
        body.theme-ios,
        body.theme-oneui,
        body.theme-huawei {
            background-color: transparent !important;
        }
        body.theme-ios .main-content,
        body.theme-oneui .main-content,
        body.theme-huawei .main-content {
            background: transparent !important;
        }

        /* ===== DARK MODE FIX untuk 3 Platform UI ===== */
        /* Light mode: semi-transparent overlay agar canvas terlihat tapi konten tetap terbaca */
        body.theme-oneui .main-content {
            background: rgba(244,244,244,0.88) !important;
        }
        body.theme-huawei .main-content {
            background: rgba(242,243,245,0.88) !important;
        }
        body.theme-ios .main-content {
            background: rgba(242,242,247,0.88) !important;
        }

        /* Dark mode: overlay gelap agar teks tetap terbaca — mengikuti varian gelap aktif (Temaram/Lampu Mati) */
        body.theme-oneui.dark-mode .main-content,
        body.theme-huawei.dark-mode .main-content,
        body.theme-ios.dark-mode .main-content {
            background: var(--primary-color) !important;
        }

        /* Dark mode body canvas background - harus ada warna gelap di belakang canvas, mengikuti varian aktif */
        body.theme-oneui.dark-mode,
        body.theme-huawei.dark-mode,
        body.theme-ios.dark-mode {
            background-color: var(--primary-color) !important;
        }

        /* Fix: input, select, textarea di platform UI dark mode */
        body.theme-oneui.dark-mode input,
        body.theme-oneui.dark-mode select,
        body.theme-oneui.dark-mode textarea,
        body.theme-huawei.dark-mode input,
        body.theme-huawei.dark-mode select,
        body.theme-huawei.dark-mode textarea,
        body.theme-ios.dark-mode input,
        body.theme-ios.dark-mode select,
        body.theme-ios.dark-mode textarea {
            background: rgba(255,255,255,0.08) !important;
            color: var(--text-color) !important;
            border-color: var(--border-color) !important;
        }

        /* Fix: cards, popups, table rows di platform UI dark mode */
        body.theme-oneui.dark-mode .financial-card,
        body.theme-oneui.dark-mode .data-card,
        body.theme-oneui.dark-mode .popup-content,
        body.theme-oneui.dark-mode .ka-filter-bar,
        body.theme-oneui.dark-mode .sensitive-form,
        body.theme-huawei.dark-mode .financial-card,
        body.theme-huawei.dark-mode .data-card,
        body.theme-huawei.dark-mode .popup-content,
        body.theme-huawei.dark-mode .ka-filter-bar,
        body.theme-huawei.dark-mode .sensitive-form,
        body.theme-ios.dark-mode .financial-card,
        body.theme-ios.dark-mode .data-card,
        body.theme-ios.dark-mode .popup-content,
        body.theme-ios.dark-mode .ka-filter-bar,
        body.theme-ios.dark-mode .sensitive-form {
            background: var(--primary-color) !important;
            border-color: var(--border-color) !important;
        }

        /* Fix: tabel rows di dark mode */
        body.theme-oneui.dark-mode td,
        body.theme-huawei.dark-mode td,
        body.theme-ios.dark-mode td {
            background: transparent;
            color: var(--text-color);
        }

        /* Fix: header & bottom-nav tetap solid, mengikuti varian gelap aktif */
        body.theme-oneui.dark-mode .header {
            background: var(--primary-color) !important;
        }
        body.theme-huawei.dark-mode .header {
            background: var(--primary-color) !important;
        }
        /* iOS header sudah diatur di atas */

        /* Fix: section title dan label teks */
        body.theme-oneui.dark-mode .section-title,
        body.theme-huawei.dark-mode .section-title,
        body.theme-ios.dark-mode .section-title {
            color: var(--text-color) !important;
        }
        /* ===== END DARK MODE FIX ===== */

        /* ============================================================
           ONE UI THEME (Samsung One UI 6 style)
           ============================================================ */
        body.theme-oneui {
            --primary-color: #f4f4f4;
            --secondary-color: #1259c3;
            --accent-color: #1259c3; --accent-rgb: 18, 89, 195;
            --text-color: #1a1a1a;
            --light-text: #6b6b6b;
            --border-color: #e0e0e0;
            --shadow: 0 2px 16px rgba(0,0,0,0.08);
            --danger-color: #e53935;
            --success-color: #00897b;
            font-family: 'SamsungOne', 'Inter', sans-serif !important;
        }
        body.theme-oneui.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #4a90d9;
            --accent-color: #4a90d9; --accent-rgb: 74, 144, 217;
            --text-color: #f5f5f5;
            --light-text: #8e8e93;
            --border-color: #333333;
            --shadow: 0 2px 16px rgba(0,0,0,0.4);
        }
        body.theme-oneui.dark-mode.dark-off {
            --primary-color: #000000;
            --border-color: #1c1c1c;
        }

        /* One UI: Header — large rounded pill + gradient accent bar */
        body.theme-oneui .header {
            background: var(--primary-color) !important;
            border-bottom: none !important;
            box-shadow: none !important;
            padding: 10px 0 0 !important;
        }
        body.theme-oneui .header::after {
            content: '';
            display: block;
            height: 3px;
            background: linear-gradient(90deg, #1259c3 0%, #4a90d9 50%, #1259c3 100%);
            border-radius: 0 0 2px 2px;
            margin-top: 10px;
        }
        body.theme-oneui .logo {
            font-size: 1.6rem !important;
            font-weight: 700 !important;
            color: var(--accent-color) !important;
            letter-spacing: -0.5px !important;
        }
        body.theme-oneui .icon-btn {
            border-radius: 50% !important;
            background: rgba(var(--accent-rgb), 0.08) !important;
            color: var(--accent-color) !important;
        }
        body.theme-oneui.dark-mode .icon-btn {
            background: rgba(var(--accent-rgb), 0.12) !important;
        }

        /* One UI: Bottom Nav — pill shape with indicator dot */
        body.theme-oneui .bottom-nav {
            background: var(--primary-color) !important;
            border-top: none !important;
            box-shadow: 0 -1px 0 var(--border-color), 0 -4px 20px rgba(0,0,0,0.06) !important;
            padding: 6px 4px 10px !important;
            border-radius: 0 !important;
        }
        body.theme-oneui .bottom-nav-item {
            border-radius: 24px !important;
            padding: 6px 12px !important;
            gap: 0 !important;
            transition: background 0.2s ease, color 0.2s ease !important;
            min-width: 48px;
        }
        body.theme-oneui .bottom-nav-item i {
            font-size: 22px !important;
            margin-bottom: 0 !important;
        }
        body.theme-oneui .bottom-nav-item span:not(.nav-badge) {
            display: none !important;
        }
        body.theme-oneui .bottom-nav-item.active {
            background: rgba(var(--accent-rgb), 0.12) !important;
            color: var(--accent-color) !important;
        }
        body.theme-oneui.dark-mode .bottom-nav-item.active {
            background: rgba(var(--accent-rgb), 0.18) !important;
        }
        /* One UI active indicator dot below icon */
        body.theme-oneui .bottom-nav-item.active::after {
            content: '';
            display: block;
            width: 6px;
            height: 6px;
            background: var(--accent-color);
            border-radius: 50%;
            position: absolute;
            bottom: 2px;
            left: 50%;
            transform: translateX(-50%);
        }

        /* One UI: Cards — extra rounded, soft shadow */
        body.theme-oneui .financial-card,
        body.theme-oneui .data-card,

        /* One UI: Buttons — large, fully rounded */
        body.theme-oneui .btn {
            border-radius: 24px !important;
            font-weight: 600 !important;
            padding: 11px 22px !important;
            letter-spacing: 0.2px !important;
        }
        body.theme-oneui .btn-primary {
            background: var(--accent-color) !important;
            box-shadow: 0 2px 8px rgba(var(--accent-rgb),0.25) !important;
        }

        /* One UI: Inputs — more rounded */
        body.theme-oneui input,
        body.theme-oneui select,
        body.theme-oneui textarea {
            border-radius: 14px !important;
            background: rgba(0,0,0,0.04) !important;
            border-color: transparent !important;
            padding: 12px 16px !important;
        }
        body.theme-oneui.dark-mode input,
        body.theme-oneui.dark-mode select,
        body.theme-oneui.dark-mode textarea {
            background: rgba(255,255,255,0.06) !important;
        }

        /* One UI: Tabs — pill style */
        body.theme-oneui .tab {
            border-radius: 20px !important;
            border-bottom: none !important;
            padding: 8px 18px !important;
            margin: 2px !important;
        }
        body.theme-oneui .tab.active {
            background: var(--accent-color) !important;
            color: #fff !important;
            border-bottom: none !important;
        }
        body.theme-oneui .tabs {
            border-bottom: none !important;
            background: rgba(0,0,0,0.04) !important;
            border-radius: 26px !important;
            padding: 4px !important;
        }
        body.theme-oneui.dark-mode .tabs {
            background: rgba(255,255,255,0.06) !important;
        }

        /* One UI: Popup — extra rounded */
        body.theme-oneui .popup-content {
            border-radius: 24px !important;
        }
        body.theme-oneui .popup-header {
            border-radius: 24px 24px 0 0 !important;
        }

        /* One UI: Table headers */
        body.theme-oneui th {
            background: var(--accent-color) !important;
            border-radius: 0 !important;
        }

        /* One UI: Section title — large font */
        body.theme-oneui .section-title {
            font-size: 2rem !important;
            font-weight: 700 !important;
            letter-spacing: -0.5px !important;
        }

        /* One UI: Table container */
        body.theme-oneui .table-container {
            border-radius: 20px !important;
        }

        /* One UI dark mode */
        body.theme-oneui.dark-mode {
            background-color: var(--primary-color);
        }
        body.theme-oneui.dark-mode .header {
            background: var(--primary-color) !important;
        }
        body.theme-oneui.dark-mode .bottom-nav {
            background: var(--primary-color) !important;
        }
        body.theme-oneui.dark-mode .popup-content {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-oneui.dark-mode table {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-oneui.dark-mode tr:hover {
            background: rgba(255,255,255,0.04) !important;
        }

        /* ============================================================
           HUAWEI / HARMONYOS THEME
           ============================================================ */
        body.theme-huawei {
            --primary-color: #F2F3F5;
            --secondary-color: #0076F6;
            --accent-color: #0076F6; --accent-rgb: 0, 118, 246;
            --text-color: #1A1A1A;
            --light-text: #6B6B6B;
            --border-color: #E2E4E8;
            --shadow: 0 2px 16px rgba(var(--accent-rgb),0.08), 0 1px 4px rgba(0,0,0,0.06);
            --danger-color: #E8002D;
            --success-color: #00C853;
            -webkit-font-smoothing: antialiased !important;
        }
        body.theme-huawei.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #40AAFF;
            --accent-color: #40AAFF; --accent-rgb: 64, 170, 255;
            --text-color: #EEEEF0;
            --light-text: #8A8A8E;
            --border-color: #333333;
            --shadow: 0 2px 16px rgba(0,0,0,0.4), 0 1px 4px rgba(0,0,0,0.3);
        }
        body.theme-huawei.dark-mode.dark-off {
            --primary-color: #000000;
            --border-color: #1c1c1c;
        }

        /* Huawei: Header — frosted glass HarmonyOS style */
        body.theme-huawei .header {
            background: rgba(242,243,245,0.92) !important;
            -webkit-backdrop-filter: blur(24px) saturate(200%) !important;
            backdrop-filter: blur(24px) saturate(200%) !important;
            border-bottom: 0.5px solid rgba(226,228,232,0.6) !important;
            box-shadow: none !important;
        }
        body.theme-huawei.dark-mode .header {
            background: rgba(22,22,24,0.92) !important;
            border-bottom-color: rgba(44,44,48,0.8) !important;
        }
        body.theme-huawei .logo {
            font-size: 1.3rem !important;
            font-weight: 700 !important;
            color: var(--accent-color) !important;
            letter-spacing: -0.3px !important;
        }
        body.theme-huawei .icon-btn {
            color: var(--accent-color) !important;
            border-radius: 14px !important;
        }
        body.theme-huawei .icon-btn:hover {
            background: rgba(var(--accent-rgb),0.08) !important;
        }
        body.theme-huawei.dark-mode .icon-btn:hover {
            background: rgba(var(--accent-rgb),0.12) !important;
        }

        /* Huawei: Bottom Nav — pill-style HarmonyOS nav */
        body.theme-huawei .bottom-nav {
            background: rgba(242,243,245,0.95) !important;
            -webkit-backdrop-filter: blur(24px) saturate(200%) !important;
            backdrop-filter: blur(24px) saturate(200%) !important;
            border-top: 0.5px solid rgba(226,228,232,0.5) !important;
            box-shadow: 0 -1px 20px rgba(0,0,0,0.06) !important;
            padding: 10px 8px 18px !important;
        }
        body.theme-huawei.dark-mode .bottom-nav {
            background: rgba(22,22,24,0.95) !important;
            border-top-color: rgba(44,44,48,0.6) !important;
        }
        body.theme-huawei .bottom-nav-item {
            gap: 3px !important;
            border-radius: 16px !important;
            padding: 6px 12px !important;
            transition: background 0.2s, color 0.2s !important;
        }
        body.theme-huawei .bottom-nav-item i {
            font-size: 20px !important;
            margin-bottom: 0 !important;
        }
        body.theme-huawei .bottom-nav-item span:not(.nav-badge) {
            font-size: 10px !important;
            font-weight: 600 !important;
            letter-spacing: 0 !important;
        }
        body.theme-huawei .bottom-nav-item.active {
            color: var(--accent-color) !important;
            background: rgba(var(--accent-rgb),0.1) !important;
            border-radius: 16px !important;
        }
        body.theme-huawei.dark-mode .bottom-nav-item.active {
            background: rgba(var(--accent-rgb),0.15) !important;
        }
        body.theme-huawei .bottom-nav-item:hover {
            background: rgba(var(--accent-rgb),0.06) !important;
        }

        /* Huawei: Cards — super-ellipse, soft shadow */
        body.theme-huawei .financial-card,
        body.theme-huawei .data-card {
            border-radius: 20px !important;
            background: #ffffff !important;
            box-shadow: 0 2px 16px rgba(0,0,0,0.06) !important;
            border: none !important;
        }
        body.theme-huawei.dark-mode .financial-card,
        body.theme-huawei.dark-mode .data-card {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
            box-shadow: 0 2px 16px rgba(0,0,0,0.3) !important;
        }
        body.theme-huawei .btn-primary {
            background: var(--accent-color) !important;
            color: #fff !important;
            border-radius: 20px !important;
            box-shadow: 0 4px 14px rgba(var(--accent-rgb),0.25) !important;
            font-weight: 600 !important;
        }
        body.theme-huawei .btn-secondary {
            border-color: var(--accent-color) !important;
            color: var(--accent-color) !important;
            border-radius: 20px !important;
        }
        body.theme-huawei .btn-danger {
            border-radius: 20px !important;
        }

        /* Huawei: Control button */
        body.theme-huawei .control-btn {
            border-radius: 16px !important;
            background: var(--accent-color) !important;
            box-shadow: 0 2px 10px rgba(var(--accent-rgb),0.2) !important;
        }

        /* Huawei: Inputs — rounded with soft border */
        body.theme-huawei input,
        body.theme-huawei select,
        body.theme-huawei textarea {
            border-radius: 14px !important;
            border: 1.5px solid var(--border-color) !important;
            background: #ffffff !important;
            padding: 11px 14px !important;
        }
        body.theme-huawei.dark-mode input,
        body.theme-huawei.dark-mode select,
        body.theme-huawei.dark-mode textarea {
            background: rgba(255,255,255,0.06) !important;
            border-color: var(--border-color) !important;
            color: var(--text-color) !important;
        }
        body.theme-huawei input:focus,
        body.theme-huawei select:focus,
        body.theme-huawei textarea:focus {
            border-color: var(--accent-color) !important;
            box-shadow: 0 0 0 3px rgba(var(--accent-rgb),0.12) !important;
            background: #ffffff !important;
        }
        body.theme-huawei.dark-mode input:focus,
        body.theme-huawei.dark-mode select:focus,
        body.theme-huawei.dark-mode textarea:focus {
            background: rgba(255,255,255,0.06) !important;
        }

        /* Huawei: Tabs — rounded pill style */
        body.theme-huawei .tabs {
            border-bottom: none !important;
            background: rgba(0,0,0,0.05) !important;
            border-radius: 16px !important;
            padding: 4px !important;
        }
        body.theme-huawei.dark-mode .tabs {
            background: rgba(255,255,255,0.07) !important;
        }
        body.theme-huawei .tab {
            border-radius: 12px !important;
            border: none !important;
            margin: 2px !important;
            font-weight: 500 !important;
            font-size: 0.85rem !important;
        }
        body.theme-huawei .tab.active {
            background: #ffffff !important;
            color: var(--accent-color) !important;
            border: none !important;
            box-shadow: 0 2px 8px rgba(0,0,0,0.12) !important;
            font-weight: 700 !important;
        }
        body.theme-huawei.dark-mode .tab {
            background: transparent !important;
        }
        body.theme-huawei.dark-mode .tab.active {
            background: rgba(255,255,255,0.1) !important;
            color: var(--accent-color) !important;
            box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
        }

        /* Huawei: Table header */
        body.theme-huawei th {
            background: var(--accent-color) !important;
            color: #ffffff !important;
            font-size: 0.8rem !important;
            font-weight: 600 !important;
            letter-spacing: 0.03em !important;
        }
        body.theme-huawei.dark-mode th {
            background: #004FAD !important;
        }
        body.theme-huawei td {
            border-bottom: 0.5px solid var(--border-color) !important;
        }
        body.theme-huawei .table-container {
            border-radius: 20px !important;
            box-shadow: 0 2px 16px rgba(0,0,0,0.06) !important;
        }
        body.theme-huawei table {
            background: #ffffff !important;
        }
        body.theme-huawei.dark-mode table {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }

        /* Huawei: Popup */
        body.theme-huawei .popup-content {
            border-radius: 24px !important;
            background: #F2F3F5 !important;
        }
        body.theme-huawei.dark-mode .popup-content {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-huawei .popup-header {
            border-bottom: 0.5px solid var(--border-color) !important;
            border-radius: 24px 24px 0 0 !important;
        }

        /* Huawei: Section title */
        body.theme-huawei .section-title {
            font-size: 1.5rem !important;
            font-weight: 700 !important;
            letter-spacing: -0.2px !important;
        }

        /* Huawei: Sensitive tab */
        body.theme-huawei .sensitive-tab-btn {
            border-radius: 12px !important;
        }
        body.theme-huawei .sensitive-tab-btn.active {
            background: var(--accent-color) !important;
            box-shadow: 0 2px 10px rgba(var(--accent-rgb),0.25) !important;
        }

        /* Huawei dark extras */
        body.theme-huawei.dark-mode .header,
        body.theme-huawei.dark-mode .bottom-nav {
            background: var(--primary-color) !important;
        }
        body.theme-huawei.dark-mode tr:hover {
            background: rgba(255,255,255,0.04) !important;
        }
        body.theme-huawei {
            background-color: #F2F3F5;
        }
        body.theme-huawei.dark-mode {
            background-color: var(--primary-color);
        }

        /* ============================================================
           iOS THEME (Apple Human Interface Guidelines)
           ============================================================ */
        body.theme-ios {
            --primary-color: #f2f2f7;
            --secondary-color: #007aff;
            --accent-color: #007aff; --accent-rgb: 0, 122, 255;
            --text-color: #000000;
            --light-text: #6c6c70;
            --border-color: #d1d1d6;
            --shadow: 0 1px 0 rgba(0,0,0,0.1);
            --danger-color: #ff3b30;
            --success-color: #34c759;
            -webkit-font-smoothing: antialiased !important;
        }
        body.theme-ios.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #0a84ff;
            --accent-color: #0a84ff; --accent-rgb: 10, 132, 255;
            --text-color: #ffffff;
            --light-text: #8e8e93;
            --border-color: #38383a;
            --shadow: 0 1px 0 rgba(255,255,255,0.05);
        }
        body.theme-ios.dark-mode.dark-off {
            --primary-color: #000000;
            --border-color: #1c1c1c;
        }

        /* iOS: Header — Navigation bar style (solid, thin separator) */
        body.theme-ios .header {
            background: rgba(242,242,247,0.85) !important;
            -webkit-backdrop-filter: blur(20px) saturate(180%) !important;
            backdrop-filter: blur(20px) saturate(180%) !important;
            border-bottom: 0.5px solid var(--border-color) !important;
            box-shadow: none !important;
            padding: 10px 0 !important;
        }
        body.theme-ios.dark-mode .header {
            background: var(--primary-color) !important;
        }
        body.theme-ios .logo {
            font-size: 1.1rem !important;
            font-weight: 600 !important;
            color: var(--text-color) !important;
            letter-spacing: -0.2px !important;
        }
        body.theme-ios .icon-btn {
            color: var(--accent-color) !important;
            border-radius: 50% !important;
            font-size: 1.1rem !important;
        }
        body.theme-ios .icon-btn:hover {
            background: rgba(var(--accent-rgb),0.1) !important;
        }

        /* iOS: Bottom Nav — Tab Bar style */
        body.theme-ios .bottom-nav {
            background: rgba(242,242,247,0.9) !important;
            -webkit-backdrop-filter: blur(20px) saturate(180%) !important;
            backdrop-filter: blur(20px) saturate(180%) !important;
            border-top: 0.5px solid var(--border-color) !important;
            box-shadow: none !important;
            padding: 8px 0 16px !important;
        }
        body.theme-ios.dark-mode .bottom-nav {
            background: var(--primary-color) !important;
        }
        body.theme-ios .bottom-nav-item {
            gap: 2px !important;
        }
        body.theme-ios .bottom-nav-item i {
            font-size: 22px !important;
            margin-bottom: 0 !important;
        }
        body.theme-ios .bottom-nav-item span:not(.nav-badge) {
            font-size: 10px !important;
            font-weight: 500 !important;
            letter-spacing: -0.1px !important;
        }
        body.theme-ios .bottom-nav-item.active {
            color: var(--accent-color) !important;
        }
        body.theme-ios .bottom-nav-item:hover {
            background: transparent !important;
        }
        /* iOS: Active tab — icon scales slightly */
        body.theme-ios .bottom-nav-item.active i {
            transform: scale(1.05);
        }

        /* iOS: Cards — Grouped/Inset style */
        body.theme-ios .financial-card {
            border-radius: 12px !important;
            box-shadow: none !important;
            border: none !important;
            background: #ffffff !important;
        }
        body.theme-ios.dark-mode .financial-card {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-ios .data-card {
            border-radius: 12px !important;
            box-shadow: none !important;
            border: none !important;
            background: #ffffff !important;
        }
        body.theme-ios.dark-mode .data-card {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-ios .btn-primary {
            background: var(--accent-color) !important;
            border-radius: 10px !important;
            box-shadow: none !important;
        }
        body.theme-ios .btn-secondary {
            border-color: var(--accent-color) !important;
            color: var(--accent-color) !important;
            border-radius: 10px !important;
        }
        body.theme-ios .btn-danger {
            background: var(--danger-color) !important;
            border-radius: 10px !important;
        }

        /* iOS: Inputs — Flat, no visible border except bottom */
        body.theme-ios input,
        body.theme-ios select,
        body.theme-ios textarea {
            border-radius: 10px !important;
            border: none !important;
            background: #ffffff !important;
            padding: 12px 14px !important;
            box-shadow: none !important;
        }
        body.theme-ios.dark-mode input,
        body.theme-ios.dark-mode select,
        body.theme-ios.dark-mode textarea {
            background: rgba(255,255,255,0.06) !important;
            color: var(--text-color) !important;
        }
        body.theme-ios input:focus,
        body.theme-ios select:focus,
        body.theme-ios textarea:focus {
            border: 1px solid var(--accent-color) !important;
            box-shadow: 0 0 0 3px rgba(var(--accent-rgb),0.15) !important;
        }

        /* iOS: Tabs — Segmented Control */
        body.theme-ios .tabs {
            border-bottom: none !important;
            background: transparent !important;
            padding: 4px 0 !important;
        }
        body.theme-ios .tab {
            background: rgba(118,118,128,0.12) !important;
            border-radius: 8px !important;
            border: none !important;
            margin: 2px !important;
            font-size: 0.85rem !important;
            font-weight: 500 !important;
        }
        body.theme-ios .tab.active {
            background: #ffffff !important;
            color: var(--text-color) !important;
            border: none !important;
            box-shadow: 0 1px 4px rgba(0,0,0,0.15) !important;
        }
        body.theme-ios.dark-mode .tab {
            background: rgba(118,118,128,0.24) !important;
        }
        body.theme-ios.dark-mode .tab.active {
            background: rgba(255,255,255,0.1) !important;
            color: var(--text-color) !important;
        }

        /* iOS: Table — grouped list style */
        body.theme-ios .table-container {
            border-radius: 12px !important;
            overflow-x: auto !important;
            overflow-y: auto !important;
            box-shadow: none !important;
            -webkit-overflow-scrolling: touch !important;
        }
        body.theme-ios table {
            background: #ffffff !important;
        }
        body.theme-ios.dark-mode table {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-ios th {
            background: #f2f2f7 !important;
            color: var(--light-text) !important;
            font-size: 0.75rem !important;
            text-transform: uppercase !important;
            letter-spacing: 0.05em !important;
            font-weight: 600 !important;
        }
        body.theme-ios.dark-mode th {
            background: rgba(255,255,255,0.08) !important;
            color: var(--light-text) !important;
        }
        body.theme-ios td {
            border-bottom: 0.5px solid var(--border-color) !important;
        }

        /* iOS: Popup — Sheet-style */
        body.theme-ios .popup-content {
            border-radius: 20px !important;
            background: #f2f2f7 !important;
        }
        body.theme-ios.dark-mode .popup-content {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
        }
        body.theme-ios .popup-header {
            border-bottom: 0.5px solid var(--border-color) !important;
        }

        /* iOS: Section title — SF Pro style */
        body.theme-ios .section-title {
            font-size: 1.6rem !important;
            font-weight: 700 !important;
            letter-spacing: -0.3px !important;
        }

        /* iOS: Background — transparent to show canvas animation */
        body.theme-ios {
            background-color: transparent;
        }
        body.theme-ios.dark-mode {
            background-color: transparent;
        }

        /* iOS: Main content — handled by the unified dark mode fix block above */

        /* iOS: header stays white card look */
        body.theme-ios .header {
            border-radius: 0 !important;
        }

        /* iOS: Sensitive tabs — iOS segment style */
        body.theme-ios .sensitive-tab-btn {
            border-radius: 8px !important;
        }
        body.theme-ios .sensitive-tab-btn.active {
            background: var(--accent-color) !important;
            box-shadow: none !important;
        }

        /* iOS: Ka filter bar */
        body.theme-ios .ka-filter-bar {
            border-radius: 16px !important;
            background: rgba(118,118,128,0.08) !important;
        }


        /* ============================================================
           MIUI / XIAOMI THEME (soft orange, rounded-square cards)
           ============================================================ */
        body.theme-miui {
            --primary-color: #ffffff;
            --secondary-color: #ff6900;
            --accent-color: #ff6900; --accent-rgb: 255, 105, 0;
            --text-color: #222222;
            --light-text: #7a7a7a;
            --border-color: #eeeeee;
            --shadow: 0 4px 18px rgba(var(--accent-rgb),0.10);
            --danger-color: #ff3b30;
            --success-color: #34a853;
        }
        body.theme-miui.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #ff8a3d;
            --accent-color: #ff8a3d; --accent-rgb: 255, 138, 61;
            --text-color: #f0f0f0;
            --light-text: #9a9a9a;
            --border-color: #333333;
            --shadow: 0 4px 18px rgba(0,0,0,0.4);
        }
        body.theme-miui.dark-mode.dark-off { --primary-color: #000000; --border-color: #1c1c1c; }
        body.theme-miui,
        body.theme-material,
        body.theme-fluent,
        body.theme-mono,
        body.theme-neumorph {
            background-color: transparent !important;
        }
        body.theme-miui .main-content,
        body.theme-material .main-content,
        body.theme-fluent .main-content,
        body.theme-mono .main-content,
        body.theme-neumorph .main-content {
            background: transparent !important;
        }
        body.theme-miui .main-content { background: rgba(255,255,255,0.90) !important; }
        body.theme-material .main-content { background: rgba(254,247,255,0.90) !important; }
        body.theme-fluent .main-content { background: rgba(243,243,243,0.90) !important; }
        body.theme-mono .main-content { background: rgba(255,255,255,0.92) !important; }
        body.theme-neumorph .main-content { background: rgba(230,233,238,0.90) !important; }
        body.theme-miui.dark-mode .main-content,
        body.theme-material.dark-mode .main-content,
        body.theme-fluent.dark-mode .main-content,
        body.theme-mono.dark-mode .main-content {
            background: var(--primary-color) !important;
        }
        body.theme-neumorph.dark-mode .main-content { background: rgba(36,38,46,0.90) !important; }
        body.theme-miui.dark-mode,
        body.theme-material.dark-mode,
        body.theme-fluent.dark-mode,
        body.theme-mono.dark-mode {
            background-color: var(--primary-color) !important;
        }
        body.theme-neumorph.dark-mode { background-color: #24262e !important; }

        body.theme-miui.dark-mode input, body.theme-miui.dark-mode select, body.theme-miui.dark-mode textarea,
        body.theme-material.dark-mode input, body.theme-material.dark-mode select, body.theme-material.dark-mode textarea,
        body.theme-fluent.dark-mode input, body.theme-fluent.dark-mode select, body.theme-fluent.dark-mode textarea,
        body.theme-mono.dark-mode input, body.theme-mono.dark-mode select, body.theme-mono.dark-mode textarea,
        body.theme-neumorph.dark-mode input, body.theme-neumorph.dark-mode select, body.theme-neumorph.dark-mode textarea {
            background: rgba(255,255,255,0.08) !important;
            color: var(--text-color) !important;
            border-color: var(--border-color) !important;
        }
        body.theme-miui.dark-mode .financial-card, body.theme-miui.dark-mode .data-card, body.theme-miui.dark-mode .popup-content, body.theme-miui.dark-mode .ka-filter-bar, body.theme-miui.dark-mode .sensitive-form,
        body.theme-material.dark-mode .financial-card, body.theme-material.dark-mode .data-card, body.theme-material.dark-mode .popup-content, body.theme-material.dark-mode .ka-filter-bar, body.theme-material.dark-mode .sensitive-form,
        body.theme-fluent.dark-mode .financial-card, body.theme-fluent.dark-mode .data-card, body.theme-fluent.dark-mode .popup-content, body.theme-fluent.dark-mode .ka-filter-bar, body.theme-fluent.dark-mode .sensitive-form,
        body.theme-mono.dark-mode .financial-card, body.theme-mono.dark-mode .data-card, body.theme-mono.dark-mode .popup-content, body.theme-mono.dark-mode .ka-filter-bar, body.theme-mono.dark-mode .sensitive-form {
            background: var(--primary-color) !important;
            background-image: linear-gradient(rgba(255,255,255,0.045), rgba(255,255,255,0.045)) !important;
            border-color: var(--border-color) !important;
        }
        body.theme-neumorph.dark-mode .financial-card, body.theme-neumorph.dark-mode .data-card, body.theme-neumorph.dark-mode .popup-content, body.theme-neumorph.dark-mode .ka-filter-bar, body.theme-neumorph.dark-mode .sensitive-form {
            background: #232323 !important;
            border-color: var(--border-color) !important;
        }
        body.theme-miui.dark-mode td, body.theme-material.dark-mode td, body.theme-fluent.dark-mode td, body.theme-mono.dark-mode td, body.theme-neumorph.dark-mode td {
            background: transparent;
            color: var(--text-color);
        }
        body.theme-miui.dark-mode .section-title, body.theme-material.dark-mode .section-title, body.theme-fluent.dark-mode .section-title, body.theme-mono.dark-mode .section-title, body.theme-neumorph.dark-mode .section-title {
            color: var(--text-color) !important;
        }

        /* MIUI: Header — clean flat with bold accent underline */
        body.theme-miui .header {
            background: var(--primary-color) !important;
            border-bottom: none !important;
            box-shadow: 0 1px 0 var(--border-color) !important;
        }
        body.theme-miui.dark-mode .header { background: var(--primary-color) !important; }
        body.theme-miui .logo { font-size: 1.4rem !important; font-weight: 800 !important; color: var(--accent-color) !important; }
        body.theme-miui .icon-btn { border-radius: 12px !important; background: rgba(var(--accent-rgb),0.08) !important; color: var(--accent-color) !important; }
        body.theme-miui.dark-mode .icon-btn { background: rgba(var(--accent-rgb),0.14) !important; }
        /* MIUI: Bottom Nav — square-rounded, bold labels */
        body.theme-miui .bottom-nav { background: var(--primary-color) !important; border-top: 1px solid var(--border-color) !important; box-shadow: none !important; }
        body.theme-miui.dark-mode .bottom-nav { background: var(--primary-color) !important; }
        body.theme-miui .bottom-nav-item { border-radius: 10px !important; }
        body.theme-miui .bottom-nav-item span:not(.nav-badge) { font-weight: 700 !important; font-size: 10px !important; }
        body.theme-miui .bottom-nav-item.active { color: var(--accent-color) !important; background: rgba(var(--accent-rgb),0.08) !important; border-radius: 10px !important; }
        /* MIUI: Cards — squircle, crisp shadow */
        body.theme-miui .financial-card, body.theme-miui .data-card { border-radius: 16px !important; box-shadow: var(--shadow) !important; border: none !important; }
        body.theme-miui .btn { border-radius: 12px !important; font-weight: 700 !important; }
        body.theme-miui .btn-primary { background: var(--accent-color) !important; box-shadow: 0 3px 10px rgba(var(--accent-rgb),0.3) !important; }
        body.theme-miui input, body.theme-miui select, body.theme-miui textarea { border-radius: 10px !important; border: 1.5px solid var(--border-color) !important; background: #fafafa !important; }
        body.theme-miui.dark-mode input, body.theme-miui.dark-mode select, body.theme-miui.dark-mode textarea { background: rgba(255,255,255,0.08) !important; }
        body.theme-miui .tabs { border-bottom: none !important; background: rgba(0,0,0,0.04) !important; border-radius: 12px !important; padding: 4px !important; }
        body.theme-miui .tab { border-radius: 9px !important; border: none !important; font-weight: 600 !important; }
        body.theme-miui .tab.active { background: var(--accent-color) !important; color: #fff !important; }
        body.theme-miui th { background: var(--accent-color) !important; }
        body.theme-miui .section-title { font-size: 1.7rem !important; font-weight: 800 !important; }
        body.theme-miui .popup-content { border-radius: 18px !important; }
        body.theme-miui .table-container { border-radius: 16px !important; }

        /* ============================================================
           MATERIAL YOU THEME (Google — pill shapes, soft tonal green)
           ============================================================ */
        body.theme-material {
            --primary-color: #fef7ff;
            --secondary-color: #006a60;
            --accent-color: #006a60; --accent-rgb: 0, 106, 96;
            --text-color: #1a1c1a;
            --light-text: #6f7975;
            --border-color: #dde4e0;
            --shadow: 0 1px 3px rgba(0,0,0,0.08), 0 4px 12px rgba(var(--accent-rgb),0.08);
            --danger-color: #ba1a1a;
            --success-color: #2e7d32;
        }
        body.theme-material.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #5cdbc9;
            --accent-color: #5cdbc9; --accent-rgb: 92, 219, 201;
            --text-color: #e2e3e0;
            --light-text: #8e938f;
            --border-color: #333333;
            --shadow: 0 1px 3px rgba(0,0,0,0.3);
        }
        body.theme-material.dark-mode.dark-off { --primary-color: #000000; --border-color: #1c1c1c; }
        body.theme-material .header { background: var(--primary-color) !important; border-bottom: none !important; box-shadow: none !important; }
        body.theme-material.dark-mode .header { background: var(--primary-color) !important; }
        body.theme-material .logo { font-size: 1.4rem !important; font-weight: 500 !important; color: var(--accent-color) !important; }
        body.theme-material .icon-btn { border-radius: 50% !important; background: rgba(var(--accent-rgb),0.10) !important; color: var(--accent-color) !important; }
        body.theme-material.dark-mode .icon-btn { background: rgba(var(--accent-rgb),0.14) !important; }
        body.theme-material .bottom-nav { background: var(--primary-color) !important; border-top: none !important; box-shadow: 0 -2px 10px rgba(0,0,0,0.05) !important; border-radius: 22px 22px 0 0 !important; }
        body.theme-material.dark-mode .bottom-nav { background: var(--primary-color) !important; }
        body.theme-material .bottom-nav-item { border-radius: 26px !important; padding: 6px 16px !important; }
        body.theme-material .bottom-nav-item.active { background: rgba(var(--accent-rgb),0.14) !important; color: var(--accent-color) !important; border-radius: 26px !important; }
        body.theme-material.dark-mode .bottom-nav-item.active { background: rgba(var(--accent-rgb),0.18) !important; }
        body.theme-material .financial-card, body.theme-material .data-card { border-radius: 22px !important; box-shadow: var(--shadow) !important; border: none !important; }
        body.theme-material .btn { border-radius: 100px !important; font-weight: 600 !important; }
        body.theme-material .btn-primary { background: var(--accent-color) !important; box-shadow: none !important; }
        body.theme-material input, body.theme-material select, body.theme-material textarea { border-radius: 100px !important; border: 1.5px solid var(--border-color) !important; background: transparent !important; padding: 12px 18px !important; }
        body.theme-material.dark-mode input, body.theme-material.dark-mode select, body.theme-material.dark-mode textarea { background: rgba(255,255,255,0.04) !important; }
        body.theme-material .tabs { border-bottom: none !important; background: rgba(var(--accent-rgb),0.06) !important; border-radius: 100px !important; padding: 4px !important; }
        body.theme-material .tab { border-radius: 100px !important; border: none !important; font-weight: 500 !important; }
        body.theme-material .tab.active { background: var(--accent-color) !important; color: #fff !important; }
        body.theme-material th { background: var(--accent-color) !important; border-radius: 0 !important; }
        body.theme-material .section-title { font-size: 1.7rem !important; font-weight: 500 !important; letter-spacing: 0 !important; }
        body.theme-material .popup-content { border-radius: 28px !important; }
        body.theme-material .table-container { border-radius: 22px !important; }

        /* ============================================================
           WINDOWS / FLUENT THEME (sharp-ish corners, acrylic blue)
           ============================================================ */
        body.theme-fluent {
            --primary-color: #f3f3f3;
            --secondary-color: #0067c0;
            --accent-color: #0067c0; --accent-rgb: 0, 103, 192;
            --text-color: #1b1b1b;
            --light-text: #616161;
            --border-color: #e1e1e1;
            --shadow: 0 2px 8px rgba(0,0,0,0.10);
            --danger-color: #c42b1c;
            --success-color: #107c10;
        }
        body.theme-fluent.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #60cdff;
            --accent-color: #60cdff; --accent-rgb: 96, 205, 255;
            --text-color: #f3f3f3;
            --light-text: #a3a3a3;
            --border-color: #333333;
            --shadow: 0 2px 8px rgba(0,0,0,0.4);
        }
        body.theme-fluent.dark-mode.dark-off { --primary-color: #000000; --border-color: #1c1c1c; }
        body.theme-fluent .header { background: rgba(243,243,243,0.85) !important; -webkit-backdrop-filter: blur(18px) !important; backdrop-filter: blur(18px) !important; border-bottom: 1px solid var(--border-color) !important; box-shadow: none !important; }
        body.theme-fluent.dark-mode .header { background: var(--primary-color) !important; }
        body.theme-fluent .logo { font-size: 1.3rem !important; font-weight: 600 !important; color: var(--text-color) !important; }
        body.theme-fluent .icon-btn { border-radius: 4px !important; color: var(--accent-color) !important; }
        body.theme-fluent .icon-btn:hover { background: rgba(var(--accent-rgb),0.08) !important; }
        body.theme-fluent .bottom-nav { background: rgba(243,243,243,0.92) !important; -webkit-backdrop-filter: blur(18px) !important; backdrop-filter: blur(18px) !important; border-top: 1px solid var(--border-color) !important; box-shadow: none !important; }
        body.theme-fluent.dark-mode .bottom-nav { background: var(--primary-color) !important; }
        body.theme-fluent .bottom-nav-item { border-radius: 4px !important; }
        body.theme-fluent .bottom-nav-item.active { color: var(--accent-color) !important; background: rgba(var(--accent-rgb),0.10) !important; border-radius: 4px !important; }
        body.theme-fluent .financial-card, body.theme-fluent .data-card { border-radius: 8px !important; box-shadow: var(--shadow) !important; border: 1px solid var(--border-color) !important; }
        body.theme-fluent .btn { border-radius: 4px !important; font-weight: 600 !important; }
        body.theme-fluent .btn-primary { background: var(--accent-color) !important; box-shadow: none !important; }
        body.theme-fluent input, body.theme-fluent select, body.theme-fluent textarea { border-radius: 4px !important; border: 1px solid var(--border-color) !important; background: #ffffff !important; }
        body.theme-fluent.dark-mode input, body.theme-fluent.dark-mode select, body.theme-fluent.dark-mode textarea { background: rgba(255,255,255,0.08) !important; }
        body.theme-fluent .tabs { border-bottom: 1px solid var(--border-color) !important; background: transparent !important; border-radius: 0 !important; padding: 0 !important; }
        body.theme-fluent .tab { border-radius: 0 !important; border-bottom: 2px solid transparent !important; font-weight: 500 !important; }
        body.theme-fluent .tab.active { background: transparent !important; color: var(--accent-color) !important; border-bottom: 2px solid var(--accent-color) !important; }
        body.theme-fluent th { background: var(--accent-color) !important; border-radius: 0 !important; }
        body.theme-fluent .section-title { font-size: 1.5rem !important; font-weight: 600 !important; }
        body.theme-fluent .popup-content { border-radius: 8px !important; }
        body.theme-fluent .table-container { border-radius: 8px !important; }

        /* ============================================================
           MINIMALIS MONO THEME (grayscale, flat, high-contrast)
           ============================================================ */
        body.theme-mono {
            --primary-color: #ffffff;
            --secondary-color: #1a1a1a;
            --accent-color: #1a1a1a; --accent-rgb: 26, 26, 26;
            --text-color: #111111;
            --light-text: #767676;
            --border-color: #e5e5e5;
            --shadow: none;
            --danger-color: #d32f2f;
            --success-color: #2e7d32;
        }
        body.theme-mono.dark-mode {
            --primary-color: #1e1e1e;
            --secondary-color: #ededed;
            --accent-color: #ededed; --accent-rgb: 237, 237, 237;
            --text-color: #f0f0f0;
            --light-text: #9a9a9a;
            --border-color: #333333;
            --shadow: none;
        }
        body.theme-mono.dark-mode.dark-off { --primary-color: #000000; --border-color: #1c1c1c; }
        body.theme-mono .header { background: var(--primary-color) !important; border-bottom: 1.5px solid var(--text-color) !important; box-shadow: none !important; }
        body.theme-mono.dark-mode .header { background: var(--primary-color) !important; border-bottom-color: var(--text-color) !important; }
        body.theme-mono .logo { font-size: 1.3rem !important; font-weight: 800 !important; color: var(--text-color) !important; text-transform: uppercase !important; letter-spacing: 1px !important; }
        body.theme-mono .icon-btn { border-radius: 0 !important; color: var(--icon-color) !important; }
        body.theme-mono .bottom-nav { background: var(--primary-color) !important; border-top: 1.5px solid var(--text-color) !important; box-shadow: none !important; }
        body.theme-mono.dark-mode .bottom-nav { background: var(--primary-color) !important; border-top-color: var(--text-color) !important; }
        body.theme-mono .bottom-nav-item { border-radius: 0 !important; }
        body.theme-mono .bottom-nav-item.active { color: var(--accent-color) !important; background: transparent !important; border-top: 2px solid var(--accent-color) !important; margin-top: -2px !important; }
        body.theme-mono .financial-card, body.theme-mono .data-card { border-radius: 0 !important; box-shadow: none !important; border: 1.5px solid var(--text-color) !important; }
        body.theme-mono .btn { border-radius: 0 !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; }
        body.theme-mono .btn-primary { background: var(--accent-color) !important; color: #fff !important; box-shadow: none !important; }
        body.theme-mono.dark-mode .btn-primary { color: var(--primary-color) !important; }
        body.theme-mono input, body.theme-mono select, body.theme-mono textarea { border-radius: 0 !important; border: 1.5px solid var(--border-color) !important; background: transparent !important; }
        body.theme-mono .tabs { border-bottom: 1.5px solid var(--border-color) !important; background: transparent !important; border-radius: 0 !important; padding: 0 !important; }
        body.theme-mono .tab { border-radius: 0 !important; border: none !important; font-weight: 600 !important; text-transform: uppercase !important; font-size: 0.78rem !important; }
        body.theme-mono .tab.active { background: transparent !important; color: var(--accent-color) !important; border-bottom: 2px solid var(--accent-color) !important; }
        body.theme-mono th { background: var(--text-color) !important; color: var(--primary-color) !important; border-radius: 0 !important; text-transform: uppercase !important; }
        body.theme-mono .section-title { font-size: 1.6rem !important; font-weight: 800 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; }
        body.theme-mono .popup-content { border-radius: 0 !important; }
        body.theme-mono .table-container { border-radius: 0 !important; border: 1.5px solid var(--border-color) !important; }

        /* ============================================================
           NEUMORPHISM THEME (soft-UI, embossed shapes, violet accent)
           ============================================================ */
        body.theme-neumorph {
            --primary-color: #e6e9ee;
            --secondary-color: #6c5ce7;
            --accent-color: #6c5ce7; --accent-rgb: 108, 92, 231;
            --text-color: #2d2d3a;
            --light-text: #7a7d8c;
            --border-color: #d1d5db;
            --shadow: 8px 8px 16px #c8ccd2, -8px -8px 16px #ffffff;
            --danger-color: #e74c3c;
            --success-color: #27ae60;
        }
        body.theme-neumorph.dark-mode {
            --primary-color: #24262e;
            --secondary-color: #8b7cf6;
            --accent-color: #8b7cf6; --accent-rgb: 139, 124, 246;
            --text-color: #e8e9f0;
            --light-text: #9294a3;
            --border-color: #1c1d23;
            --shadow: 8px 8px 16px #1c1d23, -8px -8px 16px #2c2e38;
        }
        body.theme-neumorph .header { background: var(--primary-color) !important; border-bottom: none !important; box-shadow: 0 4px 10px rgba(0,0,0,0.05) !important; }
        body.theme-neumorph.dark-mode .header { background: #24262e !important; }
        body.theme-neumorph .logo { font-size: 1.35rem !important; font-weight: 700 !important; color: var(--accent-color) !important; }
        body.theme-neumorph .icon-btn { border-radius: 50% !important; background: var(--primary-color) !important; box-shadow: 4px 4px 8px #c8ccd2, -4px -4px 8px #ffffff !important; color: var(--accent-color) !important; }
        body.theme-neumorph.dark-mode .icon-btn { box-shadow: 4px 4px 8px #1c1d23, -4px -4px 8px #2c2e38 !important; }
        body.theme-neumorph .bottom-nav { background: var(--primary-color) !important; border-top: none !important; box-shadow: 0 -4px 10px rgba(0,0,0,0.05) !important; }
        body.theme-neumorph.dark-mode .bottom-nav { background: #24262e !important; }
        body.theme-neumorph .bottom-nav-item { border-radius: 16px !important; }
        body.theme-neumorph .bottom-nav-item.active { color: var(--accent-color) !important; background: var(--primary-color) !important; box-shadow: inset 3px 3px 6px #c8ccd2, inset -3px -3px 6px #ffffff !important; }
        body.theme-neumorph.dark-mode .bottom-nav-item.active { box-shadow: inset 3px 3px 6px #1c1d23, inset -3px -3px 6px #2c2e38 !important; }
        body.theme-neumorph .financial-card, body.theme-neumorph .data-card { border-radius: 20px !important; background: var(--primary-color) !important; box-shadow: var(--shadow) !important; border: none !important; }
        body.theme-neumorph .btn { border-radius: 14px !important; font-weight: 600 !important; }
        body.theme-neumorph .btn-primary { background: var(--accent-color) !important; box-shadow: 4px 4px 10px rgba(var(--accent-rgb),0.3) !important; }
        body.theme-neumorph input, body.theme-neumorph select, body.theme-neumorph textarea { border-radius: 14px !important; border: none !important; background: var(--primary-color) !important; box-shadow: inset 3px 3px 6px #c8ccd2, inset -3px -3px 6px #ffffff !important; }
        body.theme-neumorph.dark-mode input, body.theme-neumorph.dark-mode select, body.theme-neumorph.dark-mode textarea { box-shadow: inset 3px 3px 6px #1c1d23, inset -3px -3px 6px #2c2e38 !important; }
        body.theme-neumorph .tabs { border-bottom: none !important; background: var(--primary-color) !important; border-radius: 18px !important; padding: 4px !important; box-shadow: inset 3px 3px 6px #c8ccd2, inset -3px -3px 6px #ffffff !important; }
        body.theme-neumorph .tab { border-radius: 14px !important; border: none !important; font-weight: 600 !important; }
        body.theme-neumorph .tab.active { background: var(--primary-color) !important; color: var(--accent-color) !important; box-shadow: 3px 3px 6px #c8ccd2, -3px -3px 6px #ffffff !important; }
        body.theme-neumorph th { background: var(--accent-color) !important; color: #fff !important; }
        body.theme-neumorph .section-title { font-size: 1.6rem !important; font-weight: 700 !important; }
        body.theme-neumorph .popup-content { border-radius: 24px !important; background: var(--primary-color) !important; }
        body.theme-neumorph .table-container { border-radius: 20px !important; box-shadow: var(--shadow) !important; }

        /* ============================================================
           GANTI TEMA POPUP — REDESIGN v2 (tabbed + color wheel)
           ============================================================ */
        .tema-section-label { font-size: 0.72rem; font-weight: 700; color: var(--light-text); text-transform: uppercase; letter-spacing: 0.07em; margin: 16px 0 8px; display: flex; align-items: center; gap: 6px; }
        .tema-section-label:first-child { margin-top: 0; }

        /* Segmented tabbar */
        .tema-tabbar {
            display: flex; gap: 4px; background: rgba(0,0,0,0.045); border-radius: 14px; padding: 4px;
            margin-bottom: 18px;
        }
        .dark-mode .tema-tabbar { background: rgba(255,255,255,0.06); }
        .tema-tabbar-btn {
            flex: 1; border: none; background: transparent; color: var(--light-text);
            font-size: 0.8rem; font-weight: 700; padding: 9px 4px; border-radius: 10px;
            display: flex; align-items: center; justify-content: center; gap: 6px;
            cursor: pointer; transition: background 0.16s ease, color 0.16s ease;
        }
        .tema-tabbar-btn i { font-size: 0.82rem; }
        .tema-tabbar-btn.active { background: var(--primary-color); color: var(--accent-color); box-shadow: 0 1px 6px rgba(0,0,0,0.10); }

        /* Tab panels */
        .tema-tab-panel { display: none; animation: temaPanelFadeIn 0.18s ease; }
        .tema-tab-panel.active { display: block; }
        @keyframes temaPanelFadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }

        /* Mode terang/gelap */
        .tema-mode-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 4px; }
        .tema-mode-btn {
            padding: 11px 6px; border: 1.5px solid var(--border-color); border-radius: 12px;
            background: var(--primary-color); color: var(--text-color); font-size: 0.78rem;
            font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 5px; transition: var(--transition); white-space: nowrap;
        }
        .tema-mode-btn:hover { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        .tema-mode-btn.active { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.12); color: var(--accent-color); }

        /* List gaya tema / splash — kartu baris profesional */
        .tema-list { display: flex; flex-direction: column; gap: 8px; }
        .tema-list-item {
            cursor: pointer; display: flex; align-items: center; gap: 12px;
            padding: 12px 14px; border-radius: 14px; border: 1.5px solid var(--border-color);
            background: var(--primary-color); transition: border-color 0.15s ease, background 0.15s ease;
        }
        .tema-list-item:active { transform: scale(0.99); }
        .tema-list-item.active { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        .tema-list-item-icon {
            width: 38px; height: 38px; border-radius: 11px; flex-shrink: 0;
            display: flex; align-items: center; justify-content: center; font-size: 1.05rem;
            background: rgba(0,0,0,0.045); color: var(--text-color);
        }
        .dark-mode .tema-list-item-icon { background: rgba(255,255,255,0.07); }
        .tema-list-item.active .tema-list-item-icon { background: var(--accent-color); color: #fff; }
        .tema-list-item-body { flex: 1; min-width: 0; }
        .tema-list-item-title { font-size: 0.88rem; font-weight: 700; color: var(--text-color); }
        .tema-list-item-desc { font-size: 0.72rem; color: var(--light-text); margin-top: 1px; }
        .tema-list-item-check { color: var(--accent-color); font-size: 1.05rem; flex-shrink: 0; opacity: 0; transform: scale(0.6); transition: all 0.15s ease; }
        .tema-list-item.active .tema-list-item-check { opacity: 1; transform: scale(1); }

        .tema-reset-link {
            margin-top: 16px; background: none; border: none; color: var(--light-text);
            font-size: 0.78rem; font-weight: 700; cursor: pointer; padding: 4px 0;
            display: flex; align-items: center; gap: 6px; width: 100%;
        }
        .tema-reset-link:hover { color: var(--accent-color); }

        /* ── Palet Warna: grid kartu ── */
        .tema-palette-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
        .tema-palette-card {
            border-radius: 14px; border: 2px solid var(--border-color); cursor: pointer;
            overflow: hidden; transition: transform 0.12s ease, border-color 0.12s ease;
            background: var(--primary-color); position: relative;
        }
        .tema-palette-card:active { transform: scale(0.97); }
        .tema-palette-card.active { border-color: var(--accent-color); }
        .tema-palette-card.active::after {
            content: '\f00c'; font-family: 'Font Awesome 5 Free'; font-weight: 900;
            position: absolute; top: 6px; right: 6px; width: 18px; height: 18px; border-radius: 50%;
            background: var(--accent-color); color: #fff; font-size: 0.6rem;
            display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 4px rgba(0,0,0,0.25);
        }
        .tema-palette-preview { display: flex; height: 40px; }
        .tema-palette-preview span { flex: 1; display: block; }
        .tema-palette-label {
            font-size: 0.72rem; font-weight: 700; padding: 8px 10px; color: var(--text-color);
            display: flex; align-items: center; gap: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .tema-palette-label .tp-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }

        /* ── Custom Palet Builder ── */
        .tema-custom-toggle-row { margin: 16px 0 4px; }
        .tema-custom-open-btn {
            width: 100%; display: flex; align-items: center; justify-content: center; gap: 8px;
            padding: 11px; border-radius: 12px; border: 1.5px dashed var(--border-color);
            background: transparent; color: var(--light-text); font-size: 0.82rem; font-weight: 700; cursor: pointer;
        }
        .tema-custom-open-btn:active { transform: scale(0.98); }
        .tema-custom-open-btn i { color: var(--accent-color); }
        .tema-custom-builder {
            display: none; margin-top: 14px; padding: 14px; border-radius: 16px;
            background: rgba(0,0,0,0.03); border: 1px solid var(--border-color);
        }
        .dark-mode .tema-custom-builder { background: rgba(255,255,255,0.04); }
        .tema-custom-builder.open { display: block; }
        .tema-custom-row {
            display: flex; align-items: center; justify-content: space-between; gap: 12px;
            padding: 9px 0; border-bottom: 1px solid var(--border-color);
        }
        .tema-custom-row:last-of-type { border-bottom: none; }
        .tema-custom-row-label { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
        .tema-custom-row-label span.tc-name { font-size: 0.8rem; font-weight: 700; color: var(--text-color); }
        .tema-custom-row-label span.tc-desc { font-size: 0.68rem; color: var(--light-text); }
        .tema-custom-row-control { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
        .tema-custom-swatch-input {
            width: 34px; height: 34px; border-radius: 10px; border: 1.5px solid var(--border-color);
            padding: 0; cursor: pointer; background: none; -webkit-appearance: none; appearance: none;
        }
        .tema-custom-swatch-input::-webkit-color-swatch-wrapper { padding: 2px; }
        .tema-custom-swatch-input::-webkit-color-swatch { border-radius: 7px; border: none; }
        .tema-custom-hex-label {
            font-family: 'Courier New', monospace; font-size: 0.72rem; font-weight: 700;
            color: var(--light-text); width: 64px; text-align: right;
        }
        .tema-custom-name-input {
            width: 100%; margin-top: 12px; padding: 10px 12px; border-radius: 10px;
            border: 1.5px solid var(--border-color); background: var(--primary-color); color: var(--text-color);
            font-size: 0.82rem; font-family: var(--app-font);
        }
        .tema-custom-actions { display: flex; gap: 10px; margin-top: 14px; }
        .tema-custom-actions button {
            flex: 1; padding: 11px; border-radius: 10px; font-size: 0.8rem; font-weight: 700;
            cursor: pointer; border: none;
        }
        .tema-custom-save-btn { background: var(--accent-color); color: #fff; }
        .tema-custom-save-btn:active { opacity: 0.85; }
        .tema-custom-preview-btn { background: transparent; border: 1.5px solid var(--border-color) !important; color: var(--text-color); }
        .tema-custom-saved-list { margin-top: 14px; }
        .tema-custom-saved-item {
            display: flex; align-items: center; gap: 10px; padding: 9px 4px;
            border-bottom: 1px solid var(--border-color);
        }
        .tema-custom-saved-item:last-child { border-bottom: none; }
        .tema-custom-saved-preview { display: flex; width: 40px; height: 26px; border-radius: 7px; overflow: hidden; flex-shrink: 0; box-shadow: 0 1px 3px rgba(0,0,0,0.2); }
        .tema-custom-saved-preview span { flex: 1; }
        .tema-custom-saved-name { flex: 1; font-size: 0.8rem; font-weight: 700; color: var(--text-color); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .tema-custom-saved-actions { display: flex; gap: 4px; flex-shrink: 0; }
        .tema-custom-saved-actions button {
            background: none; border: none; width: 30px; height: 30px; border-radius: 8px;
            color: var(--light-text); cursor: pointer; font-size: 0.85rem;
        }
        .tema-custom-saved-actions button:active { background: rgba(0,0,0,0.06); }
        .tema-custom-saved-actions button.tc-delete:active { color: var(--danger-color); }
        #audioNowPlayingBar.show { display: flex !important; }
        .audio-track-item-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
        .audio-track-item-actions button { background: none; border: none; font-size: 0.95rem; cursor: pointer; color: var(--light-text); padding: 4px; }
        .audio-track-item-actions button:hover { color: var(--accent-color); }
        .audio-track-item-actions button.danger:hover { color: var(--danger-color); }
        .audio-track-item.playing { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        .audio-track-item-badge { font-size: 0.63rem; font-weight: 700; color: #fff; background: var(--accent-color); border-radius: 4px; padding: 1px 5px; margin-left: 6px; vertical-align: middle; }
        .audio-empty-hint { font-size: 0.78rem; color: var(--light-text); text-align: center; padding: 18px 10px; }
        .wt-switch { position: relative; display: inline-block; width: 44px; height: 25px; flex-shrink: 0; }
        .wt-switch input { opacity: 0; width: 0; height: 0; }
        .wt-switch-slider { position: absolute; cursor: pointer; inset: 0; background: var(--border-color); transition: 0.2s; border-radius: 25px; }
        .wt-switch-slider::before { position: absolute; content: ""; height: 19px; width: 19px; left: 3px; bottom: 3px; background: #fff; transition: 0.2s; border-radius: 50%; box-shadow: 0 1px 3px rgba(0,0,0,0.25); }
        .wt-switch input:checked + .wt-switch-slider { background: var(--accent-color); }
        .wt-switch input:checked + .wt-switch-slider::before { transform: translateX(19px); }
        #weatherThemeToggleCard.active { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        .audio-subtab-panel { display: none; animation: temaPanelFadeIn 0.18s ease; }
        .audio-subtab-panel.active { display: block; }
        #clickSoundToggleCard.active { border-color: var(--accent-color); background: rgba(var(--accent-rgb),0.07); }
        /* ===== END GANTI TEMA POPUP ===== */


        /* ===== ARUS KAS MODAL: selalu fullscreen langsung, tanpa animasi ===== */
        #arusKasModal, #arusKasModal .popup-content {
            transition: none !important;
        }
        #arusKasModal .popup-content {
            height: 100vh !important; max-height: 100vh !important; width: 100% !important; max-width: 100% !important;
            border-radius: 0 !important; display: flex; flex-direction: column;
            overflow: hidden; transform: none !important;
        }
        #arusKasModal .sheet-handle, #arusKasModal #akExpandBtn { display: none !important; }

        /* ===== GANTI TEMA: selalu fullscreen langsung, tanpa animasi (admin & karyawan) ===== */
        #gantiTemaPopup, #gantiTemaPopup .popup-content {
            transition: none !important;
        }
        #gantiTemaPopup .popup-content {
            height: 100vh; max-height: 100vh; width: 100%; max-width: 100%;
            border-radius: 0; transform: none;
        }
        #gantiTemaPopup .sheet-handle { display: none !important; }
        #gantiTemaPopup #gantiTemaExpandBtn { display: none !important; }

        /* ===== CATATAN, PRE ORDER, TENTANG KAMI, GAJI, AKUN: selalu fullscreen langsung, tanpa animasi ===== */
        #catatanPopup, #catatanPopup .popup-content,
        #preOrderPopup, #preOrderPopup .popup-content,
        #tentangKamiPopup, #tentangKamiPopup .popup-content,
        #gajiKaryawanPopup, #gajiKaryawanPopup .popup-content,
        #fotoProfilPopup, #fotoProfilPopup .popup-content {
            transition: none !important;
        }
        #catatanPopup .popup-content,
        #preOrderPopup .popup-content,
        #tentangKamiPopup .popup-content,
        #gajiKaryawanPopup .popup-content,
        #fotoProfilPopup .popup-content {
            height: 100vh !important; max-height: 100vh !important; width: 100% !important; max-width: 100% !important;
            border-radius: 0 !important; transform: none !important;
        }
        #catatanPopup .sheet-handle, #catatanPopup #catatanExpandBtn { display: none !important; }
        #preOrderPopup .sheet-handle, #preOrderPopup #preOrderExpandBtn { display: none !important; }
        #tentangKamiPopup .sheet-handle, #tentangKamiPopup #tentangKamiExpandBtn { display: none !important; }
        #gajiKaryawanPopup .sheet-handle, #gajiKaryawanPopup #gajiKaryawanExpandBtn { display: none !important; }
        #fotoProfilPopup .sheet-handle { display: none !important; }
        #fotoProfilPopup .popup-content { display: flex; flex-direction: column; overflow: hidden; }
        #fotoProfilPopup .popup-body { flex: 1; min-height: 0; overflow-y: auto; }
        #gajiKaryawanPopup .gaji-popup-body { max-height: calc(100vh - 64px) !important; }
        #preOrderPopup .preorder-popup-body { max-height: calc(100vh - 70px) !important; }

        /* ===== PUSAT DATA, KELOLA NOTIFIKASI, ATUR KARYAWAN, ATUR KEHADIRAN: selalu fullscreen langsung, tanpa animasi ===== */
        #pusatDataModal, #pusatDataModal .pd-modal-content,
        #kelolaNotifModal, #kelolaNotifModal .kn-modal-box,
        #penggajianModal, #penggajianModal .popup-content,
        #aturKehadiranModal, #aturKehadiranModal .popup-content {
            transition: none !important;
        }
        #pusatDataModal .pd-modal-content,
        #penggajianModal .popup-content,
        #aturKehadiranModal .popup-content {
            height: 100vh !important; max-height: 100vh !important; width: 100% !important; max-width: 100% !important;
            border-radius: 0 !important; transform: none !important;
        }
        #kelolaNotifModal .kn-modal-box {
            height: 100vh !important; max-height: 100vh !important; width: 100% !important; max-width: 100% !important;
            border-radius: 0 !important; transform: none !important; opacity: 1 !important;
        }
        #kelolaNotifModal { padding: 0 !important; }
        #penggajianModal .sheet-handle, #penggajianModal #penggajianExpandBtn { display: none !important; }
        #aturKehadiranModal .sheet-handle, #aturKehadiranModal #aturKehadiranExpandBtn { display: none !important; }
        #pusatDataModal #pusatDataExpandBtn { display: none !important; }
        #kelolaNotifModal #kelolaNotifExpandBtn { display: none !important; }

        /* ===== Fullsheet generik: dipakai juga oleh Penggajian, Atur Kehadiran, Pusat Data, Kelola Notifikasi ===== */
        .popup-bottomsheet .popup-content {
            transition: max-height 0.32s cubic-bezier(.32,.72,0,1), height 0.32s cubic-bezier(.32,.72,0,1), border-radius 0.3s, transform 0.3s cubic-bezier(.32,.72,0,1);
        }
        .popup-bottomsheet.fullsheet .popup-content {
            height: 100vh !important; max-height: 100vh !important; max-width: 100% !important; width: 100% !important; border-radius: 0 !important;
        }
        .popup-bottomsheet.fullsheet .popup-body {
            max-height: calc(100vh - 64px) !important;
        }
        .gaji-popup-content, .preorder-popup-content { max-height: 88vh; }
        .gaji-popup-body { max-height: calc(88vh - 64px); }
        .preorder-popup-body { max-height: calc(88vh - 70px); }
        #pusatDataModal.fullsheet .pd-modal-content {
            width: 100%; max-width: 100%; height: 100vh; max-height: 100vh; border-radius: 0;
        }
        #pusatDataModal .pd-modal-content {
            transition: max-height 0.32s cubic-bezier(.32,.72,0,1), height 0.32s cubic-bezier(.32,.72,0,1), border-radius 0.3s, width 0.3s;
        }
        .kn-full-modal.fullsheet { padding: 0; }
        .kn-full-modal.fullsheet .kn-modal-box {
            width: 100%; max-width: 100%; height: 100vh; max-height: 100vh; border-radius: 0;
        }
        .kn-modal-box {
            transition: transform 0.28s cubic-bezier(.32,.72,0,1), opacity 0.22s ease, max-height 0.28s ease, height 0.28s ease, border-radius 0.28s ease, width 0.28s ease;
        }
        .sheet-fullsheet-btn {
            background: none; border: none; color: var(--light-text); font-size: 1rem;
            cursor: pointer; padding: 6px; border-radius: 8px; transition: background 0.15s, color 0.15s;
            flex-shrink: 0; display: flex; align-items: center; justify-content: center;
        }
        .sheet-fullsheet-btn:hover { background: rgba(120,120,120,0.15); color: var(--accent-color); }
        .sheet-fullsheet-btn:active { transform: scale(0.92); }

        /* ===== TENTANG KAMI MODAL ===== */
        #tentangKamiPopup .popup-body { padding: 0 16px; display: flex; flex-direction: column; }
        .tk-content { flex: 1; min-height: 0; }
        .tk-panel { display: none; animation: temaPanelFadeIn 0.18s ease; padding-top: 4px; }
        .tk-panel.active { display: block; }
        .tk-block { margin-bottom: 20px; }
        .tk-block:last-child { margin-bottom: 8px; }
        .tk-block-title {
            font-size: 0.75rem; font-weight: 700; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 10px;
            display: flex; align-items: center; gap: 7px;
            padding-bottom: 7px; border-bottom: 1px solid var(--border-color);
        }
        .tk-text { font-size: 0.9rem; line-height: 1.7; color: var(--text-color); }
        .tk-text + .tk-text { margin-top: 10px; }
        .tk-text b { font-weight: 700; }
        .tk-founders { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
        .tk-founder-card {
            display: flex; align-items: center; gap: 12px;
            padding: 11px 14px; border-radius: 12px;
            background: rgba(var(--accent-rgb),0.06);
            border: 1px solid rgba(var(--accent-rgb),0.1);
        }
        .tk-founder-avatar {
            width: 38px; height: 38px; border-radius: 50%;
            background: rgba(var(--accent-rgb),0.15); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center;
            font-size: 0.95rem; flex-shrink: 0;
        }
        .tk-founder-info { min-width: 0; flex: 1; }
        .tk-founder-name { font-size: 0.88rem; font-weight: 700; color: var(--text-color); line-height: 1.3; }
        .tk-founder-role { font-size: 0.75rem; color: var(--accent-color); font-weight: 600; margin-top: 2px; }
        .tk-contact-item {
            display: flex; align-items: center; gap: 12px; padding: 13px 14px;
            border-radius: 12px; border: 1px solid var(--border-color);
            margin-bottom: 10px; text-decoration: none;
            transition: background 0.15s;
        }
        .tk-contact-item:last-child { margin-bottom: 0; }
        .tk-contact-item:active { background: rgba(var(--accent-rgb),0.05); }
        .tk-contact-icon {
            width: 38px; height: 38px; border-radius: 10px;
            background: rgba(var(--accent-rgb),0.12); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center;
            font-size: 0.95rem; flex-shrink: 0;
        }
        .tk-contact-item > div:last-child { min-width: 0; flex: 1; }
        .tk-contact-label { font-size: 0.72rem; color: var(--light-text); margin-bottom: 2px; }
        .tk-contact-value { font-size: 0.9rem; font-weight: 600; color: var(--text-color); word-break: break-all; }
        .tk-bug-toggle-card { display: flex; align-items: center; gap: 10px; padding: 10px 0; }
        .tk-bug-toggle-card .tema-list-item-body { flex: 1; }
        .tk-bug-form { display: none; margin-top: 12px; }
        .tk-bug-form.show { display: block; }
        .tk-bug-textarea {
            width: 100%; min-height: 110px; resize: vertical;
            border: 1px solid var(--border-color); border-radius: 12px;
            padding: 12px; font-family: inherit; font-size: 0.88rem;
            color: var(--text-color); background: var(--primary-color);
            box-sizing: border-box;
        }
        .tk-bug-textarea:focus { outline: none; border-color: var(--accent-color); }
        .tk-bug-hint { font-size: 0.73rem; color: var(--light-text); margin-top: 6px; line-height: 1.5; }
        .tk-bug-send-btn { margin-top: 10px; width: 100%; justify-content: center; padding: 12px; border-radius: 12px; }
        .tk-bug-send-btn:disabled { opacity: 0.5; cursor: not-allowed; }
        .tk-rules-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
        .tk-rules-list li {
            display: block;
            font-size: 0.88rem; line-height: 1.65; color: var(--text-color);
            padding-left: 22px; position: relative;
            overflow-wrap: break-word; word-break: break-word;
        }
        .tk-rules-list li i {
            color: var(--accent-color); font-size: 0.8rem;
            position: absolute; left: 0; top: 4px;
        }
        .tk-rules-note {
            margin-top: 14px; padding: 13px 14px; border-radius: 12px;
            background: rgba(var(--accent-rgb),0.07);
            font-size: 0.83rem; line-height: 1.6; color: var(--text-color);
        }
        .tk-rules-legal {
            margin-top: 14px; padding: 13px 14px; border-radius: 12px;
            border: 1px solid rgba(229,57,53,0.35); background: rgba(229,57,53,0.06);
            font-size: 0.83rem; line-height: 1.6; color: var(--text-color);
            display: flex; gap: 10px; align-items: flex-start;
        }
        .tk-rules-legal i { color: #e53935; font-size: 1rem; margin-top: 1px; flex-shrink: 0; }
        .popup-footer {
            flex-shrink: 0; padding: 11px 16px; border-top: 1px solid var(--border-color);
            text-align: center; font-size: 0.72rem; color: var(--light-text); line-height: 1.5;
        }
        #tentangKamiPopup .popup-content { display: flex; flex-direction: column; overflow: hidden; }
        #tentangKamiPopup .tk-content { overflow-y: auto; padding-bottom: 8px; }
        #tentangKamiPopup.fullsheet .popup-content { display: flex; flex-direction: column; }
        #tentangKamiPopup.fullsheet .tk-content { overflow-y: auto; }
        #arusKasModal .popup-body {
            flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
            padding: 0 0 48px; display: flex; flex-direction: column;
        }
        .ak-expand-btn {
            position: absolute; right: 52px; top: 50%; transform: translateY(-50%);
            background: none; border: none; color: var(--light-text); font-size: 1rem;
            cursor: pointer; padding: 6px; border-radius: 8px; transition: background 0.15s, color 0.15s;
        }
        .ak-expand-btn:hover { background: rgba(120,120,120,0.15); color: var(--accent-color); }
        .ak-section { padding: 14px 18px 0; }
        .ak-section-title {
            font-size: 0.75rem; font-weight: 700; text-transform: uppercase;
            letter-spacing: 0.06em; color: var(--light-text); margin-bottom: 10px;
        }

        /* ── Ringkasan saldo: kartu kompak profesional (hero + mini stats) ── */
        .ak-summary-bar {
            margin: 14px 18px 0; background: var(--primary-color);
            border: 1px solid var(--border-color); border-radius: 16px;
            padding: 16px 18px;
        }
        .ak-summary-hero {
            display: flex; flex-direction: column; gap: 4px;
            padding-bottom: 14px; margin-bottom: 14px;
            border-bottom: 1px dashed var(--border-color);
        }
        .ak-summary-hero-label {
            font-size: 0.7rem; font-weight: 700; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.05em;
        }
        .ak-summary-hero-val {
            font-size: 1.5rem; font-weight: 800; color: var(--accent-color);
            letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .ak-summary-mini-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
        .ak-summary-mini { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
        .ak-mini-label {
            font-size: 0.62rem; font-weight: 700; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.03em; white-space: nowrap;
            overflow: hidden; text-overflow: ellipsis;
        }
        .ak-mini-val {
            font-size: 0.84rem; font-weight: 700; color: var(--text-color);
            white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        }
        .ak-mini-val.plus { color: var(--success-color); }
        .ak-mini-val.minus { color: #e53935; }

        /* ── Filter periode (selaras dengan pola ka-filter-bar di modul lain) ── */
        .ak-filter-bar { margin: 14px 18px 0; }

        /* ── Header Buku Kas + tombol aksi ── */
        .ak-history-wrap { margin: 16px 18px 0; }
        .ak-history-head {
            display: flex; align-items: center; justify-content: space-between;
            margin-bottom: 10px; gap: 8px;
        }
        .ak-history-title {
            font-size: 0.8rem; font-weight: 800; text-transform: uppercase;
            letter-spacing: 0.05em; color: var(--text-color);
            display: flex; align-items: center; gap: 7px;
        }
        .ak-history-title i { color: var(--accent-color); font-size: 0.82rem; }
        .ak-history-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
        .ak-icon-btn {
            width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
            background: var(--primary-color); border: 1.5px solid var(--border-color);
            color: var(--light-text); border-radius: 10px; cursor: pointer;
            font-size: 0.82rem; transition: border-color 0.15s, color 0.15s, background 0.15s;
            flex-shrink: 0;
        }
        .ak-icon-btn:hover, .ak-icon-btn.active { border-color: var(--accent-color); color: var(--accent-color); background: rgba(var(--accent-rgb),0.08); }
        .ak-add-btn {
            display: flex; align-items: center; gap: 6px; padding: 8px 14px;
            background: var(--accent-color); color: #fff; border: none;
            border-radius: 10px; font-size: 0.78rem; font-weight: 700; cursor: pointer;
            transition: opacity 0.15s; white-space: nowrap; flex-shrink: 0;
        }
        .ak-add-btn:active { opacity: 0.8; }

        /* ── Buku Kas: gaya rekening koran, dikelompokkan per tanggal ── */
        .ak-ledger-wrap {
            background: var(--primary-color); border: 1px solid var(--border-color);
            border-radius: 16px; overflow: hidden;
        }
        .ak-ledger-daygroup + .ak-ledger-daygroup { border-top: 1px solid var(--border-color); }
        .ak-ledger-day-header {
            display: flex; align-items: center; justify-content: space-between;
            padding: 9px 14px; background: rgba(var(--accent-rgb),0.045);
        }
        .dark-mode .ak-ledger-day-header { background: rgba(255,255,255,0.035); }
        .ak-ledger-day-date {
            font-size: 0.66rem; font-weight: 700; color: var(--light-text);
            text-transform: uppercase; letter-spacing: 0.03em;
        }
        .ak-ledger-day-net { font-size: 0.74rem; font-weight: 800; white-space: nowrap; }
        .ak-ledger-day-net.in { color: var(--success-color); }
        .ak-ledger-day-net.out { color: #e53935; }
        .ak-ledger-day-net.zero { color: var(--light-text); }
        .ak-ledger-row {
            display: flex; align-items: center; gap: 11px; padding: 11px 14px;
            border-top: 1px solid var(--border-color);
        }
        .ak-ledger-daygroup .ak-ledger-row:first-of-type { border-top: none; }
        .ak-ledger-icon {
            width: 30px; height: 30px; border-radius: 10px; flex-shrink: 0;
            display: flex; align-items: center; justify-content: center; font-size: 0.76rem;
        }
        .ak-ledger-icon.in  { background: rgba(76,175,80,0.13); color: var(--success-color); }
        .ak-ledger-icon.out { background: rgba(229,57,53,0.13); color: #e53935; }
        .ak-ledger-body { flex: 1; min-width: 0; }
        .ak-ledger-desc {
            font-size: 0.84rem; font-weight: 600; color: var(--text-color);
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
        }
        .ak-ledger-meta { display: flex; align-items: center; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
        .ak-tag {
            font-size: 0.6rem; font-weight: 700; padding: 2px 7px; border-radius: 6px;
            background: rgba(var(--accent-rgb),0.1); color: var(--accent-color);
            text-transform: uppercase; letter-spacing: 0.02em; white-space: nowrap;
        }
        .ak-ledger-time { font-size: 0.68rem; color: var(--light-text); }
        .ak-ledger-right { text-align: right; flex-shrink: 0; }
        .ak-ledger-amount { font-size: 0.86rem; font-weight: 800; white-space: nowrap; }
        .ak-ledger-amount.out { color: #e53935; }
        .ak-ledger-amount.in  { color: var(--success-color); }
        .ak-ledger-saldo { font-size: 0.64rem; color: var(--light-text); margin-top: 3px; white-space: nowrap; }
        .ak-ledger-row.kas-awal-row { background: rgba(var(--accent-rgb),0.05); }
        .ak-ledger-row.kas-awal-row .ak-ledger-icon { background: rgba(var(--accent-rgb),0.16); color: var(--accent-color); }
        .ak-ledger-row.kas-awal-row .ak-ledger-desc { color: var(--accent-color); }
        .ak-empty { text-align: center; padding: 26px 0; color: var(--light-text); font-size: 0.8rem; }

        /* ── Action bar: tombol toggle Pengeluaran & Kas Awal (di atas Buku Kas) ── */
        .ak-action-bar {
            display: flex; gap: 8px; margin: 14px 18px 0;
        }
        .ak-action-tab {
            flex: 1; display: flex; align-items: center; justify-content: center; gap: 7px;
            padding: 9px 12px; border: 1.5px solid var(--border-color);
            border-radius: 12px; background: var(--primary-color); color: var(--light-text);
            font-size: 0.78rem; font-weight: 700; cursor: pointer; font-family: inherit;
            transition: border-color 0.15s, color 0.15s, background 0.15s;
            white-space: nowrap;
        }
        .ak-action-tab i { font-size: 0.8rem; }
        .ak-action-tab:hover { border-color: var(--accent-color); color: var(--accent-color); background: rgba(var(--accent-rgb),0.06); }
        .ak-action-tab.active { border-color: var(--accent-color); color: var(--accent-color); background: rgba(var(--accent-rgb),0.10); }
        #akToggleFormBtn.active i { color: #e53935; }
        #akToggleFormBtn.active { border-color: #e53935; color: #e53935; background: rgba(229,57,53,0.07); }

        /* ── Panel kolaps (sekunder): Tambah Transaksi & Pengaturan ── */
        .ak-collapse { max-height: 0; overflow: hidden; transition: max-height 0.32s ease, opacity 0.2s ease; margin: 0 18px; opacity: 0; pointer-events: none; }
        .ak-collapse.open { max-height: 9999px; margin-top: 10px; overflow: visible; opacity: 1; pointer-events: auto; }
        .ak-form-card, .ak-settings-card {
            border: 1.5px solid var(--border-color);
            border-radius: 16px; padding: 16px 16px 20px; background: var(--primary-color);
        }
        .ak-form-title {
            font-size: 0.8rem; font-weight: 700; color: var(--text-color);
            margin-bottom: 12px; display: flex; align-items: center; gap: 7px;
        }
        .ak-form-title i { color: #e53935; }
        .ak-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
        .ak-form-field { display: flex; flex-direction: column; gap: 5px; }
        .ak-form-field label { font-size: 0.72rem; font-weight: 600; color: var(--light-text); }
        .ak-form-field input, .ak-form-field select {
            padding: 9px 12px; border: 1.5px solid var(--border-color);
            border-radius: 10px; background: var(--primary-color); color: var(--text-color);
            font-size: 0.85rem; font-family: inherit; outline: none; transition: border-color 0.2s;
        }
        .ak-form-field input:focus, .ak-form-field select:focus { border-color: var(--accent-color); }
        .ak-form-field.full { grid-column: 1/-1; }
        .ak-tambah-btn {
            width: 100%; padding: 11px; background: #e53935; color: #fff; border: none;
            border-radius: 12px; font-size: 0.87rem; font-weight: 700; cursor: pointer;
            margin-top: 4px; display: flex; align-items: center; justify-content: center;
            gap: 7px; transition: opacity 0.2s;
        }
        .ak-tambah-btn:active { opacity: 0.8; }
        .ak-kas-awal-row { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
        .ak-kas-awal-input {
            flex: 1; padding: 10px 14px; border: 1.5px solid var(--border-color);
            border-radius: 12px; background: var(--primary-color); color: var(--text-color);
            font-size: 0.9rem; font-family: inherit; outline: none; transition: border-color 0.2s;
        }
        .ak-kas-awal-input:focus { border-color: var(--accent-color); }
        .ak-kas-awal-save {
            padding: 10px 16px; background: var(--accent-color); color: #fff;
            border: none; border-radius: 12px; font-size: 0.82rem; font-weight: 700;
            cursor: pointer; white-space: nowrap; transition: opacity 0.2s;
        }
        .ak-kas-awal-save:active { opacity: 0.8; }

        /* ===== END ARUS KAS MODAL ===== */

        /* ===== NOTIFIKASI POPUP — Silicon Valley Clean ===== */
        .notif-overlay {
            position: fixed; inset: 0; z-index: 5000;
            background: rgba(0,0,0,0.45);
            backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
            display: flex; align-items: center; justify-content: center;
            opacity: 0; pointer-events: none; visibility: hidden;
            transition: opacity 0.22s ease, visibility 0.22s ease;
            padding: 20px;
        }
        .notif-overlay.active { opacity: 1; pointer-events: auto; visibility: visible; }

        .notif-card {
            background: var(--primary-color);
            border-radius: 20px;
            width: 100%; max-width: 380px;
            box-shadow: 0 32px 72px rgba(0,0,0,0.28), 0 2px 8px rgba(0,0,0,0.08);
            overflow: hidden;
            transform: scale(0.94) translateY(16px);
            opacity: 0;
            transition: transform 0.3s cubic-bezier(.32,.72,0,1), opacity 0.24s ease;
            border: 1px solid var(--border-color);
        }
        .notif-overlay.active .notif-card {
            transform: scale(1) translateY(0);
            opacity: 1;
        }

        /* Header strip */
        .notif-title-bar {
            display: flex; align-items: center; gap: 10px;
            padding: 18px 18px 14px;
            border-bottom: 1px solid var(--border-color);
        }
        .notif-app-icon {
            width: 30px; height: 30px; border-radius: 8px;
            background: linear-gradient(135deg, var(--accent-color), #4fc3f7);
            display: flex; align-items: center; justify-content: center;
            color: #fff; font-size: 0.8rem; flex-shrink: 0;
        }
        .notif-title-text {
            flex: 1; font-family: 'Montserrat',sans-serif;
            font-size: 0.95rem; font-weight: 700; color: var(--text-color);
            line-height: 1.3; letter-spacing: -0.01em;
        }
        .notif-close-btn {
            width: 26px; height: 26px; border-radius: 50%;
            border: none; background: rgba(120,120,120,0.1);
            color: var(--light-text); font-size: 0.72rem;
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; flex-shrink: 0;
            transition: background 0.15s, color 0.15s;
        }
        .notif-close-btn:hover { background: rgba(120,120,120,0.2); color: var(--icon-color); }

        /* ── Variant notif Buku Gaji / Hari Gajian — tetap tampil seperti notifikasi biasa,
              hanya menambahkan area unduh dokumen di bawah teks info. Tidak ada styling
              header/badge khusus supaya konsisten dengan notifikasi lain. ── */

        /* Media slider */
        .notif-media-wrap {
            position: relative; overflow: hidden;
            background: #000;
        }
        .notif-media-track {
            display: flex; transition: transform 0.36s cubic-bezier(.4,0,.2,1);
        }
        .notif-media-slide {
            min-width: 100%;
            aspect-ratio: 16 / 9;
        }
        .notif-media-slide img {
            width: 100%; height: 100%;
            object-fit: cover; display: block;
        }
        .notif-media-slide.notif-media-slide-video {
            position: relative; background: #000;
        }
        .notif-media-slide-video iframe {
            position: absolute; top: 0; left: 0;
            width: 100%; height: 100%; border: 0;
        }
        .notif-media-slide-video .notif-yt-badge {
            position: absolute; top: 8px; left: 8px; z-index: 2;
            background: rgba(0,0,0,0.55); color: #fff;
            font-size: 0.6rem; font-weight: 700; letter-spacing: 0.04em;
            padding: 3px 8px; border-radius: 999px; pointer-events: none;
            display: flex; align-items: center; gap: 4px;
        }
        .notif-media-dots {
            display: flex; justify-content: center; gap: 5px;
            padding: 10px 0 4px;
        }
        .notif-media-dot {
            width: 5px; height: 5px; border-radius: 50%;
            background: var(--border-color); transition: background 0.2s, transform 0.2s;
        }
        .notif-media-dot.active { background: var(--accent-color); transform: scale(1.4); }

        /* Arrow nav */
        .notif-nav-btn {
            position: absolute; top: 50%; transform: translateY(-50%);
            background: rgba(0,0,0,0.3); color: #fff;
            border: none; border-radius: 50%;
            width: 28px; height: 28px;
            display: flex; align-items: center; justify-content: center;
            font-size: 0.7rem; cursor: pointer;
            opacity: 0; transition: opacity 0.2s;
            z-index: 2;
        }
        .notif-media-wrap:hover .notif-nav-btn { opacity: 1; }
        .notif-nav-prev { left: 8px; }
        .notif-nav-next { right: 8px; }

        /* Body text */
        .notif-body-text {
            padding: 14px 18px 14px;
            font-size: 0.875rem; line-height: 1.65;
            color: var(--light-text);
        }

        /* Counter badge */
        .notif-counter {
            background: rgba(var(--accent-rgb),0.12); color: var(--accent-color);
            font-size: 0.65rem; font-weight: 700;
            padding: 2px 7px; border-radius: 999px;
            flex-shrink: 0; white-space: nowrap;
            border: 1px solid rgba(var(--accent-rgb),0.2);
        }

        /* ── Notif: area unduh dokumen — tampilan setara notifikasi biasa, bukan kartu dokumen formal ── */
        .notif-download-area {
            display: none;
            padding: 0 18px 16px;
        }
        .notif-download-area.visible { display: block; }

        .notif-download-banner {
            border-radius: 12px;
            background: rgba(var(--accent-rgb), 0.06);
            border: 1px solid rgba(var(--accent-rgb), 0.16);
            padding: 12px 14px;
        }

        .notif-download-sub {
            font-size: 0.8rem; color: var(--text-color);
            font-weight: 500; line-height: 1.5;
        }

        /* Tombol unduh — gaya tautan aksi sederhana, senada notifikasi lain */
        .notif-download-btn {
            display: flex; align-items: center; justify-content: center; gap: 7px;
            width: 100%; margin-top: 12px; padding: 11px 16px;
            background: var(--accent-color);
            color: #fff; border: none; border-radius: 10px;
            font-family: 'Inter', sans-serif;
            font-size: 0.82rem; font-weight: 600;
            cursor: pointer;
            transition: opacity 0.15s, transform 0.1s;
        }
        .notif-download-btn:hover { opacity: 0.9; }
        .notif-download-btn:active { transform: scale(0.98); }
        .notif-download-btn:disabled { opacity: 0.5; cursor: not-allowed; }
        .notif-download-btn i { font-size: 0.76rem; }

        .notif-download-footnote {
            padding: 8px 2px 0;
            font-size: 0.66rem; color: var(--light-text);
            text-align: center; line-height: 1.5;
        }

        /* ===== KELOLA NOTIFIKASI MODAL (Admin) — redesign clean/modern ===== */
        .kn-full-modal {
            position: fixed; inset: 0; z-index: 4500;
            background: rgba(15,18,22,0.55);
            backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px);
            display: flex; align-items: center; justify-content: center;
            opacity: 0; pointer-events: none; visibility: hidden;
            transition: opacity 0.25s ease, visibility 0.25s ease;
            padding: 16px;
        }
        .kn-full-modal.active { opacity: 1; pointer-events: auto; visibility: visible; }
        .kn-modal-box {
            background: var(--primary-color);
            border-radius: 22px; width: 100%; max-width: 480px;
            max-height: 88vh; display: flex; flex-direction: column;
            box-shadow: 0 30px 70px rgba(0,0,0,0.25), 0 2px 8px rgba(0,0,0,0.06);
            transform: scale(0.96) translateY(10px); opacity: 0;
            transition: transform 0.28s cubic-bezier(.32,.72,0,1), opacity 0.22s ease;
            overflow: hidden;
        }
        .kn-full-modal.active .kn-modal-box { transform: scale(1) translateY(0); opacity: 1; }

        .kn-modal-header {
            display: flex; align-items: center; gap: 12px;
            padding: 16px 18px 12px; flex-shrink: 0;
        }
        .kn-modal-icon {
            width: 34px; height: 34px; border-radius: 10px;
            background: rgba(var(--accent-rgb),0.12); color: var(--accent-color);
            display: flex; align-items: center; justify-content: center; font-size: 0.92rem;
            flex-shrink: 0;
        }
        .kn-modal-title { font-weight: 700; font-size: 1rem; flex: 1; }
        .kn-modal-close {
            width: 30px; height: 30px; border-radius: 50%;
            border: none; background: rgba(120,120,120,0.1);
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; color: var(--light-text); font-size: 0.85rem;
            transition: background 0.15s, color 0.15s;
        }
        .kn-modal-close:hover { background: rgba(120,120,120,0.18); }
        .kn-modal-body { flex: 1; overflow-y: auto; padding: 0; }

        /* Tab bar — segmented pill control (gaya Ganti Tema) */
        .kn-tab-bar {
            display: flex; gap: 4px; margin: 0 18px 16px;
            padding: 4px; border-radius: 14px;
            background: rgba(0,0,0,0.045);
            flex-shrink: 0;
        }
        .dark-mode .kn-tab-bar { background: rgba(255,255,255,0.06); }
        .kn-tab {
            flex: 1; padding: 9px 0; border: none; background: transparent;
            border-radius: 10px;
            color: var(--light-text); font-weight: 700; font-size: 0.8rem;
            cursor: pointer; transition: color 0.16s, background 0.16s;
        }
        .kn-tab.active {
            color: var(--accent-color); background: var(--primary-color);
            box-shadow: 0 1px 6px rgba(0,0,0,0.10);
        }
        .kn-tab-panel { display: none; padding: 0 18px 20px; }
        .kn-tab-panel.active { display: block; }

        /* Form tambah notifikasi */
        .kn-form-group { margin-bottom: 14px; }
        .kn-form-group label {
            display: block; font-size: 10.5px; font-weight: 600;
            color: var(--light-text); margin-bottom: 6px; text-transform: uppercase; letter-spacing: .04em;
        }
        .kn-form-group input, .kn-form-group select, .kn-form-group textarea {
            width: 100%; padding: 10.5px 12px; border: 1.5px solid var(--border-color);
            border-radius: 12px; background: var(--primary-color); color: var(--text-color);
            font-family: inherit; font-size: 0.86rem; outline: none;
            transition: border-color 0.18s;
        }
        .kn-form-group input:focus, .kn-form-group select:focus, .kn-form-group textarea:focus {
            border-color: var(--accent-color);
        }
        .kn-form-group input::placeholder, .kn-form-group textarea::placeholder { color: var(--light-text); opacity: 0.7; }
        .kn-form-group textarea { min-height: 72px; resize: vertical; line-height: 1.45; }
        .kn-form-row { display: flex; gap: 10px; }
        .kn-form-row .kn-form-group { flex: 1; }

        /* Custom checkbox row (mengganti checkbox native) */
        .kn-check-row {
            display: flex; align-items: center; gap: 9px; margin-top: 8px;
            cursor: pointer; user-select: none; width: fit-content;
        }
        .kn-check-row input[type="checkbox"] {
            position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;
        }
        .kn-check-box {
            width: 19px; height: 19px; border-radius: 6px; flex-shrink: 0;
            border: 1.5px solid var(--border-color); background: var(--primary-color);
            display: flex; align-items: center; justify-content: center;
            color: #fff; font-size: 0.6rem;
            transition: background 0.15s, border-color 0.15s;
        }
        .kn-check-box i { opacity: 0; transform: scale(0.5); transition: opacity 0.12s, transform 0.12s; }
        .kn-check-row input[type="checkbox"]:checked + .kn-check-box {
            background: var(--accent-color); border-color: var(--accent-color);
        }
        .kn-check-row input[type="checkbox"]:checked + .kn-check-box i { opacity: 1; transform: scale(1); }
        .kn-check-text { font-size: 0.82rem; font-weight: 500; color: var(--text-color); }

        .kn-foto-url-list { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
        .kn-foto-url-item {
            display: flex; flex-direction: column; gap: 8px;
            background: var(--primary-color); border-radius: 14px; padding: 10px;
            border: 1.5px solid var(--border-color); transition: border-color 0.18s;
        }
        .kn-foto-url-item:has(.kn-foto-input:focus) { border-color: var(--accent-color); }
        .kn-foto-url-item-row { display: flex; gap: 7px; align-items: center; }
        .kn-foto-url-item input { flex: 1; }
        .kn-foto-url-item .kn-foto-input { background: var(--primary-color); }
        .kn-foto-url-rem {
            background: none; border: none;
            color: var(--light-text); border-radius: 9px; width: 32px; height: 32px;
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; font-size: 0.78rem; flex-shrink: 0; transition: background 0.13s, color 0.13s;
        }
        .kn-foto-url-rem:hover { background: rgba(244,67,54,0.12); color: #e53935; }

        /* Segmented mode toggle (Link / Upload) */
        .kn-foto-mode-row { display: flex; gap: 6px; align-items: center; }
        .kn-foto-mode-btn {
            background: none; border: none; color: var(--light-text);
            border-radius: 8px; padding: 5px 11px; cursor: pointer; font-size: 0.71rem; font-weight: 700;
            transition: all 0.15s; flex-shrink: 0;
        }
        .kn-foto-mode-btn.active { color: #fff; background: var(--accent-color); }
        .kn-foto-mode-btn:not(.active):hover { background: rgba(120,120,120,0.12); }

        .kn-foto-preview {
            width: 100%; max-height: 120px; object-fit: cover; border-radius: 10px;
            margin-top: 2px; display: none;
        }
        .kn-foto-preview.show { display: block; }

        /* Tombol upload — selalu pakai styling custom, klik membuka native picker (tidak terhindarkan) */
        .kn-foto-upload-btn {
            background: var(--primary-color); border: 1.5px dashed var(--accent-color);
            color: var(--accent-color); border-radius: 10px; padding: 9px 14px; cursor: pointer;
            font-size: 0.78rem; font-weight: 700; transition: background 0.13s;
            display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%;
        }
        .kn-foto-upload-btn:hover { background: rgba(var(--accent-rgb),0.09); }
        .kn-foto-upload-btn:disabled { opacity: 0.6; cursor: default; }
        .kn-foto-upload-name {
            font-size: 0.71rem; color: var(--light-text); overflow: hidden;
            text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
        }
        .kn-foto-add-btn {
            background: none; border: 1.5px dashed var(--border-color);
            color: var(--light-text); border-radius: 12px; padding: 9px 14px; cursor: pointer;
            font-size: 0.8rem; font-weight: 600; margin-top: 4px; transition: border-color 0.15s, color 0.15s, background 0.15s;
            width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px;
        }
        .kn-foto-add-btn:hover { border-color: var(--accent-color); color: var(--accent-color); background: rgba(var(--accent-rgb),0.06); }

        /* Preview video YouTube di form admin */
        .kn-yt-preview {
            margin-top: 8px; border-radius: 10px; overflow: hidden;
            position: relative; width: 100%; padding-top: 56.25%; /* 16:9 */
            background: #000;
        }
        .kn-yt-preview iframe {
            position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;
        }

        .kn-save-btn {
            width: 100%; padding: 14px; background: var(--accent-color); color: #fff;
            border: none; border-radius: 14px; font-weight: 700; font-size: 0.92rem;
            cursor: pointer; margin-top: 6px; transition: opacity 0.15s;
            display: flex; align-items: center; justify-content: center; gap: 8px;
        }
        .kn-save-btn:hover { opacity: 0.92; }
        .kn-save-btn:active { opacity: 0.85; }
        .kn-save-btn:disabled { opacity: 0.6; cursor: default; }
        .kn-status-text { font-size: 0.78rem; min-height: 18px; margin-top: 8px; text-align: center; font-weight: 500; }

        /* Daftar notifikasi */
        .kn-list-item {
            background: rgba(127,127,127,0.06);
            border: 1px solid transparent; border-radius: 16px;
            padding: 14px 15px; margin-bottom: 10px; position: relative;
            transition: background 0.15s, transform 0.12s;
        }
        .kn-list-item:hover { background: rgba(127,127,127,0.1); }
        .kn-list-header { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 6px; }
        .kn-list-title { font-weight: 700; font-size: 0.89rem; color: var(--text-color); flex: 1; letter-spacing: -0.005em; }
        .kn-list-badge {
            font-size: 0.62rem; font-weight: 700; padding: 3px 9px;
            border-radius: 999px; white-space: nowrap; text-transform: uppercase; letter-spacing: 0.03em;
        }
        .kn-list-badge.aktif { background: rgba(76,175,80,0.14); color: #2e7d32; }
        .kn-list-badge.nonaktif { background: rgba(127,127,127,0.14); color: var(--light-text); }
        .dark-mode .kn-list-badge.aktif { background: rgba(76,175,80,0.2); color: #81c784; }
        .kn-list-meta { font-size: 0.73rem; color: var(--light-text); margin-bottom: 8px; line-height: 1.5; }
        .kn-list-actions { display: flex; gap: 6px; margin-top: 4px; }
        .kn-list-btn {
            padding: 6px 13px; border-radius: 9px; border: none;
            background: rgba(127,127,127,0.1); color: var(--text-color); font-size: 0.73rem; font-weight: 700;
            cursor: pointer; transition: background 0.13s;
        }
        .kn-list-btn:hover { background: rgba(127,127,127,0.18); }
        .kn-list-btn.danger { color: #e53935; background: rgba(244,67,54,0.1); }
        .kn-list-btn.danger:hover { background: rgba(244,67,54,0.18); }
        .kn-empty {
            text-align: center; padding: 36px 16px;
            color: var(--light-text); font-size: 0.85rem;
            border: 1.5px dashed var(--border-color); border-radius: 14px;
        }

        /* ===== NOTIF IMAGE LIGHTBOX ===== */
        .notif-lightbox {
            position: fixed; inset: 0; z-index: 9999;
            background: #000;
            display: flex; flex-direction: column;
            opacity: 0; pointer-events: none; visibility: hidden;
            transition: opacity 0.25s ease, visibility 0.25s ease;
            overflow: hidden;
        }
        .notif-lightbox.active { opacity: 1; pointer-events: auto; visibility: visible; }

        /* Bar atas: counter + tombol close — SELALU di atas foto */
        .notif-lb-topbar {
            position: relative; z-index: 2;
            display: flex; align-items: center; justify-content: space-between;
            padding: 14px 16px 10px;
            background: linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, transparent 100%);
            flex-shrink: 0;
            pointer-events: auto;
        }
        .notif-lb-counter {
            font-size: 0.82rem; font-weight: 700; color: rgba(255,255,255,0.85);
            letter-spacing: 0.04em;
        }
        .notif-lb-close {
            width: 36px; height: 36px; border-radius: 50%;
            border: none; background: rgba(255,255,255,0.2);
            color: #fff; font-size: 1rem;
            display: flex; align-items: center; justify-content: center;
            cursor: pointer; backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            transition: background 0.15s; flex-shrink: 0;
            pointer-events: auto;
        }
        .notif-lb-close:hover, .notif-lb-close:active { background: rgba(255,255,255,0.38); }

        /* Area slider foto — mengisi sisa ruang */
        .notif-lb-viewport {
            flex: 1; min-height: 0;
            position: relative; overflow: hidden;
            display: flex; align-items: center; justify-content: center;
        }
        .notif-lb-track {
            display: flex; height: 100%; width: 100%;
            transition: transform 0.32s cubic-bezier(.4,0,.2,1);
            will-change: transform;
        }
        .notif-lb-slide {
            min-width: 100%; height: 100%;
            display: flex; align-items: center; justify-content: center;
            padding: 0 8px;
        }
        .notif-lb-slide img {
            max-width: 100%; max-height: 100%;
            object-fit: contain; display: block;
            border-radius: 4px;
            user-select: none; -webkit-user-drag: none;
        }

        /* Dots bawah */
        .notif-lb-dots {
            position: relative; z-index: 2;
            display: flex; justify-content: center; gap: 6px;
            padding: 10px 0 16px;
            background: linear-gradient(to top, rgba(0,0,0,0.6) 0%, transparent 100%);
            flex-shrink: 0;
        }
        .notif-lb-dot {
            width: 7px; height: 7px; border-radius: 50%;
            background: rgba(255,255,255,0.35);
            transition: background 0.2s, transform 0.2s;
        }
        .notif-lb-dot.active {
            background: #fff; transform: scale(1.3);
        }

        /* Foto di notif bisa diklik — cursor zoom */
        .notif-media-slide img { cursor: zoom-in; }
        /* ===== END NOTIF IMAGE LIGHTBOX ===== */

        /* Touch swipe indicator */
        .notif-swipe-hint {
            text-align: center; font-size: 0.66rem; color: var(--light-text);
            padding: 0 18px 12px; display: none; opacity: 0.65;
            letter-spacing: 0.01em;
        }
        .notif-swipe-hint.show { display: block; }
        /* ===== END NOTIFIKASI ===== */

        /* ===== CUSTOM DIALOG (pengganti alert/confirm bawaan browser) ===== */
        #customToastHost {
            position: fixed; top: 16px; left: 50%; transform: translateX(-50%);
            z-index: 999999; display: flex; flex-direction: column; gap: 8px;
            width: min(92vw, 380px); pointer-events: none;
        }
        .custom-toast {
            pointer-events: auto;
            background: #262626; color: #fff; border-radius: 12px;
            padding: 12px 16px; font-size: 0.86rem; line-height: 1.4;
            box-shadow: 0 8px 24px rgba(0,0,0,0.25);
            display: flex; align-items: flex-start; gap: 10px;
            opacity: 0; transform: translateY(-12px);
            transition: opacity .2s ease, transform .2s ease;
            white-space: pre-line;
        }
        .custom-toast.show { opacity: 1; transform: translateY(0); }
        .custom-toast ion-icon { font-size: 1.15rem; flex-shrink: 0; margin-top: 1px; }
        .custom-toast.toast-error { background: #3d1414; border: 1px solid #7a2323; }
        .custom-toast.toast-error ion-icon { color: #ff6b6b; }
        .custom-toast.toast-success { background: #12301f; border: 1px solid #1f6b3f; }
        .custom-toast.toast-success ion-icon { color: #4ade80; }
        .custom-toast.toast-info { background: #262626; border: 1px solid #3a3a3a; }
        .custom-toast.toast-info ion-icon { color: #93c5fd; }
        .custom-toast .toast-msg { flex: 1; }

        #customConfirmOverlay {
            position: fixed; inset: 0; z-index: 999998;
            background: rgba(0,0,0,0.45); backdrop-filter: blur(1px);
            display: none; align-items: center; justify-content: center; padding: 20px;
        }
        #customConfirmOverlay.show { display: flex; }
        .custom-confirm-box {
            background: #fff; border-radius: 16px; max-width: 380px; width: 100%;
            padding: 22px 20px 16px; box-shadow: 0 20px 50px rgba(0,0,0,0.3);
            transform: scale(0.96); opacity: 0; transition: transform .18s ease, opacity .18s ease;
        }
        #customConfirmOverlay.show .custom-confirm-box { transform: scale(1); opacity: 1; }
        .custom-confirm-msg {
            font-size: 0.92rem; color: #1f1f1f; line-height: 1.5;
            white-space: pre-line; margin-bottom: 18px;
        }
        .custom-confirm-actions { display: flex; gap: 10px; justify-content: flex-end; }
        .custom-confirm-actions button {
            border: none; border-radius: 10px; padding: 9px 18px;
            font-size: 0.86rem; font-weight: 600; cursor: pointer;
        }
        .custom-confirm-cancel { background: #f0f0f0; color: #333; }
        .custom-confirm-ok { background: #d92d20; color: #fff; }

        /* Varian mode gelap, mengikuti class .dark-mode di <body> */
        .dark-mode #customConfirmOverlay { background: rgba(0,0,0,0.6); }
        .dark-mode .custom-confirm-box {
            background: var(--primary-color); background-image: linear-gradient(rgba(255,255,255,0.06), rgba(255,255,255,0.06)); box-shadow: 0 20px 50px rgba(0,0,0,0.5);
            border: 1px solid rgba(255,255,255,0.08);
        }
        .dark-mode .custom-confirm-msg { color: #e8e8e8; }
        .dark-mode .custom-confirm-cancel { background: rgba(255,255,255,0.08); color: #ddd; }
        .dark-mode .custom-confirm-ok { background: #e5484d; color: #fff; }

        /* Toast tetap gelap di kedua mode by design (kontras baik di light & dark) */
        .dark-mode .custom-toast { box-shadow: 0 8px 24px rgba(0,0,0,0.5); }
        /* ===== END CUSTOM DIALOG ===== */

        /* ============================================================
           FONT OVERRIDE — menimpa semua font-family hardcoded di app
           (input/select/textarea/tombol/dsb) supaya pilihan font dari
           modal "Tampilan" berlaku konsisten ke seluruh UI.
           ============================================================ */
        body, body * {
            font-family: var(--app-font) !important;
        }
        /* Ikon (Font Awesome) TIDAK boleh ikut ter-override */
        body i.fas, body i.far, body i.fal, body i.fab,
        body [class*="fa-"] {
            font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Brands' !important;
        }
