
* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
    width: 100%;
}

body {
    font-family: Arial, Helvetica, sans-serif;
    background: #ffffff;
    color: #09295f;
    overflow-x: hidden;
}


/* =========================================================
   MAIN SECTION
========================================================= */

.process-section {
    position: relative;
    width: 100%;
    overflow: hidden;

    background:
        radial-gradient(
            circle at 50% 35%,
            #ffffff 0%,
            #f8fcff 43%,
            #eaf7ff 100%
        );
}

.process-container {
    position: relative;
    width: 100%;
    max-width: 1600px;
    margin: 0 auto;

    z-index: 5;
}


/* =========================================================
   BACKGROUND SHAPES
========================================================= */

.bg-shape {
    position: absolute;
    pointer-events: none;
    z-index: 0;
}

.bg-left-top {
    width: 390px;
    height: 280px;

    left: -225px;
    top: -105px;

    background: rgba(183, 221, 250, .32);

    border-radius: 0 0 70% 0;

    transform: rotate(-8deg);
}

.bg-right-top {
    width: 350px;
    height: 270px;

    right: -190px;
    top: 55px;

    background: rgba(185, 224, 252, .25);

    border-radius: 60% 0 0 60%;

    transform: rotate(-15deg);
}

.bg-left-middle {
    width: 350px;
    height: 175px;

    left: -230px;
    top: 420px;

    background: rgba(170, 220, 252, .25);

    border-radius: 50%;

    transform: rotate(18deg);
}

.bg-right-middle {
    width: 370px;
    height: 180px;

    right: -250px;
    top: 510px;

    background: rgba(170, 220, 252, .21);

    border-radius: 50%;

    transform: rotate(-18deg);
}


/* =========================================================
   DOTS
========================================================= */

.dots {
    position: absolute;

    width: 92px;
    height: 92px;

    opacity: .42;

    background-image:
        radial-gradient(
            #8bcfff 1.5px,
            transparent 1.5px
        );

    background-size: 15px 15px;

    z-index: 1;
}

.dots-left {
    left: 5px;
    top: 145px;
}

.dots-right {
    right: 5px;
    top: 205px;
}


/* =========================================================
   HEADER
========================================================= */

.process-header {
    position: relative;
    z-index: 10;

    text-align: center;

    padding:
        16px
        20px
        17px;
}

.process-menu {
    margin-bottom: 13px;

    color: #5c7196;

    font-size: 11px;

    letter-spacing: 5px;

    font-weight: 500;
}

.process-title {
    margin: 0;

    color: #08285f;

    font-size: clamp(40px, 4vw, 58px);

    line-height: 1;

    font-weight: 800;

    letter-spacing: -1.5px;
}

.process-title span {
    color: #0871ed;
}

.process-subtitle {
    margin-top: 8px;

    color: #566d92;

    font-size: clamp(16px, 1.5vw, 22px);

    line-height: 1.2;
}

.title-line {
    position: relative;

    width: 130px;
    height: 1px;

    margin:
        11px auto
        7px;

    background: #91bce7;
}

.title-line::after {
    content: "";

    position: absolute;

    width: 10px;
    height: 10px;

    top: 50%;
    left: 50%;

    transform:
        translate(-50%, -50%);

    background: #0874ed;

    border-radius: 50%;

    box-shadow:
        0 0 0 4px rgba(8,116,237,.10);
}

.commitment {
    color: #62779d;

    font-size: 9px;

    letter-spacing: 5px;
}

.handwritten {
    position: absolute;

    top: 49px;
    right: 45px;

    color: #08285f;

    font-family:
        "Brush Script MT",
        "Segoe Script",
        cursive;

    font-size: 19px;

    line-height: .95;

    text-align: left;

    transform: rotate(-7deg);
}

.handwritten::after {
    content: "";

    display: block;

    width: 76px;
    height: 3px;

    margin:
        8px
        0
        0
        28px;

    background: #0875ed;

    border-radius: 50%;

    transform: rotate(-8deg);
}


/* =========================================================
   DESKTOP PROCESS
========================================================= */

.desktop-process {
    position: relative;

    z-index: 10;

    display: flex;

    align-items: flex-start;

    width: 100%;

    padding:
        0
        28px
        10px;
}

.desktop-step {
    position: relative;

    flex: 1;

    min-width: 0;

    text-align: center;
}

.desktop-circle-area {
    position: relative;

    width: 92px;
    height: 92px;

    margin:
        0
        auto
        13px;
}

