/* roulang page: index */
:root {
      --brand-primary: #00FF87;
      --brand-accent: #00D2FF;
      --bg-main: #0A0D0F;
      --bg-card: rgba(255, 255, 255, 0.03);
      --border-subtle: rgba(255, 255, 255, 0.08);
    }
    body {
      background-color: var(--bg-main);
      color: #94A3B8;
      overflow-x: hidden;
      font-feature-settings: "cv02", "cv03", "cv04", "cv11";
    }
    .text-titanium { color: #FFFFFF; }
    .neon-border {
      border: 1px solid var(--border-subtle);
      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
    }
    .neon-border:hover {
      border-color: rgba(0, 255, 135, 0.4);
      box-shadow: 0 0 20px rgba(0, 255, 135, 0.12);
      transform: translateY(-3px);
    }
    .neon-text-glow {
      text-shadow: 0 0 12px rgba(0, 255, 135, 0.5);
    }
    /* 脉冲光斑 */
    .live-pulse {
      box-shadow: 0 0 0 0 rgba(0, 255, 135, 0.7);
      animation: pulse-ring 1.8s infinite;
    }
    @keyframes pulse-ring {
      0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(0, 255, 135, 0.7); }
      70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(0, 255, 135, 0); }
      100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(0, 255, 135, 0); }
    }
    .bg-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);
    }
