/* roulang page: index */
:root {
      --primary: #00E575;
      --primary-hover: #00C864;
      --accent: #FF5500;
      --bg-dark: #0E1117;
      --surface-dark: #161B22;
      --card-dark: #1F242C;
      --border-dark: #2D333B;
      --text-main: #1E293B;
      --text-muted: #64748B;
      --border-light: #E2E8F0;
      --trans-spring: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    }
    html {
      scroll-behavior: smooth;
    }
    body {
      color: #1E293B;
      background-color: #FFFFFF;
      line-height: 1.75;
      -webkit-font-smoothing: antialiased;
    }
    .custom-trans {
      transition: var(--trans-spring);
    }
    .custom-trans:hover {
      transform: translateY(-3px);
    }
    .btn-brand {
      background-color: var(--primary);
      color: #0E1117;
      font-weight: 700;
      transition: var(--trans-spring);
    }
    .btn-brand:hover {
      background-color: var(--primary-hover);
      box-shadow: 0 8px 24px -4px rgba(0, 229, 117, 0.35);
    }
    .btn-brand:active {
      transform: scale(0.98);
    }
    .btn-outline {
      border: 1px solid var(--border-dark);
      background-color: rgba(255, 255, 255, 0.05);
      color: #F8FAFC;
      transition: var(--trans-spring);
    }
    .btn-outline:hover {
      border-color: var(--primary);
      color: var(--primary);
      background-color: rgba(0, 229, 117, 0.08);
    }
    .hero-badge-glow {
      box-shadow: 0 0 15px rgba(0, 229, 117, 0.25);
    }
    .metric-number {
      font-family: 'DIN', 'Montserrat', 'Inter', sans-serif;
      letter-spacing: -0.03em;
    }
    /* 平滑折叠 */
    details summary::-webkit-details-marker {
      display: none;
    }
    details[open] summary svg {
      transform: rotate(180deg);
    }

/* roulang page: category1 */
:root {
      --primary: #00E575;
      --primary-hover: #00C864;
      --accent: #FF5500;
      --bg-dark: #0E1117;
      --surface-dark: #161B22;
      --card-dark: #1F242C;
      --border-dark: #2D333B;
      --text-main: #1E293B;
      --text-muted: #64748B;
      --border-light: #E2E8F0;
      --trans-spring: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    }
    html {
      scroll-behavior: smooth;
    }
    body {
      color: #1E293B;
      background-color: #FFFFFF;
      line-height: 1.75;
      -webkit-font-smoothing: antialiased;
    }
    .custom-trans {
      transition: var(--trans-spring);
    }
    .btn-brand {
      background-color: var(--primary);
      color: #0E1117;
      font-weight: 700;
      transition: var(--trans-spring);
    }
    .btn-brand:hover {
      background-color: var(--primary-hover);
      box-shadow: 0 8px 24px -4px rgba(0, 229, 117, 0.35);
    }
    .btn-brand:active {
      transform: scale(0.98);
    }
    .btn-outline {
      border: 1px solid var(--border-dark);
      background-color: rgba(255, 255, 255, 0.05);
      color: #F8FAFC;
      transition: var(--trans-spring);
    }
    .btn-outline:hover {
      border-color: var(--primary);
      color: var(--primary);
      background-color: rgba(0, 229, 117, 0.08);
    }
    .hero-badge-glow {
      box-shadow: 0 0 15px rgba(0, 229, 117, 0.25);
    }
    /* 分类页特有斜切与卡片样式 */
    .hero-slant {
      clip-path: polygon(0 0, 100% 0, 100% calc(100% - 4vw), 0 100%);
    }
    .category-card {
      transition: var(--trans-spring);
      border: 1px solid #E2E8F0;
    }
    .category-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 16px 32px -8px rgba(14, 17, 23, 0.08);
      border-color: rgba(0, 229, 117, 0.5);
    }
    .filter-btn.active {
      background-color: #0E1117;
      color: #00E575;
      border-color: #0E1117;
    }
    .filter-btn {
      transition: var(--trans-spring);
    }
    .filter-btn:hover:not(.active) {
      border-color: #94A3B8;
      color: #0E1117;
    }
    a:focus-visible, button:focus-visible {
      outline: 2px solid var(--primary);
      outline-offset: 2px;
    }