.desktop-circle {
    position: absolute;

    inset: 0;

    display: flex;

    align-items: center;
    justify-content: center;

    border:
        2px solid #2aaeff;

    border-left-color: #0874ed;

    border-radius: 50%;

    background: rgba(255,255,255,.70);
}

.desktop-circle::before {
    content: "";

    width: 64px;
    height: 64px;

    border-radius: 50%;

    background: #0874ed;

    box-shadow:
        0 6px 14px rgba(0,100,220,.13);
}

.desktop-circle i {
    position: absolute;

    color: #ffffff;

    font-size: 29px;

    line-height: 1;
}

.desktop-number {
    position: absolute;

    left: 0;
    top: 64px;

    z-index: 5;

    color: #0870e9;

    font-size: 14px;

    font-weight: 800;
}

.desktop-index {
    position: absolute;

    left: 50%;
    bottom: -15px;

    transform:
        translateX(-50%);

    color: #0870e9;

    font-size: 14px;

    font-weight: 800;
}

.desktop-step-title {
    width: 100%;
    max-width: 155px;

    min-height: 39px;

    margin: 0 auto;

    color: #08285f;

    font-size: 14px;

    line-height: 1.08;

    font-weight: 700;

    text-align: center;
}

.desktop-arrow {
    flex:
        0 0 35px;

    margin-top: 46px;

    color: #0874ed;

    font-size: 23px;

    line-height: 1;

    text-align: center;
}


/* =========================================================
   MOBILE PROCESS
========================================================= */

.mobile-process {
    display: none;

    position: relative;

    z-index: 10;

    padding:
        0
        8px
        5px;
}

.mobile-timeline {
    position: relative;

    width: 100%;

    max-width: 500px;

    margin: 0 auto;
}


/* =========================================================
   MOBILE VERTICAL LINE
========================================================= */

.mobile-timeline::before {
    content: "";

    position: absolute;

    left: 27px;

    top: 27px;
    bottom: 23px;

    width: 2px;

    background:
        repeating-linear-gradient(
            to bottom,

            #0875ed 0,
            #0875ed 6px,

            transparent 6px,
            transparent 12px
        );

    z-index: 0;
}


/* =========================================================
   MOBILE STEP
========================================================= */

.mobile-step {
    position: relative;

    width: 100%;

    /*
       Previously approximately 94px.
       Reduced by around 20%.
    */

    min-height: 76px;

    margin-bottom: 1px;

    display: flex;

    align-items: center;
}


/* =========================================================
   MOBILE NUMBER
========================================================= */

.mobile-number {
    position: absolute;

    left: 1px;
    top: 9px;

    width: 43px;
    height: 43px;

    display: flex;

    align-items: center;
    justify-content: center;

    color: #ffffff;

    background: #0874ed;

    border:
        3px solid #ffffff;

    border-radius: 50%;

    font-size: 16px;

    font-weight: 800;

    z-index: 7;

    box-shadow:
        0 5px 12px rgba(0,80,180,.18);
}


/* =========================================================
   MOBILE ICON
========================================================= */

.mobile-icon-wrapper {
    position: absolute;

    left: 43px;
    top: 1px;

    width: 70px;
    height: 70px;

    display: flex;

    align-items: center;
    justify-content: center;

    border:
        2px solid #1fa9ff;

    border-radius: 50%;

    background:
        rgba(255,255,255,.94);

    z-index: 6;

    box-shadow:
        0 5px 15px rgba(20,110,190,.09);
}

.mobile-icon-wrapper::before {
    content: "";

    width: 49px;
    height: 49px;

    background: #0874ed;

    border-radius: 50%;
}

.mobile-icon-wrapper i {
    position: absolute;

    color: #ffffff;

    font-size: 22px;

    line-height: 1;
}


/* =========================================================
   MOBILE CONTENT CARD
========================================================= */

/*
   VERY IMPORTANT FIX:

   Card begins behind the icon, but the TEXT starts
   sufficiently far to the right.

   This prevents:
   Understand / Property / Site Visits etc.
   from overlapping the icon.
*/

.mobile-content {
    position: relative;

    width:
        calc(100% - 105px);

    min-height: 61px;

    /*
       Card starts after the icon area.
    */
    margin-left: 105px;

    padding:
        8px
        13px
        8px
        27px;

    display: flex;

    flex-direction: column;

    justify-content: center;

    background:
        rgba(255,255,255,.91);

    border-radius:
        0
        35px
        35px
        0;

    box-shadow:
        0 5px 15px rgba(30,110,180,.07);

    z-index: 2;

    text-align: left;
}


/* =========================================================
   MOBILE HEADING
========================================================= */

