 :root {
            --color-1: #2d7a5f;
            --color-2: #1e5975;
            --color-3: #d97724;
            --color-4: #b33659;
            --bg-color: #fff;
        }

/* Demo spacer to allow scrolling testing */
        .scroll-prompt {
            text-align: center;
            margin-bottom: 50vh;
            color: #666;
            font-size: 1.2rem;
        }

        /* Responsive Flow Container */
        .flow-container {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 1rem;
            max-width: 1200px;
            width: 100%;
            position: relative;
            align-items: flex-start;
            margin: 10px auto;
        }

        /* Step Node Wrapper (Hidden by default) */
        .step-node {
            display: flex;
            flex-direction: column;
            align-items: center;
            text-align: center;
            position: relative;
            opacity: 0;
            transform: translateY(30px);
        }

        /* Arrow Containers (Hidden by default) */
        .arrow-divider {
            display: flex;
            justify-content: center;
            align-items: center;
            opacity: 0;
            transform: scale(0.7);
            position: absolute;
            width: 40px;
            height: 40px;
            z-index: 10;
        }

        /* Positioning arrows precisely between grid items on desktop */
        .arrow-divider:nth-child(2) { left: 22%; }
        .arrow-divider:nth-child(4) { left: 50%; }
        .arrow-divider:nth-child(6) { left: 72%; }

        /* --- Animation Triggers via Javascript --- */
        .flow-container.animate .step-node {
            animation: fadeInUp 0.8s ease forwards;
        }

        .flow-container.animate .arrow-divider {
            animation: zoomInArrow 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
        }

        /* Stair-step layout offsets and Delays for large screens */
        @media (min-width: 769px) {
            .step-node:nth-child(1) { margin-top: 120px; }
            .step-node:nth-child(3) { margin-top: 40px; }
            .step-node:nth-child(5) { margin-top: 120px; }
            .step-node:nth-child(7) { margin-top: 0px; }
            
            /* Staggered entry delays when active */
            .flow-container.animate .step-node:nth-child(1) { animation-delay: 0.2s; }
            .flow-container.animate .arrow-divider:nth-child(2) { animation-delay: 0.6s; margin-top: 140px; }
            .flow-container.animate .step-node:nth-child(3) { animation-delay: 0.8s; margin-top: 40px; }
            .flow-container.animate .arrow-divider:nth-child(4) { animation-delay: 1.2s; margin-top: 110px; }
            .flow-container.animate .step-node:nth-child(5) { animation-delay: 1.4s; margin-top: 120px; }
            .flow-container.animate .arrow-divider:nth-child(6) { animation-delay: 1.8s; margin-top: 130px; }
            .flow-container.animate .step-node:nth-child(7) { animation-delay: 2.0s; }
        }

        /* Circle Image Container styles */
        .circle-wrapper {
            position: relative;
            width: 100%;
            max-width: 220px;
            aspect-ratio: 1 / 1;
            border-radius: 50%;
            padding: 6px;
            background: white;
            box-shadow: 0 10px 25px rgba(0,0,0,0.08);
            transition: transform 0.3s ease;
        }

        .circle-wrapper:hover {
            transform: scale(1.05);
        }

        /* Step-specific border colors */
        .step-node:nth-child(1) .circle-wrapper { border: 4px solid var(--color-1); }
        .step-node:nth-child(3) .circle-wrapper { border: 4px solid var(--color-2); }
        .step-node:nth-child(5) .circle-wrapper { border: 4px solid var(--color-3); }
        .step-node:nth-child(7) .circle-wrapper { border: 4px solid var(--color-4); }

        .circle-image {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: 50%;
        }

        /* Number Badges */
        .number-badge {
            position: absolute;
            bottom: -15px;
            left: 50%;
            transform: translateX(-50%);
            width: 40px;
            height: 40px;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: 500;
            font-size: 1.5rem;
            color: #222;
            box-shadow: 0 4px 10px rgba(0,0,0,0.15);
        }

        .step-node:nth-child(1) .number-badge { background-color: #a3d9c9; }
        .step-node:nth-child(3) .number-badge { background-color: #a9cfe2; }
        .step-node:nth-child(5) .number-badge { background-color: #fcd4b4; }
        .step-node:nth-child(7) .number-badge { background-color: #f7c3d1; }

        /* Typography */
        .step-text {
            margin-top: 2rem;
            font-size: 22px;
            font-weight: 500;
            line-height: 1.4;
            padding: 0 5px;
        }

        .step-node:nth-child(1) .step-text { color: var(--color-1); }
        .step-node:nth-child(3) .step-text { color: var(--color-2); }
        .step-node:nth-child(5) .step-text { color: var(--color-3); }
        .step-node:nth-child(7) .step-text { color: var(--color-4); }

        .arrow-img {
            width: 100%;
            height: auto;
        }

        /* Keyframe Definitions */
        @keyframes fadeInUp {
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes zoomInArrow {
            to {
                opacity: 1;
                transform: scale(1);
            }
        }

        /* Mobile Breakpoint */
        @media (max-width: 768px) {
            .flow-container {
                grid-template-columns: 1fr;
                gap: 3rem;
                justify-items: center;
            }

            .step-node {
                max-width: 300px;
                margin-top: 0 !important;
            }

            .flow-container.animate .step-node {
                animation-delay: 0.2s !important; 
            }

            .arrow-divider {
                position: relative;
                left: auto !important;
                top: auto !important;
                margin: 1rem 0 -1rem 0 !important;
                transform: rotate(90deg) scale(0.7);
            }

            .flow-container.animate .arrow-divider {
                animation: zoomInArrowMobile 0.6s forwards !important;
            }
        }

        @keyframes zoomInArrowMobile {
            to {
                opacity: 1;
                transform: rotate(90deg) scale(1);
            }
        }