/* SVG Flashlight Reveal Effect */
.ggpw-svg-flashlight {
    --ggpw-flashlight-speed: 4s;
    --ggpw-flashlight-stroke-speed: 5s;
    --ggpw-flashlight-beam-color: #ffe042;
    --ggpw-flashlight-beam-opacity: 0.35;
    --ggpw-flashlight-text-color: #000000;
    --ggpw-flashlight-stroke-color: #ffffff;
    --ggpw-flashlight-stroke-width: 2px;
    --ggpw-flashlight-text-glow-blur: 0px;
    --ggpw-flashlight-text-glow-color: #ffffff;
    width: 100%;
    position: relative;
    overflow: visible;
    background: transparent;
}

.ggpw-svg-flashlight-svg {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
    flex: 0 0 auto;
}

.ggpw-svg-flashlight-move {
    transform-box: fill-box;
    animation: ggpw-svg-flashlight-move var(--ggpw-flashlight-speed) cubic-bezier(.29,.45,.76,.55) infinite alternate;
}

@keyframes ggpw-svg-flashlight-move {
    0% { transform: translateX(-420px); }
    100% { transform: translateX(420px); }
}

.ggpw-svg-flashlight-fill,
.ggpw-svg-flashlight-fill * {
    fill: var(--ggpw-flashlight-text-color) !important;
}

.ggpw-svg-flashlight-stroke,
.ggpw-svg-flashlight-stroke * {
    fill: none !important;
    stroke: var(--ggpw-flashlight-stroke-color) !important;
    stroke-width: var(--ggpw-flashlight-stroke-width) !important;
    stroke-miterlimit: 10;
    stroke-dasharray: 100;
    stroke-dashoffset: 550;
    animation: ggpw-svg-flashlight-stroke var(--ggpw-flashlight-stroke-speed) linear infinite alternate;
    filter: drop-shadow(0 0 var(--ggpw-flashlight-text-glow-blur) var(--ggpw-flashlight-text-glow-color));
}

@keyframes ggpw-svg-flashlight-stroke {
    100% {
        stroke-dashoffset: 100;
        stroke-dasharray: 100;
    }
}

/* SVG Flashlight transparent viewport fix */
.ggpw-svg-flashlight {
    overflow: visible;
    background: transparent;
}
.ggpw-svg-flashlight-svg {
    overflow: visible;
}
