/* roulang page: index */
:root {
            --bg-deep: #070D0A;
            --bg-card: #121815;
            --bg-card-hover: #18201C;
            --color-glow: #00E676;
            --color-cyan: #06B6D4;
            --text-main: #E2E8F0;
            --text-sub: #94A3B8;
            --border-line: rgba(0, 230, 118, 0.15);
        }
        body {
            background-color: var(--bg-deep);
            color: var(--text-main);
            font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
            line-height: 1.75;
            overflow-x: hidden;
        }
        .glow-border {
            border: 1px solid var(--border-line);
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .glow-border:hover {
            border-color: rgba(0, 230, 118, 0.45);
            box-shadow: 0 0 20px rgba(0, 230, 118, 0.12);
        }
        .tactical-grid {
            background-image: linear-gradient(rgba(0, 230, 118, 0.03) 1px, transparent 1px),
                              linear-gradient(90deg, rgba(0, 230, 118, 0.03) 1px, transparent 1px);
            background-size: 32px 32px;
        }
        .radar-pulse {
            position: relative;
        }
        .radar-pulse::after {
            content: '';
            position: absolute;
            inset: -4px;
            border-radius: 9999px;
            background: rgba(0, 230, 118, 0.2);
            animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
        }
        @keyframes pulse-ring {
            0% { transform: scale(0.95); opacity: 0.8; }
            50% { transform: scale(1.3); opacity: 0; }
            100% { transform: scale(0.95); opacity: 0; }
        }
