/* roulang page: index */
:root {
      --primary-black: #111318;
      --dark-surface: #0B0D11;
      --accent-green: #00E575;
      --accent-orange: #FF5500;
      --border-line: rgba(255, 255, 255, 0.08);
    }
    body {
      font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
      background-color: var(--primary-black);
      color: #F8F9FA;
      -webkit-font-smoothing: antialiased;
    }
    .custom-scrollbar::-webkit-scrollbar {
      width: 6px;
      height: 6px;
    }
    .custom-scrollbar::-webkit-scrollbar-thumb {
      background: #2A303C;
      border-radius: 3px;
    }
    .grid-pattern {
      background-size: 32px 32px;
      background-image: linear-gradient(to right, rgba(255, 255, 255, 0.03) 1px, transparent 1px),
                        linear-gradient(to bottom, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
    }
    .card-border-glow {
      border: 1px solid rgba(255, 255, 255, 0.08);
      transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    }
    .card-border-glow:hover {
      border-color: rgba(0, 229, 117, 0.4);
      transform: translateY(-4px);
      box-shadow: 0 12px 32px rgba(0, 229, 117, 0.08);
    }
    .badge-pulse {
      position: relative;
    }
    .badge-pulse::after {
      content: '';
      position: absolute;
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: var(--accent-green);
      animation: ripple 2s infinite ease-out;
    }
    @keyframes ripple {
      0% { transform: scale(1); opacity: 1; }
      100% { transform: scale(2.6); opacity: 0; }
    }
