/* roulang page: index */
:root {
            --brand-green: #00C853;
            --brand-cyan: #00B8D4;
            --brand-dark: #0B131E;
            --brand-slate: #0F172A;
            --brand-gray-bg: #F4F7F6;
            --brand-text: #334155;
            --brand-muted: #64748B;
            --brand-gradient: linear-gradient(135deg, #00C853 0%, #00B8D4 100%);
            --brand-gradient-hover: linear-gradient(135deg, #00B8D4 0%, #00C853 100%);
            --brand-border: rgba(15, 23, 42, 0.08);
            --card-radius: 24px;
            --card-shadow: 0 12px 32px -8px rgba(15, 23, 42, 0.06);
            --card-shadow-hover: 0 20px 40px -12px rgba(0, 200, 83, 0.18);
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
            background-color: var(--brand-gray-bg);
            color: var(--brand-text);
            overflow-x: hidden;
            -webkit-font-smoothing: antialiased;
        }

        .font-num {
            font-family: "DIN Alternate", -apple-system, BlinkMacSystemFont, "Inter", monospace;
            font-variant-numeric: tabular-nums;
        }

        .bg-brand-gradient {
            background: var(--brand-gradient);
        }

        .text-brand-gradient {
            background: var(--brand-gradient);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
        }

        .bento-card {
            border-radius: var(--card-radius);
            background: #FFFFFF;
            border: 1px solid var(--brand-border);
            box-shadow: var(--card-shadow);
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }

        .bento-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--card-shadow-hover);
            border-color: rgba(0, 200, 83, 0.3);
        }

        .bento-card-dark {
            border-radius: var(--card-radius);
            background: #111C2B;
            border: 1px solid rgba(255, 255, 255, 0.08);
            box-shadow: 0 16px 36px -10px rgba(0, 0, 0, 0.4);
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }

        .bento-card-dark:hover {
            transform: translateY(-4px);
            border-color: rgba(0, 184, 212, 0.4);
            box-shadow: 0 20px 40px -10px rgba(0, 184, 212, 0.2);
        }

        .data-badge {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 4px 12px;
            border-radius: 9999px;
            font-size: 0.8125rem;
            font-weight: 600;
            background: rgba(0, 200, 83, 0.1);
            color: #009624;
            border: 1px solid rgba(0, 200, 83, 0.2);
        }

        .data-badge-cyan {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 4px 12px;
            border-radius: 9999px;
            font-size: 0.8125rem;
            font-weight: 600;
            background: rgba(0, 184, 212, 0.12);
            color: #0097A7;
            border: 1px solid rgba(0, 184, 212, 0.25);
        }

        .data-badge-dark {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 4px 12px;
            border-radius: 9999px;
            font-size: 0.8125rem;
            font-weight: 600;
            background: rgba(255, 255, 255, 0.08);
            color: #38BDF8;
            border: 1px solid rgba(255, 255, 255, 0.15);
        }

        .btn-gradient {
            background: var(--brand-gradient);
            color: #FFFFFF;
            font-weight: 600;
            border-radius: 9999px;
            transition: all 0.3s ease;
            box-shadow: 0 8px 20px -4px rgba(0, 200, 83, 0.35);
        }

        .btn-gradient:hover {
            background: var(--brand-gradient-hover);
            box-shadow: 0 12px 24px -4px rgba(0, 184, 212, 0.45);
            transform: translateY(-2px);
        }

        .sound-wave-bar {
            animation: soundWave 1.4s ease-in-out infinite alternate;
        }

        @keyframes soundWave {
            0% { height: 15%; }
            50% { height: 95%; }
            100% { height: 35%; }
        }

        .pulse-dot {
            animation: pulseDot 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
        }

        @keyframes pulseDot {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.4; transform: scale(0.85); }
        }
