/* roulang page: index */
:root {
            --brand-primary: #1e40af;
            --brand-secondary: #0ea5e9;
            --bg-canvas: #f8fafc;
            --bg-card: #ffffff;
            --text-heading: #0f172a;
            --text-body: #334155;
            --text-muted: #64748b;
            --border-light: #e2e8f0;
            --shadow-soft: 0 10px 25px -5px rgba(15, 23, 42, 0.05), 0 8px 10px -6px rgba(15, 23, 42, 0.03);
            --shadow-hover: 0 20px 30px -10px rgba(30, 64, 175, 0.12), 0 10px 15px -5px rgba(15, 23, 42, 0.04);
        }

        html {
            scroll-behavior: smooth;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
            background-color: var(--bg-canvas);
            color: var(--text-body);
            overflow-x: hidden;
        }

        .hero-banner-mask {
            background: linear-gradient(180deg, rgba(15, 23, 42, 0.78) 0%, rgba(15, 23, 42, 0.92) 100%);
        }

        .service-card {
            background-color: var(--bg-card);
            border: 1px solid var(--border-light);
            border-radius: 1rem;
            transition: all 0.28s ease;
            box-shadow: var(--shadow-soft);
        }

        .service-card:hover {
            transform: translateY(-4px);
            box-shadow: var(--shadow-hover);
            border-color: #cbd5e1;
        }

        .timeline-line::before {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            left: 50%;
            width: 2px;
            background: repeating-linear-gradient(to bottom, #2563eb, #2563eb 6px, transparent 6px, transparent 12px);
            transform: translateX(-50%);
        }

        @media (max-width: 768px) {
            .timeline-line::before {
                left: 20px;
            }
        }
