/* roulang page: index */
:root {
      --brand-primary: #1e40af;
      --brand-accent: #06b6d4;
      --text-main: #0f172a;
      --text-muted: #475569;
      --bg-light: #f8fafc;
      --border-color: #e2e8f0;
      --radius-card: 1.25rem;
    }
    body {
      color: var(--text-main);
      background-color: #ffffff;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
      text-rendering: optimizeLegibility;
      -webkit-font-smoothing: antialiased;
    }
    .custom-card {
      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
      border-radius: var(--radius-card);
    }
    .custom-card:hover {
      transform: translateY(-4px);
    }
    .custom-badge {
      display: inline-flex;
      align-items: center;
      padding: 0.25rem 0.75rem;
      border-radius: 9999px;
      font-size: 0.8125rem;
      font-weight: 600;
    }
    .audio-wave {
      display: flex;
      align-items: center;
      gap: 3px;
    }
    .audio-wave span {
      display: block;
      width: 3px;
      background: #06b6d4;
      border-radius: 2px;
      animation: wave 1.2s ease-in-out infinite;
    }
    .audio-wave span:nth-child(2) { height: 16px; animation-delay: 0.15s; }
    .audio-wave span:nth-child(3) { height: 26px; animation-delay: 0.3s; }
    .audio-wave span:nth-child(4) { height: 12px; animation-delay: 0.45s; }
    .audio-wave span:nth-child(5) { height: 20px; animation-delay: 0.2s; }
    .audio-wave span:nth-child(6) { height: 10px; animation-delay: 0.5s; }
    @keyframes wave {
      0%, 100% { transform: scaleY(0.4); }
      50% { transform: scaleY(1); }
    }