.mobile-content h3 {
    margin:
        0
        0
        3px;

    padding: 0;

    color: #08285f;

    font-size: 14px;

    line-height: 1.02;

    font-weight: 800;

    text-align: left;
}


/* =========================================================
   MOBILE DESCRIPTION
========================================================= */

.mobile-content p {
    margin: 0;

    padding: 0;

    color: #536a90;

    font-size: 10.5px;

    line-height: 1.12;

    font-weight: 400;

    text-align: left;
}


/* =========================================================
   MOBILE ARROW
========================================================= */

.mobile-arrow {
    position: absolute;

    left: 18px;
    bottom: -4px;

    color: #0875ed;

    font-size: 17px;

    line-height: 1;

    z-index: 8;
}

.mobile-step:last-child .mobile-arrow {
    display: none;
}


/* =========================================================
   SKYLINE
========================================================= */

.skyline {
    position: relative;

    height: 57px;

    margin-top: -4px;

    overflow: hidden;

    z-index: 2;

    opacity: .62;
}

.buildings {
    position: absolute;

    left: 0;
    right: 0;
    bottom: 8px;

    height: 50px;

    display: flex;

    align-items: flex-end;
    justify-content: center;

    gap: 5px;

    opacity: .35;
}

.building {
    position: relative;

    width: 25px;

    background:
        linear-gradient(
            to bottom,
            #76b8ed,
            #e4f4ff
        );

    border:
        1px solid rgba(60,145,225,.25);
}

.building::after {
    content: "";

    position: absolute;

    inset: 5px;

    background:
        repeating-linear-gradient(
            to right,
            transparent 0,
            transparent 6px,
            rgba(70,150,220,.20) 6px,
            rgba(70,150,220,.20) 7px
        ),
        repeating-linear-gradient(
            to bottom,
            transparent 0,
            transparent 7px,
            rgba(70,150,220,.20) 7px,
            rgba(70,150,220,.20) 8px
        );
}

.b1  { height: 29px; }
.b2  { height: 46px; }
.b3  { height: 34px; }
.b4  { height: 53px; }
.b5  { height: 40px; }
.b6  { height: 49px; }
.b7  { height: 32px; }
.b8  { height: 51px; }
.b9  { height: 40px; }
.b10 { height: 46px; }


/* =========================================================
   WAVES
========================================================= */

.bottom-waves {
    position: absolute;

    left: 0;
    bottom: 0;

    width: 100%;
    height: 72px;

    pointer-events: none;

    z-index: 1;
}

.wave-one {
    position: absolute;

    left: -5%;
    bottom: -62px;

    width: 110%;
    height: 105px;

    background: #a5d6f9;

    border-radius:
        50%
        50%
        0
        0;

    transform: rotate(-2deg);
}

.wave-two {
    position: absolute;

    left: -5%;
    bottom: -75px;

    width: 110%;
    height: 105px;

    background: #43a5f3;

    border-radius:
        50%
        50%
        0
        0;

    transform: rotate(2deg);

    opacity: .78;
}


/* =========================================================
   BENEFITS
========================================================= */

.benefits {
    position: relative;

    z-index: 20;

    /*
       Pulled upward.
    */

    margin:
        -15px
        42px
        10px;

    padding:
        10px
        18px;

    background:
        rgba(255,255,255,.95);

    border:
        1px solid rgba(255,255,255,.96);

    border-radius: 18px;

    box-shadow:
        0 6px 18px rgba(25,105,175,.09);
}

.benefit-grid {
    display: grid;

    grid-template-columns:
        repeat(4, 1fr);

    align-items: center;
}

.benefit-item {
    min-height: 46px;

    display: flex;

    align-items: center;
    justify-content: center;

    gap: 9px;

    padding:
        4px
        15px;
}

.benefit-item:not(:last-child) {
    border-right:
        1px solid #79a9e9;
}

.benefit-icon {
    flex: 0 0 auto;

    width: 35px;
    height: 35px;

    display: flex;

    align-items: center;
    justify-content: center;

    color: #0874ed;

    font-size: 28px;
}

.benefit-text {
    color: #173b78;

    font-size: 13px;

    line-height: 1.02;

    font-weight: 500;

    text-align: left;
}


/* =========================================================
   DESKTOP
========================================================= */

@media (min-width: 992px) {

    .desktop-process {
        display: flex;
    }

    .mobile-process {
        display: none;
    }

    /*
       Compact desktop section.
    */

    .process-header {
        padding-top: 14px;
        padding-bottom: 14px;
    }

    .desktop-process {
        padding-bottom: 7px;
    }

    .skyline {
        height: 55px;
        margin-top: -4px;
    }

    .benefits {
        margin-top: -15px;
    }
}


