:root {
      --emerald-dark: #064e3b;
      --emerald-primary: #059669;
      --emerald-light: #d1fae5;
      --gold-accent: #d97706;
      --gold-light: #fef3c7;
      --bg-offwhite: #f8fafc;
    }
    body, html {
      font-family: 'Plus Jakarta Sans', sans-serif;
      background-color: var(--bg-offwhite);
      color: #334155;
      height: 100%;
      margin: 0;
      overflow: hidden;
    }
    .bg-emerald-main { background-color: var(--emerald-dark); }
    .bg-emerald-accent { background-color: var(--emerald-primary); }
    .text-emerald-primary { color: var(--emerald-primary); }
    .btn-emerald {
      background-color: var(--emerald-primary);
      color: #ffffff;
      border: none;
    }
    .btn-emerald:hover {
      background-color: var(--emerald-dark);
      color: #ffffff;
    }
    /* Preloader Animation */
    .preloader-ring-container {
      position: relative;
      width: 120px;
      height: 120px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .preloader-ring {
      position: absolute;
      inset: 0;
      border-radius: 50%;
      border: 4px solid transparent;
      border-top-color: #10b981;
      border-right-color: #f59e0b;
      animation: spin 1.2s linear infinite;
    }
    @keyframes spin {
      0% { transform: rotate(0deg); }
      100% { transform: rotate(360deg); }
    }
    /* Sidebar Navigation with Independent Scroll */
    .sidebar-wrapper {
      width: 260px;
      background-color: var(--emerald-dark);
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      transition: all 0.3s ease;
      z-index: 40;
    }
    .sidebar-scrollable {
      overflow-y: auto;
      flex-grow: 1;
      scrollbar-width: thin;
      scrollbar-color: rgba(255,255,255,0.2) transparent;
    }
    .nav-item-custom {
      color: #94a3b8;
      padding: 10px 16px;
      display: flex;
      align-items: center;
      gap: 12px;
      font-size: 0.825rem;
      font-weight: 500;
      border-radius: 8px;
      margin: 3px 10px;
      cursor: pointer;
      transition: all 0.2s;
    }
    .nav-item-custom:hover, .nav-item-custom.active {
      background-color: rgba(255, 255, 255, 0.12);
      color: #f8fafc;
      font-weight: 600;
    }
    .nav-item-custom.active {
      border-left: 4px solid var(--gold-accent);
    }
    /* Shimmer Skeleton Placeholder */
    .placeholder-glow .placeholder {
      background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
      background-size: 200% 100%;
      animation: shimmer 1.5s infinite;
    }
    @keyframes shimmer {
      0% { background-position: 200% 0; }
      100% { background-position: -200% 0; }
    }
    /* Responsive Overlay Backdrop for Mobile */
    .sidebar-backdrop {
      display: none;
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,0.5);
      z-index: 35;
    }
    .sidebar-open .sidebar-backdrop {
      display: block;
    }
    @media (max-width: 768px) {
      .sidebar-wrapper {
        position: fixed;
        left: -260px;
        top: 0;
        bottom: 0;
      }
      .sidebar-open .sidebar-wrapper {
        left: 0;
      }
    }
    /* Print Kop Surat & Laporan Styling */
    @media print {
      /* 2. Bebaskan semua batas layar utama agar halaman bisa memanjang ke bawah */
      html, body, #mainApp, main, [id^="page-"] {
        height: auto !important;
        overflow: visible !important;
        position: static !important;
        display: block !important;
        background: white !important;
      }

      /* 3. Sembunyikan elemen sidebar, navbar, dan elemen dengan class no-print */
      #appSidebar, header, footer, #fullPageLoader, #loginPage, .no-print {
        display: none !important;
      }

      /* 4. Sembunyikan semua halaman yang sedang tidak aktif */
      [id^="page-"].d-none {
        display: none !important;
      }

      /* 5. Bebaskan wrapper pembungkus tabel (penting: hilangkan efek scroll saat print) */
      .overflow-x-auto, .overflow-y-auto {
        overflow: visible !important;
        width: 100% !important;
      }

      /* 6. Aturan pemisahan tabel (Pagination) */
      table { 
        page-break-inside: auto; 
        width: 100%; 
        border-collapse: collapse;
      }
      tr { 
        page-break-inside: avoid; /* Mencegah baris terpotong di tengah huruf */
        page-break-after: auto; 
      }
      thead { 
        display: table-header-group; /* Membuat header tabel selalu berulang di setiap halaman baru */
      }
      tfoot { 
        display: table-footer-group; 
      }
    }