/* roulang page: index */
:root {
            --primary: #1d4ed8;
            --primary-accent: #0284c7;
            --bg-canvas: #ffffff;
            --bg-subtle: #f8fafc;
            --text-main: #0f172a;
            --text-body: #334155;
            --text-muted: #64748b;
            --border-line: #e2e8f0;
            --card-shadow: 0 4px 25px -4px rgba(15, 23, 42, 0.05), 0 2px 10px -2px rgba(15, 23, 42, 0.03);
            --card-hover-shadow: 0 20px 25px -5px rgba(29, 78, 216, 0.08), 0 8px 10px -6px rgba(29, 78, 216, 0.04);
        }

        body {
            color: var(--text-body);
            background-color: var(--bg-canvas);
            font-feature-settings: "cv02", "cv03", "cv04", "cv11";
            -webkit-font-smoothing: antialiased;
        }

        .custom-shadow {
            box-shadow: var(--card-shadow);
        }

        .custom-shadow:hover {
            box-shadow: var(--card-hover-shadow);
        }

        .grid-pattern {
            background-size: 32px 32px;
            background-image: 
                linear-gradient(to right, rgba(226, 232, 240, 0.4) 1px, transparent 1px),
                linear-gradient(to bottom, rgba(226, 232, 240, 0.4) 1px, transparent 1px);
        }

        .code-pill {
            display: inline-flex;
            align-items: center;
            padding: 0.15rem 0.6rem;
            border-radius: 9999px;
            font-family: var(--font-mono, monospace);
            font-size: 0.75rem;
            background-color: #f1f5f9;
            color: #1e293b;
            border: 1px solid #cbd5e1;
        }

        .ping-dot {
            position: relative;
            display: inline-flex;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background-color: #10b981;
        }

        .ping-dot::after {
            content: '';
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 50%;
            background-color: #10b981;
            animation: pulse-ring 2s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
        }

        @keyframes pulse-ring {
            0% { transform: scale(0.9); opacity: 0.8; }
            100% { transform: scale(2.6); opacity: 0; }
        }

        details > summary::-webkit-details-marker {
            display: none;
        }

/* roulang page: category2 */
:root {
      --primary: #1d4ed8;
      --primary-accent: #0284c7;
      --bg-canvas: #ffffff;
      --bg-subtle: #f8fafc;
      --text-main: #0f172a;
      --text-body: #334155;
      --text-muted: #64748b;
      --border-line: #e2e8f0;
      --card-shadow: 0 4px 25px -4px rgba(15, 23, 42, 0.05), 0 2px 10px -2px rgba(15, 23, 42, 0.03);
      --card-hover-shadow: 0 20px 25px -5px rgba(29, 78, 216, 0.08), 0 8px 10px -6px rgba(29, 78, 216, 0.04);
    }
    body {
      color: var(--text-body);
      background-color: var(--bg-canvas);
      font-feature-settings: "cv02", "cv03", "cv04", "cv11";
      -webkit-font-smoothing: antialiased;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    }
    .custom-shadow {
      box-shadow: var(--card-shadow);
    }
    .custom-shadow:hover {
      box-shadow: var(--card-hover-shadow);
    }
    .grid-pattern {
      background-size: 32px 32px;
      background-image: 
        linear-gradient(to right, rgba(226, 232, 240, 0.4) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(226, 232, 240, 0.4) 1px, transparent 1px);
    }
    .code-pill {
      display: inline-flex;
      align-items: center;
      padding: 0.15rem 0.6rem;
      border-radius: 9999px;
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
      font-size: 0.75rem;
      background-color: #f1f5f9;
      color: #1e293b;
      border: 1px solid #cbd5e1;
    }
    .faq-answer {
      transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease;
    }