/* =========================================================
   LARGE DESKTOP
========================================================= */

@media (min-width: 1400px) {

    .desktop-process {
        padding-left: 40px;
        padding-right: 40px;
    }

    .desktop-circle-area {
        width: 96px;
        height: 96px;
    }

    .desktop-circle::before {
        width: 68px;
        height: 68px;
    }

    .desktop-circle i {
        font-size: 30px;
    }

    .desktop-number {
        top: 67px;
    }

    .desktop-step-title {
        font-size: 15px;
        max-width: 165px;
    }
}


/* =========================================================
   TABLET
========================================================= */

@media (min-width: 768px)
       and (max-width: 991.98px) {

    .process-title {
        font-size: 50px;
    }

    .handwritten {
        display: none;
    }

    .desktop-process {
        padding-left: 10px;
        padding-right: 10px;
    }

    .desktop-circle-area {
        width: 82px;
        height: 82px;
    }

    .desktop-circle::before {
        width: 58px;
        height: 58px;
    }

    .desktop-circle i {
        font-size: 26px;
    }

    .desktop-number {
        top: 57px;
        font-size: 12px;
    }

    .desktop-index {
        font-size: 12px;
    }

    .desktop-step-title {
        font-size: 12px;
        max-width: 130px;
    }

    .desktop-arrow {
        flex-basis: 23px;
        margin-top: 40px;
        font-size: 19px;
    }

    .benefits {
        margin-left: 12px;
        margin-right: 12px;
    }

    .benefit-item {
        padding-left: 5px;
        padding-right: 5px;
    }

    .benefit-icon {
        font-size: 24px;
    }

    .benefit-text {
        font-size: 11px;
    }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 767.98px) {

    /* -----------------------------------------------------
       MAIN
    ----------------------------------------------------- */

    .process-section {
        min-height: auto;
    }


    /* -----------------------------------------------------
       HEADER
    ----------------------------------------------------- */

    .process-header {
        padding:
            13px
            8px
            10px;
    }

    .process-menu {
        margin-bottom: 9px;

        font-size: 8px;

        letter-spacing: 3.2px;
    }

    .process-title {
        font-size: 34px;

        letter-spacing: -1px;
    }

    .process-subtitle {
        margin-top: 6px;

        font-size: 15px;

        line-height: 1.1;
    }

    .title-line {
        width: 118px;

        margin:
            8px auto
            5px;
    }

    .commitment {
        font-size: 7px;

        letter-spacing: 3.2px;
    }

    .handwritten {
        display: none;
    }


    /* -----------------------------------------------------
       BACKGROUND DOTS
    ----------------------------------------------------- */

    .dots {
        width: 70px;
        height: 70px;

        background-size: 11px 11px;
    }

    .dots-left {
        left: -5px;
        top: 205px;
    }

    .dots-right {
        right: -10px;
        top: 525px;
    }


    /* -----------------------------------------------------
       MOBILE PROCESS
    ----------------------------------------------------- */

    .desktop-process {
        display: none;
    }

    .mobile-process {
        display: block;

        padding:
            0
            7px
            3px;
    }


    /* -----------------------------------------------------
       TIMELINE
    ----------------------------------------------------- */

    .mobile-timeline::before {
        left: 26px;

        top: 25px;
        bottom: 22px;
    }


    /* -----------------------------------------------------
       STEP
    ----------------------------------------------------- */

    .mobile-step {
        min-height: 76px;

        margin-bottom: 1px;
    }


    /* -----------------------------------------------------
       NUMBER
    ----------------------------------------------------- */

    .mobile-number {
        left: 0;
        top: 8px;

        width: 43px;
        height: 43px;

        font-size: 15px;

        border-width: 3px;
    }


    /* -----------------------------------------------------
       ICON
    ----------------------------------------------------- */

    .mobile-icon-wrapper {
        left: 42px;
        top: 1px;

        width: 70px;
        height: 70px;
    }

    .mobile-icon-wrapper::before {
        width: 49px;
        height: 49px;
    }

    .mobile-icon-wrapper i {
        font-size: 22px;
    }


    /* -----------------------------------------------------
       CONTENT

       Text starts at approximately x=158px.
       This gives enough clearance from the 70px icon.
    ----------------------------------------------------- */

    .mobile-content {
        width:
            calc(100% - 103px);

        min-height: 61px;

        margin-left: 103px;

        padding:
            7px
            11px
            7px
            27px;

        border-radius:
            0
            34px
            34px
            0;
    }


    /* -----------------------------------------------------
       HEADING
    ----------------------------------------------------- */

    .mobile-content h3 {
        margin:
            0
            0
            3px;

        font-size: 14px;

        line-height: 1.00;

        font-weight: 800;

        text-align: left;
    }


    /* -----------------------------------------------------
       DESCRIPTION
    ----------------------------------------------------- */

    .mobile-content p {
        margin: 0;

        font-size: 10.5px;

        line-height: 1.10;

        text-align: left;
    }


    /* -----------------------------------------------------
       ARROW
    ----------------------------------------------------- */

    .mobile-arrow {
        left: 17px;
        bottom: -4px;

        font-size: 16px;
    }


    /* -----------------------------------------------------
       SKYLINE
    ----------------------------------------------------- */

    .skyline {
        height: 48px;

        margin-top: -2px;
    }

    .buildings {
        bottom: 5px;

        height: 42px;

        gap: 2px;
    }

    .building {
        width: 16px;
    }

    .b1  { height: 23px; }
    .b2  { height: 36px; }
    .b3  { height: 28px; }
    .b4  { height: 42px; }
    .b5  { height: 32px; }
    .b6  { height: 39px; }
    .b7  { height: 25px; }
    .b8  { height: 41px; }
    .b9  { height: 31px; }
    .b10 { height: 36px; }


    /* -----------------------------------------------------
       BENEFITS
    ----------------------------------------------------- */

    .benefits {
        margin:
            -7px
            8px
            8px;

        padding:
            5px
            4px;

        border-radius: 14px;
    }

    .benefit-grid {
        grid-template-columns:
            repeat(2, 1fr);
    }

    .benefit-item {
        min-height: 44px;

        padding:
            4px
            5px;

        gap: 5px;

        justify-content: flex-start;
    }

    .benefit-item:nth-child(1),
    .benefit-item:nth-child(2) {
        border-bottom:
            1px solid #79a9e9;
    }

    .benefit-item:nth-child(1),
    .benefit-item:nth-child(3) {
        border-right:
            1px solid #79a9e9;
    }

    .benefit-item:nth-child(4) {
        border-right: 0;
    }

    .benefit-icon {
        width: 28px;
        height: 28px;

        font-size: 23px;
    }

    .benefit-text {
        font-size: 10.5px;

        line-height: 1.00;
    }
}


