        /* --- JEMBATAN TEMA DINAMIS --- */
        :root {
            --p-50: #eef2ff;
            --p-100: #e0e7ff;
            --p-200: #c7d2fe;
            --p-500: #6366f1;
            --p-600: #4f46e5;
            --p-700: #4338ca;
            --p-800: #3730a3;
        }

        /* Paksa class emerald Tailwind menggunakan Variable CSS kita */
        .bg-emerald-50 {
            background-color: var(--p-50) !important;
        }

        .bg-emerald-100 {
            background-color: var(--p-100) !important;
        }

        .bg-emerald-500 {
            background-color: var(--p-500) !important;
        }

        .bg-emerald-600 {
            background-color: var(--p-600) !important;
        }

        .bg-emerald-700 {
            background-color: var(--p-700) !important;
        }

        .text-emerald-600 {
            color: var(--p-600) !important;
        }

        .text-emerald-700 {
            color: var(--p-700) !important;
        }

        .text-emerald-800 {
            color: var(--p-800) !important;
        }

        .border-emerald-100 {
            border-color: var(--p-100) !important;
        }

        .border-emerald-200 {
            border-color: var(--p-200) !important;
        }

        .border-emerald-500 {
            border-color: var(--p-500) !important;
        }

        /* Ring focus */
        .focus\:ring-emerald-500:focus {
            --tw-ring-color: var(--p-500) !important;
        }

        body {
            font-family: 'Nunito', sans-serif;
            background: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);
            min-height: 100vh;
            transition: background 0.4s ease, color 0.4s ease;
        }

        .hide-scrollbar::-webkit-scrollbar {
            display: none;
        }

        .hide-scrollbar {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }

        /* Modern UI: Glassmorphism Utilities */
        .glass-panel {
            background: rgba(255, 255, 255, 0.65);
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            border: 1px solid rgba(255, 255, 255, 0.4);
            box-shadow: 0 8px 32px 0 rgba(99, 102, 241, 0.1);
        }

        /* Modern UI: Animations */
        @keyframes fadeSlideIn {
            from {
                opacity: 0;
                transform: translateY(15px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .animate-question {
            animation: fadeSlideIn 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
        }

        /* Page Transition Animation */
        @keyframes fadeScaleIn {
            from {
                opacity: 0;
                transform: scale(0.97) translateY(10px);
            }

            to {
                opacity: 1;
                transform: scale(1) translateY(0);
            }
        }

        .page-transition {
            animation: fadeScaleIn 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
        }

        @keyframes fadeTab {
            from {
                opacity: 0;
                transform: translateY(8px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .tab-transition {
            animation: fadeTab 0.3s ease-out forwards;
        }

        @keyframes floatBubble {
            0% {
                transform: translateY(0px);
            }

            50% {
                transform: translateY(-8px);
            }

            100% {
                transform: translateY(0px);
            }
        }

        .ai-bubble-anim {
            animation: floatBubble 3s ease-in-out infinite;
        }

        /* Circular Timer */
        @keyframes timerPulseRing {

            0%,
            100% {
                filter: drop-shadow(0 0 4px rgba(99, 102, 241, 0.3));
            }

            50% {
                filter: drop-shadow(0 0 12px rgba(99, 102, 241, 0.6));
            }
        }

        .timer-ring {
            transition: stroke-dashoffset 1s linear;
        }

        .timer-ring-urgent {
            animation: timerPulseRing 1s ease-in-out infinite;
        }

        /* Leaderboard Podium */
        @keyframes slideUp {
            from {
                opacity: 0;
                transform: translateY(20px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        .podium-anim {
            animation: slideUp 0.6s ease-out forwards;
        }

        /* Print Settings */
        @media print {

            .bg-slate-900,
            header,
            aside,
            button,
            .mobile-nav,
            .no-print {
                display: none !important;
            }

            .print\:block {
                display: block !important;
            }

            .print\:grid-cols-2 {
                grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
            }

            body,
            html,
            #root {
                height: auto !important;
                background-color: white !important;
                overflow: visible !important;
            }

            .h-screen {
                height: auto !important;
            }

            .overflow-hidden {
                overflow: visible !important;
            }

            .overflow-y-auto {
                overflow: visible !important;
            }

            .print\:border-black {
                border-color: black !important;
            }

            .print\:text-black {
                color: black !important;
            }
        }

        /* Toast Notification */
        @keyframes toastIn {
            from {
                opacity: 0;
                transform: translateY(-20px) scale(0.95);
            }

            to {
                opacity: 1;
                transform: translateY(0) scale(1);
            }
        }

        @keyframes toastOut {
            from {
                opacity: 1;
                transform: translateY(0) scale(1);
            }

            to {
                opacity: 0;
                transform: translateY(-20px) scale(0.95);
            }
        }

        .toast-enter {
            animation: toastIn 0.35s cubic-bezier(0.22, 1, 0.36, 1) forwards;
        }

        .toast-exit {
            animation: toastOut 0.3s ease-in forwards;
        }

        /* Skeleton Loading Shimmer */
        @keyframes shimmer {
            0% {
                background-position: -200% 0;
            }

            100% {
                background-position: 200% 0;
            }
        }

        .skeleton {
            background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%);
            background-size: 200% 100%;
            animation: shimmer 1.5s ease-in-out infinite;
            border-radius: 8px;
        }


        /* Ripple Micro-Interaction */
        .ripple-btn {
            position: relative;
            overflow: hidden;
        }

        .ripple-btn::after {
            content: '';
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            pointer-events: none;
            background-image: radial-gradient(circle, rgba(255, 255, 255, 0.35) 10%, transparent 10.01%);
            background-repeat: no-repeat;
            background-position: 50%;
            transform: scale(10);
            opacity: 0;
            transition: transform 0.5s, opacity 0.8s;
        }

        .ripple-btn:active::after {
            transform: scale(0);
            opacity: 0.4;
            transition: 0s;
        }

        /* Stagger Animation for Cards */
        @keyframes staggerIn {
            from {
                opacity: 0;
                transform: translateY(12px);
            }

            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        /* Custom Tooltip */
        .tip-wrap {
            position: relative;
            display: inline-flex;
        }

        .tip-wrap .tip-box {
            visibility: hidden;
            opacity: 0;
            position: absolute;
            bottom: calc(100% + 8px);
            left: 50%;
            transform: translateX(-50%) translateY(4px);
            padding: 6px 14px;
            background: #1e293b;
            color: white;
            font-size: 11px;
            font-weight: 700;
            border-radius: 10px;
            white-space: nowrap;
            z-index: 9999;
            pointer-events: none;
            transition: opacity 0.2s, transform 0.2s;
            box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
        }

        .tip-wrap .tip-box::after {
            content: '';
            position: absolute;
            top: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 5px solid transparent;
            border-top-color: #1e293b;
        }

        .tip-wrap:hover .tip-box {
            visibility: visible;
            opacity: 1;
            transform: translateX(-50%) translateY(0);
        }

        /* Login Card 3D Hover */
        .login-card-3d {
            transition: transform 0.4s cubic-bezier(0.23, 1, 0.32, 1), box-shadow 0.4s ease;
            transform-style: preserve-3d;
        }

        .login-card-3d:hover {
            transform: translateY(-6px) rotateX(2deg) rotateY(-1deg);
            box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.12), 0 12px 40px rgba(99, 102, 241, 0.08);
        }

        /* Scale Up Center Animation (Custom Dialog) */
        @keyframes scaleUpCenter {
            from {
                opacity: 0;
                transform: scale(0.85);
            }
            to {
                opacity: 1;
                transform: scale(1);
            }
        }

        .scale-up-center {
            animation: scaleUpCenter 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;
        }

        /* Pull-to-Refresh */
        @keyframes spin360 {
            to {
                transform: rotate(360deg);
            }
        }

        .ptr-spinner {
            animation: spin360 0.7s linear infinite;
        }

        .ptr-indicator {
            transition: transform 0.3s, opacity 0.3s;
        }