/* roulang page: index */
:root {
      --color-primary: #2563eb;
      --color-primary-dark: #0f172a;
      --color-accent: #059669;
      --color-accent-light: #10b981;
      --color-cyan: #06b6d4;
      --bg-page: #f8fafc;
      --text-main: #0f172a;
      --text-muted: #64748b;
      --radius-card: 1.25rem;
    }

    * {
      box-sizing: border-box;
      -webkit-font-smoothing: antialiased;
    }

    body {
      background-color: var(--bg-page);
      color: var(--text-main);
      font-family: system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
      overflow-x: hidden;
    }

    .brand-gradient {
      background: linear-gradient(135deg, #2563eb 0%, #06b6d4 100%);
    }

    .brand-gradient-hover:hover {
      background: linear-gradient(135deg, #1d4ed8 0%, #0891b2 100%);
    }

    .brand-gradient-text {
      background: linear-gradient(135deg, #2563eb 0%, #06b6d4 100%);
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
    }

    .glass-nav {
      backdrop-filter: blur(12px);
      -webkit-backdrop-filter: blur(12px);
      background: rgba(255, 255, 255, 0.92);
    }

    .bento-card {
      background: #ffffff;
      border: 1px solid rgba(226, 232, 240, 0.85);
      border-radius: var(--radius-card);
      transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    }

    .bento-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 16px 32px -8px rgba(15, 23, 42, 0.08);
      border-color: rgba(37, 99, 235, 0.3);
    }

    .data-badge {
      display: inline-flex;
      align-items: center;
      gap: 0.375rem;
      border-radius: 9999px;
      padding: 0.25rem 0.75rem;
      font-size: 0.75rem;
      font-weight: 600;
      line-height: 1rem;
      background: rgba(16, 185, 129, 0.1);
      color: #047857;
      border: 1px solid rgba(16, 185, 129, 0.25);
    }

    .tech-pill {
      display: inline-flex;
      align-items: center;
      gap: 0.25rem;
      padding: 0.2rem 0.6rem;
      border-radius: 0.375rem;
      background: #f1f5f9;
      color: #475569;
      font-size: 0.75rem;
      font-weight: 500;
    }

    .pulse-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background-color: #10b981;
      box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
      animation: pulse-ring 2s infinite;
    }

    @keyframes pulse-ring {
      0% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
      }
      70% {
        box-shadow: 0 0 0 8px rgba(16, 185, 129, 0);
      }
      100% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
      }
    }

    .accordion-content {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.35s ease-out;
    }

    .accordion-item.active .accordion-content {
      max-height: 280px;
    }

    .accordion-item.active .accordion-chevron {
      transform: rotate(180deg);
    }