/* =========================================================
   SMALL MOBILE
========================================================= */

@media (max-width: 400px) {

    .process-header {
        padding:
            11px
            7px
            8px;
    }

    .process-menu {
        font-size: 7px;
        letter-spacing: 2.7px;
    }

    .process-title {
        font-size: 31px;
    }

    .process-subtitle {
        font-size: 14px;
    }

    .commitment {
        font-size: 6.5px;
        letter-spacing: 2.5px;
    }


    /* Timeline */

    .mobile-timeline::before {
        left: 24px;
    }

    .mobile-step {
        min-height: 72px;
    }


    /* Number */

    .mobile-number {
        left: 0;

        width: 40px;
        height: 40px;

        font-size: 14px;
    }


    /* Icon */

    .mobile-icon-wrapper {
        left: 39px;

        width: 66px;
        height: 66px;
    }

    .mobile-icon-wrapper::before {
        width: 46px;
        height: 46px;
    }

    .mobile-icon-wrapper i {
        font-size: 20px;
    }


    /* Content */

    .mobile-content {
        width:
            calc(100% - 98px);

        margin-left: 98px;

        min-height: 58px;

        padding:
            6px
            9px
            6px
            25px;
    }

    .mobile-content h3 {
        font-size: 13px;
        line-height: 1;
    }

    .mobile-content p {
        font-size: 9.5px;
        line-height: 1.08;
    }

    .mobile-arrow {
        left: 15px;

        font-size: 15px;
    }


    /* Benefits */

    .benefit-text {
        font-size: 10px;
    }

    .benefit-icon {
        width: 26px;
        height: 26px;

        font-size: 21px;
    }
}


/* =========================================================
   EXTRA SMALL DEVICES
========================================================= */

@media (max-width: 350px) {

    .process-title {
        font-size: 29px;
    }

    .process-subtitle {
        font-size: 13px;
    }

    .process-menu {
        font-size: 6.5px;
    }

    .mobile-content h3 {
        font-size: 12px;
    }

    .mobile-content p {
        font-size: 9px;
    }

    .benefit-text {
        font-size: 9px;
    }
}
