/* =========================================================
   GRABWEB HERO SERVICES 
========================================================= */

    .gw-service-animation {
        --gw-gold: #f5c542;
        --gw-gold-light: #ffe183;
        --gw-gold-soft: rgba(245, 197, 66, 0.12);

        --gw-card: rgba(23, 23, 24, 0.78);
        --gw-card-active: rgba(30, 29, 27, 0.94);

        --gw-border: rgba(255, 255, 255, 0.075);
        --gw-border-active: rgba(245, 197, 66, 0.48);

        --gw-white: #ffffff;
        --gw-muted: rgba(255, 255, 255, 0.52);

        position: relative;

        /*
     * IMPORTANT:
     * Do not let Elementor's narrow center column
     * squeeze this component.
     */
        width: 500px;
        min-width: 500px;
        max-width: none;

        height: 470px;

        margin-left: 40%;
        transform: translateX(-50%);

        isolation: isolate;
        overflow: visible;

        font-family: inherit;
    }


    /* =========================================================
   AMBIENT BACKGROUND
========================================================= */

    .gw-service-glow {
        position: absolute;

        left: 50%;
        top: 48%;

        width: 390px;
        height: 390px;

        transform: translate(-50%, -50%);

        border-radius: 50%;

        background:
            radial-gradient(circle,
                rgba(245, 197, 66, 0.10) 0%,
                rgba(198, 151, 70, 0.045) 38%,
                rgba(255, 255, 255, 0.012) 55%,
                transparent 72%);

        filter: blur(48px);

        opacity: 0.68;

        pointer-events: none;

        animation:
            gwServiceAmbient 8s ease-in-out infinite;

        z-index: 0;
    }


    /* =========================================================
   CENTER SPINE
========================================================= */

    .gw-service-spine {
        position: absolute;

        left: 50%;
        top: 75px;
        bottom: 75px;

        width: 1px;

        transform: translateX(-50%);

        background:
            linear-gradient(to bottom,
                transparent,
                rgba(245, 197, 66, 0.02) 15%,
                rgba(245, 197, 66, 0.11) 50%,
                rgba(245, 197, 66, 0.02) 85%,
                transparent);

        opacity: 0.65;

        pointer-events: none;

        z-index: 0;
    }


    /* =========================================================
   STAGE
========================================================= */

    .gw-service-stage {
        position: relative;

        width: 100%;
        height: 100%;

        overflow: visible;

        perspective: 1000px;

        z-index: 2;
    }


    /* =========================================================
   CARD
========================================================= */

    .gw-service-card {
        --gw-x: 0px;
        --gw-y: 0px;
        --gw-scale: 1;
        --gw-opacity: 1;
        --gw-z: 1;

        appearance: none;
        -webkit-appearance: none;

        position: absolute;

        left: 50%;
        top: 50%;

        /*
     * FIX:
     * Desktop card no longer depends on parent's width.
     */
        width: 365px !important;
        min-width: 365px !important;
        max-width: 365px !important;

        height: 68px;

        display: grid;

        grid-template-columns:
            40px minmax(0, 1fr) 29px;

        align-items: center;

        gap: 13px;

        padding: 0 16px;

        margin: 0;

        border:
            1px solid var(--gw-border);

        border-radius: 14px;

        background:
            linear-gradient(115deg,
                rgba(255, 255, 255, 0.052),
                rgba(255, 255, 255, 0.013)),
            var(--gw-card);

        box-shadow:
            inset 0 1px 0 rgba(255, 255, 255, 0.045),
            0 17px 45px rgba(0, 0, 0, 0.22);

        backdrop-filter: blur(11px);
        -webkit-backdrop-filter: blur(11px);

        color:
            rgba(255, 255, 255, 0.72);

        font: inherit;
        text-align: left;

        cursor: pointer;

        opacity:
            var(--gw-opacity);

        transform:
            translate(-50%, -50%) translate3d(var(--gw-x),
                var(--gw-y),
                0) scale(var(--gw-scale));

        transform-origin: center;

        z-index:
            var(--gw-z);

        transition:
            transform 850ms cubic-bezier(.22, 1, .36, 1),
            opacity 600ms ease,
            border-color 420ms ease,
            background 420ms ease,
            box-shadow 420ms ease,
            color 420ms ease;

        will-change:
            transform,
            opacity;

        outline: none;

        overflow: visible;
    }


    /* =========================================================
   CARD GLASS LIGHT
========================================================= */

    .gw-service-card::before {
        content: "";

        position: absolute;

        inset: 0;

        border-radius: inherit;

        background:
            linear-gradient(110deg,
                rgba(255, 255, 255, 0.075),
                transparent 24%,
                transparent 72%,
                rgba(245, 197, 66, 0.025));

        pointer-events: none;

        opacity: 0.65;
    }


    /* =========================================================
   ICON
========================================================= */

    .gw-service-icon {
        position: relative;

        z-index: 2;

        width: 38px;
        height: 38px;

        display: flex;
        align-items: center;
        justify-content: center;

        flex: none;

        border-radius: 10px;

        border:
            1px solid rgba(255, 255, 255, 0.065);

        background:
            rgba(255, 255, 255, 0.032);

        color:
            rgba(255, 255, 255, 0.62);

        font-size: 16px;

        transition:
            transform 500ms cubic-bezier(.22, 1, .36, 1),
            background 400ms ease,
            border-color 400ms ease,
            color 400ms ease,
            box-shadow 400ms ease;
    }


    /* =========================================================
   TEXT
========================================================= */

    .gw-service-content {
        position: relative;

        z-index: 2;

        display: flex;
        flex-direction: column;

        justify-content: center;

        gap: 3px;

        min-width: 0;
    }


    .gw-service-name {
        display: block;

        width: 100%;

        color: inherit;

        font-size: 14px;
        line-height: 1.15;

        font-weight: 600;

        letter-spacing: -0.01em;

        white-space: nowrap;

        overflow: hidden;
        text-overflow: ellipsis;
    }


    .gw-service-meta {
        display: flex;
        align-items: center;
        gap: 2px;
        min-width: 0;
        white-space: nowrap;
        line-height: 1;
        transition: opacity 350ms ease, color 350ms ease;
    }

    .gw-service-from {
        color: rgba(255, 255, 255, 0.46);
        font-size: 9px;
        font-weight: 500;
    }

    .gw-service-price {
        color: rgba(255, 255, 255, 0.90);
        font-size: 12px;
        line-height: 1;
        font-weight: 600;
        letter-spacing: -0.015em;
    }

    .gw-service-price small {
        margin-left: 1px;
        color: rgba(255, 255, 255, 0.55);
        font-size: 8.5px;
        font-weight: 500;
        letter-spacing: 0;
    }

    .gw-service-offer {
        display: inline-flex;
        align-items: center;
        gap: 6px;

        margin-left: 8px;

        padding: 3px 0;

        color: #ffe07ad0;

        font-size: 9px;
        line-height: 1;

        font-weight: 600;
        letter-spacing: 0.025em;

        white-space: nowrap;

        background: transparent;
        border: 0;
        border-radius: 0;

        transition:
            color 320ms ease,
            opacity 320ms ease,
            transform 320ms ease;
    }


    /* tiny premium signal dot */
    .gw-service-offer::before {
        content: "";

        width: 4px;
        height: 4px;

        flex: 0 0 4px;

        border-radius: 50%;

        background: rgba(245, 197, 66, 0.72);

        box-shadow:
            0 0 6px rgba(245, 197, 66, 0.32);

        transition:
            background 320ms ease,
            box-shadow 320ms ease,
            transform 320ms ease;
    }

    /* =========================================================
   PREMIUM DELAYED CONFIRMATION CHECK
========================================================= */

    .gw-service-check {
        position: relative;

        z-index: 3;

        width: 27px;
        height: 27px;

        display: flex;
        align-items: center;
        justify-content: center;

        justify-self: end;

        border-radius: 50%;

        background:
            linear-gradient(135deg,
                #ffe58a 0%,
                #f5c542 60%,
                #c98a4a 100%);

        color: #171717;

        font-size: 10px;

        opacity: 0;

        transform:
            translateX(-2px) scale(0.78);

        box-shadow:
            0 5px 16px rgba(245, 197, 66, 0);

        transition:
            opacity 280ms ease,
            transform 460ms cubic-bezier(.16, 1, .3, 1),
            box-shadow 460ms ease;

        pointer-events: none;
    }


    /* icon itself enters a little later */

    .gw-service-check i {
        opacity: 0;

        transform:
            scale(0.55) rotate(-10deg);

        transition:
            opacity 220ms ease 80ms,
            transform 420ms cubic-bezier(.16, 1, .3, 1) 80ms;
    }


    /* check appears ONLY after JS confirmation */

    .gw-service-card.is-confirmed .gw-service-check {
        opacity: 1;

        transform:
            translateX(0) scale(1);

        box-shadow:
            0 7px 20px rgba(245, 197, 66, 0.18);
    }


    .gw-service-card.is-confirmed .gw-service-check i {
        opacity: 1;

        transform:
            scale(1) rotate(0deg);
    }


    /* tiny confirmation halo */

    .gw-service-check::after {
        content: "";

        position: absolute;

        inset: -5px;

        border:
            1px solid rgba(245, 197, 66, 0.45);

        border-radius: 50%;

        opacity: 0;

        transform:
            scale(0.72);

        pointer-events: none;
    }


    .gw-service-card.is-confirmed .gw-service-check::after {
        animation:
            gwCheckHalo 620ms ease-out both;
    }


    @keyframes gwCheckHalo {

        0% {
            opacity: 0;
            transform: scale(0.72);
        }

        25% {
            opacity: 0.55;
        }

        100% {
            opacity: 0;
            transform: scale(1.55);
        }

    }


    .gw-service-card.is-active .gw-service-icon {
        color:
            #fff8df;

        border-color:
            rgba(245, 197, 66, 0.23);

        background:
            linear-gradient(135deg,
                rgba(245, 197, 66, 0.15),
                rgba(201, 138, 74, 0.07));

        transform:
            scale(1.05);

        box-shadow:
            0 0 18px rgba(245, 197, 66, 0.05);
    }


    .gw-service-card.is-active .gw-service-name {
        position: relative;
        display: inline-block;
        background: linear-gradient(180deg, #fff7dc 0%, #ffe69a 32%, #f5c542 66%, #d59b28 100%);
        -webkit-background-clip: text;
        background-clip: text;
        -webkit-text-fill-color: transparent;
        color: transparent;
        filter: drop-shadow(0 0 8px rgba(245, 197, 66, 0.08));
        isolation: isolate;

        font-size: 15px;

        font-weight: 600;
    }


    .gw-service-card.is-active .gw-service-from {
        color: rgba(255, 255, 255, 0.64);
    }

    .gw-service-card.is-active .gw-service-price {
        color: #ffffff;
        text-shadow: 0 0 14px rgba(255, 255, 255, 0.06);
    }

    .gw-service-card.is-active .gw-service-price small {
        color: rgba(255, 255, 255, 0.72);
    }

    /* HOVER */
    .gw-service-card:hover .gw-service-offer {
        color: #ffe07a;
    }


    /* =========================================================
   ACTIVE SIGNAL
========================================================= */

    .gw-service-link {
        position: absolute;

        /*
     * Signal goes towards laptop.
     */
        left: calc(100% + 10px);
        top: 50%;

        width: 100px;
        height: 1px;

        transform:
            translateY(-50%);

        opacity: 0;

        background:
            linear-gradient(90deg,
                rgba(245, 197, 66, 0.55),
                rgba(245, 197, 66, 0.15) 70%,
                transparent);

        pointer-events: none;

        transition:
            opacity 350ms ease;
    }


    .gw-service-link::before {
        content: "";

        position: absolute;

        left: 0;
        top: 50%;

        width: 5px;
        height: 5px;

        border-radius: 50%;

        background:
            #ffe47f;

        box-shadow:
            0 0 5px #f5c542,
            0 0 13px rgba(245, 197, 66, 0.55);

        transform:
            translate(-50%, -50%);

        opacity: 0;
    }


    /* =========================================================
   SIGNAL SEQUENCE
========================================================= */

    .gw-service-link {
        opacity: 0;

        transition:
            opacity 300ms ease;
    }


    /*
 * Card settles first,
 * then JS adds .is-signalling
 */

    .gw-service-card.is-signalling .gw-service-link {
        opacity: 1;
    }


    .gw-service-card.is-signalling .gw-service-link::before {
        opacity: 1;

        animation:
            gwServiceSignal 720ms cubic-bezier(.4, 0, .2, 1) both;
    }


    /*
 * After confirmation keep only
 * a very subtle connection line.
 */

    .gw-service-card.is-confirmed .gw-service-link {
        opacity: 0.22;
    }


    .gw-service-card.is-confirmed .gw-service-link::before {
        opacity: 0;
        animation: none;
    }


    @keyframes gwServiceSignal {

        0% {
            left: 0%;
            opacity: 0;
            transform:
                translate(-50%, -50%) scale(0.75);
        }

        15% {
            opacity: 1;
        }

        72% {
            opacity: 1;
            transform:
                translate(-50%, -50%) scale(1);
        }

        100% {
            left: 98%;

            opacity: 0;

            transform:
                translate(-50%, -50%) scale(0.72);
        }

    }

    /* =========================================================
   STATUS CHIP
========================================================= */

    .gw-service-status {
        position: absolute;

        left: 50%;
        bottom: 14px;

        transform:
            translateX(-50%);

        display: inline-flex;

        align-items: center;

        gap: 7px;

        padding: 7px 11px;

        border:
            1px solid rgba(255, 255, 255, 0.065);

        border-radius: 999px;

        background:
            rgba(14, 14, 15, 0.56);

        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);

        color:
            rgba(255, 255, 255, 0.47);

        font-size: 9px;
        line-height: 1;

        font-weight: 500;

        letter-spacing: 0.025em;

        white-space: nowrap;

        z-index: 3;
    }


    .gw-service-status-dot {
        width: 5px;
        height: 5px;

        flex: 0 0 5px;

        border-radius: 50%;

        background:
            var(--gw-gold);

        box-shadow:
            0 0 8px rgba(245, 197, 66, 0.55);

        animation:
            gwStatusPulse 2.5s ease-in-out infinite;
    }


    /* =========================================================
   FOCUS / HOVER
========================================================= */

    .gw-service-card:hover {
        border-color: rgba(245, 197, 66, 0.28);
        background:
            linear-gradient(115deg,
                rgba(255, 255, 255, 0.070),
                rgba(245, 197, 66, 0.026) 55%,
                rgba(255, 255, 255, 0.015)),
            rgba(27, 27, 27, 0.90);
        box-shadow:
            inset 0 1px 0 rgba(255, 255, 255, 0.065),
            0 18px 48px rgba(0, 0, 0, 0.30),
            0 0 24px rgba(245, 197, 66, 0.045);
    }

    .gw-service-card:hover::before {
        opacity: 0.95;
    }

    .gw-service-card:hover .gw-service-icon {
        color: #fff4cc;
        border-color: rgba(245, 197, 66, 0.25);
        background: rgba(245, 197, 66, 0.095);
        transform: scale(1.07);
        box-shadow: 0 0 18px rgba(245, 197, 66, 0.07);
    }

    .gw-service-card:not(.is-active):hover .gw-service-name {
        color: rgba(255, 255, 255, 0.92);
    }

    .gw-service-card:not(.is-active):hover .gw-service-price {
        color: #ffffff;
    }

    .gw-service-card:focus-visible {
        border-color:
            rgba(245, 197, 66, 0.55);

        box-shadow:
            0 0 0 3px rgba(245, 197, 66, 0.08);
    }


    /* =========================================================
   ACCESSIBILITY
========================================================= */

    .gw-service-sr {
        position: absolute !important;

        width: 1px;
        height: 1px;

        padding: 0;
        margin: -1px;

        overflow: hidden;

        clip: rect(0, 0, 0, 0);

        white-space: nowrap;

        border: 0;
    }


    /* =========================================================
   MOTION
========================================================= */

    @keyframes gwServiceAmbient {

        0%,
        100% {
            opacity: 0.55;

            transform:
                translate(-50%, -50%) scale(0.96);
        }

        50% {
            opacity: 0.80;

            transform:
                translate(-50%, -50%) scale(1.04);
        }
    }


    @keyframes gwStatusPulse {

        0%,
        100% {
            opacity: 0.45;
            transform: scale(0.9);
        }

        50% {
            opacity: 1;
            transform: scale(1.12);
        }
    }


    /* =========================================================
   TABLET
========================================================= */

    @media (max-width: 1024px) {

        .gw-service-animation {
            width: 440px;
            min-width: 440px;

            height: 450px;
        }


        .gw-service-card {
            width: 335px !important;
            min-width: 335px !important;
            max-width: 335px !important;

            height: 64px;
        }


        .gw-service-link {
            width: 70px;
        }

    }


    /* =========================================================
   MOBILE
========================================================= */

    @media (max-width: 767px) {

        .gw-service-animation {
            width: 100%;
            min-width: 0;
            max-width: 100%;

            height: 290px;

            margin-left: 0;
            transform: none;
        }


        .gw-service-glow {
            width: 280px;
            height: 280px;

            filter: blur(38px);
        }


        .gw-service-card {
            width:
                min(340px,
                    calc(100vw - 34px)) !important;

            min-width: 0 !important;

            max-width:
                calc(100vw - 34px) !important;

            height: 62px;

            grid-template-columns:
                35px minmax(0, 1fr) 26px;

            gap: 10px;

            padding:
                0 13px;

            border-radius: 13px;
        }


        .gw-service-icon {
            width: 33px;
            height: 33px;

            border-radius: 9px;

            font-size: 14px;
        }

        .gw-service-from {
            font-size: 8px;
        }

        .gw-service-price {
            font-size: 11px;
        }

        .gw-service-price small {
            font-size: 8px;
        }

        .gw-service-offer {
            min-height: 16px;
            padding: 0 6px;
            font-size: 7px;
        }


        .gw-service-check {
            width: 25px;
            height: 25px;
        }


        .gw-service-link {
            display: none;
        }


        .gw-service-status {
            bottom: 8px;
        }

    }


    /* =========================================================
   REDUCED MOTION
========================================================= */

    @media (prefers-reduced-motion: reduce) {

        .gw-service-card,
        .gw-service-icon,
        .gw-service-check,
        .gw-service-glow,
        .gw-service-link::before,
        .gw-service-status-dot {
            transition: none !important;
            animation: none !important;
        }

    }