/* roulang page: index */
:root {
            --primary: #0F172A;
            --primary-accent: #0369A1;
            --gradient-accent: linear-gradient(135deg, #0284C7 0%, #2563EB 50%, #4F46E5 100%);
            --border-glow: rgba(56, 189, 248, 0.35);
        }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
            color: #1E293B;
            background-color: #F8FAFC;
            overflow-x: hidden;
        }
        .text-gradient {
            background: var(--gradient-accent);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }
        .btn-gradient {
            background: var(--gradient-accent);
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .btn-gradient:hover {
            box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.45);
            transform: translateY(-2px);
        }
        .btn-gradient:active {
            transform: scale(0.98);
        }
        .voucher-border {
            position: relative;
            background: #ffffff;
            border: 2px dashed #93C5FD;
        }
        .voucher-border::before, .voucher-border::after {
            content: '';
            position: absolute;
            top: 50%;
            width: 20px;
            height: 20px;
            background-color: #F8FAFC;
            border-radius: 50%;
            transform: translateY(-50%);
            z-index: 10;
        }
        .voucher-border::before { left: -11px; border-right: 2px dashed #93C5FD; }
        .voucher-border::after { right: -11px; border-left: 2px dashed #93C5FD; }
        .grid-bg-dark {
            background-color: #0B0F19;
            background-image: linear-gradient(to right, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
                              linear-gradient(to bottom, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
            background-size: 40px 40px;
        }
        details > summary::-webkit-details-marker {
            display: none;
        }
        details[open] summary svg {
            transform: rotate(180deg);
        }
        .status-dot {
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background-color: #10B981;
            position: relative;
        }
        .status-dot::after {
            content: '';
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            background-color: #10B981;
            animation: pulse-ping 2s cubic-bezier(0, 0, 0.2, 1) infinite;
        }
        @keyframes pulse-ping {
            75%, 100% {
                transform: scale(2.4);
                opacity: 0;
            }
        }
