/* roulang page: index */
:root {
            --bg-base: #0A0D14;
            --bg-surface: #111622;
            --bg-elevated: #182030;
            --accent-green: #00E599;
            --accent-green-hover: #00C784;
            --accent-blue: #0075FF;
            --border-dim: rgba(255, 255, 255, 0.08);
            --border-focus: rgba(0, 229, 153, 0.4);
            --text-main: #FFFFFF;
            --text-muted: #94A3B8;
            --text-dim: #64748B;
        }

        body {
            background-color: var(--bg-base);
            color: #CBD5E1;
            font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
            line-height: 1.8;
            overflow-x: hidden;
            -webkit-font-smoothing: antialiased;
        }

        .code-font {
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
        }

        .glow-green {
            box-shadow: 0 0 25px rgba(0, 229, 153, 0.15);
        }

        .glow-blue {
            box-shadow: 0 0 25px rgba(0, 117, 255, 0.15);
        }

        .bg-grid-pattern {
            background-image: radial-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px);
            background-size: 28px 28px;
        }

        .tab-btn.active {
            color: var(--accent-green);
            border-bottom: 2px solid var(--accent-green);
        }

        /* 呼吸微光动效 */
        @keyframes pulse-glow {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.6; transform: scale(0.96); }
        }
        .pulse-dot {
            animation: pulse-glow 2s infinite ease-in-out;
        }