/* roulang page: category1 */
:root {
      --primary: #1d4ed8;
      --primary-accent: #0284c7;
      --bg-canvas: #ffffff;
      --bg-subtle: #f8fafc;
      --text-main: #0f172a;
      --text-body: #334155;
      --text-muted: #64748b;
      --border-line: #e2e8f0;
      --card-shadow: 0 4px 25px -4px rgba(15, 23, 42, 0.05), 0 2px 10px -2px rgba(15, 23, 42, 0.03);
      --card-hover-shadow: 0 20px 25px -5px rgba(29, 78, 216, 0.08), 0 8px 10px -6px rgba(29, 78, 216, 0.04);
    }
    body {
      color: var(--text-body);
      background-color: var(--bg-canvas);
      font-feature-settings: "cv02", "cv03", "cv04", "cv11";
      -webkit-font-smoothing: antialiased;
    }
    .custom-shadow {
      box-shadow: var(--card-shadow);
      transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .custom-shadow:hover {
      box-shadow: var(--card-hover-shadow);
      transform: translateY(-2px);
    }
    .grid-pattern {
      background-size: 32px 32px;
      background-image: 
        linear-gradient(to right, rgba(226, 232, 240, 0.5) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(226, 232, 240, 0.5) 1px, transparent 1px);
    }
    .code-pill {
      display: inline-flex;
      align-items: center;
      padding: 0.15rem 0.6rem;
      border-radius: 9999px;
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
      font-size: 0.75rem;
      background-color: #f1f5f9;
      color: #1e293b;
      border: 1px solid #cbd5e1;
    }
    .accordion-content {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.3s ease-in-out;
    }
    .accordion-content.open {
      max-height: 240px;
    }

/* roulang page: category4 */
:root {
      --primary: #1d4ed8;
      --primary-accent: #0284c7;
      --bg-canvas: #ffffff;
      --bg-subtle: #f8fafc;
      --text-main: #0f172a;
      --text-body: #334155;
      --text-muted: #64748b;
      --border-line: #e2e8f0;
      --card-shadow: 0 4px 25px -4px rgba(15, 23, 42, 0.05), 0 2px 10px -2px rgba(15, 23, 42, 0.03);
      --card-hover-shadow: 0 20px 25px -5px rgba(29, 78, 216, 0.08), 0 8px 10px -6px rgba(29, 78, 216, 0.04);
    }
    body {
      color: var(--text-body);
      background-color: var(--bg-canvas);
      font-feature-settings: "cv02", "cv03", "cv04", "cv11";
      -webkit-font-smoothing: antialiased;
    }
    .custom-shadow {
      box-shadow: var(--card-shadow);
    }
    .custom-shadow:hover {
      box-shadow: var(--card-hover-shadow);
    }
    .grid-pattern {
      background-size: 32px 32px;
      background-image: 
        linear-gradient(to right, rgba(226, 232, 240, 0.4) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(226, 232, 240, 0.4) 1px, transparent 1px);
    }
    .code-pill {
      display: inline-flex;
      align-items: center;
      padding: 0.15rem 0.6rem;
      border-radius: 9999px;
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
      font-size: 0.75rem;
      background-color: #f1f5f9;
      color: #1e293b;
      border: 1px solid #cbd5e1;
    }
    .report-card {
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    .report-card:hover {
      transform: translateY(-3px);
    }

/* roulang page: category3 */
:root {
      --primary: #1d4ed8;
      --primary-accent: #0284c7;
      --bg-canvas: #ffffff;
      --bg-subtle: #f8fafc;
      --text-main: #0f172a;
      --text-body: #334155;
      --text-muted: #64748b;
      --border-line: #e2e8f0;
      --card-shadow: 0 4px 25px -4px rgba(15, 23, 42, 0.05), 0 2px 10px -2px rgba(15, 23, 42, 0.03);
      --card-hover-shadow: 0 20px 25px -5px rgba(29, 78, 216, 0.08), 0 8px 10px -6px rgba(29, 78, 216, 0.04);
    }
    body {
      color: var(--text-body);
      background-color: var(--bg-canvas);
      font-feature-settings: "cv02", "cv03", "cv04", "cv11";
      -webkit-font-smoothing: antialiased;
    }
    .custom-shadow {
      box-shadow: var(--card-shadow);
      transition: all 0.25s ease-in-out;
    }
    .custom-shadow:hover {
      box-shadow: var(--card-hover-shadow);
      transform: translateY(-2px);
    }
    .grid-pattern {
      background-size: 32px 32px;
      background-image: 
        linear-gradient(to right, rgba(226, 232, 240, 0.5) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(226, 232, 240, 0.5) 1px, transparent 1px);
    }
    .code-pill {
      display: inline-flex;
      align-items: center;
      padding: 0.15rem 0.6rem;
      border-radius: 9999px;
      font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
      font-size: 0.75rem;
      background-color: #f1f5f9;
      color: #1e293b;
      border: 1px solid #cbd5e1;
    }
