<!DOCTYPE html>
<!-- This site was created in Webflow. https://www.webflow.com -->
<!-- Last Published: Thu Nov 17 2022 15:17:29 GMT+0000 (Coordinated Universal Time) -->
<html data-wf-domain="leonardos-samurai-site-cfa17ca4b3eb304a.webflow.io" data-wf-page="632dc8b8adc03d20fbaa8c0e"
    data-wf-site="632dc8b8adc03d7837aa8b50">

<head>
    <!-- Google Tag Manager -->
    <script>(function (w, d, s, l, i) {
            w[l] = w[l] || []; w[l].push({
                'gtm.start':
                    new Date().getTime(), event: 'gtm.js'
            }); var f = d.getElementsByTagName(s)[0],
                j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
                    'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
        })(window, document, 'script', 'dataLayer', 'GTM-T24NF6W8');</script>
    <!-- End Google Tag Manager -->
    <meta charset="utf-8" />
    <title>Login</title>
    <meta content="Login" property="og:title" />
    <meta content="Login" property="twitter:title" />
    <meta content="width=device-width, initial-scale=1" name="viewport" />
    <meta content="Webflow" name="generator" />
    <link href="https://sapienwebflow.s3.amazonaws.com/public/css/login.css" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
    <script type="text/javascript">
        WebFont.load({
            google: {
                families: ["Inter:regular,500"]
            }
        });
    </script>
    <!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" type="text/javascript"></script><![endif]-->
    <script type="text/javascript">
        !function (o, c) {
            var n = c.documentElement,
                t = " w-mod-";
            n.className += t + "js",
                ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch")
        }(window, document);
    </script>
    <link href="https://sapienwebflow.s3.amazonaws.com/public/img/r+rodzer+logo+32.png" rel="shortcut icon"
        type="image/x-icon" />
    <link href="https://sapienwebflow.s3.amazonaws.com/public/img/r+rodzer+logo+256.png" rel="apple-touch-icon" />
</head>

<body>
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-T24NF6W8" height="0" width="0"
            style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    <div class="utilities-section">
        <div class="utilities-form-column">
            <div class="utilities-form-wrap">
                <h4 class="h4-title xs-margin">Login to Rodzer</h4>
                <div class="m-paragraph l-margin">
                    Rodzer’s use and transfer of information received from Google APIs to any other app will adhere to
                    <a href="https://developers.google.com/terms/api-services-user-data-policy#additional_requirements_for_specific_api_scopes"
                        target="_blank" class="link-2">Google API Services User Data Policy,</a>
                    including the Limited Use requirements.
                    By logging in you accept you&#x27;ve read and agree to the processing of your personal data by
                    Rodzer as described in the
                    <a href="https://www.rodzer.us/privacypolicyas21FEB2024.html" target="_blank" class="link-2">Privacy
                        Policy</a>
                    and to the
                    <a href="https://www.rodzer.us/termsofservice25Dec2023.html" target="_blank" class="link-3">Terms of
                        Service</a>
                </div>
                <div class="utilities-form w-form">
                    <form id="email-form" name="email-form" data-name="Email Form" method="get">
                        <a href="/auth/google" class="social-sign-up w-inline-block">
                            <img src="https://uploads-ssl.webflow.com/6246a8bb90532a2ce997faf4/626a56967a2024b99efc86ea_search.png"
                                loading="lazy" width="24" alt="" class="social-sign-up-icon" />
                            <div class="social-sign-up-text">Login With Google</div>
                        </a>
                    </form>
                    <div class="success-message w-form-done">
                        <div class="center-content">
                            <div class="xs-badge-grid">
                                <img src="https://uploads-ssl.webflow.com/6262a3e80c60bf573256a3c0/6262a3e80c60bf70c956a3e7_check-circle.svg"
                                    loading="lazy" alt="" class="s-icon" />
                                <div>Thank you! Your submission has been received!</div>
                            </div>
                        </div>
                    </div>
                    <div class="error-message w-form-fail">
                        <div class="center-content">
                            <div class="xs-badge-grid">
                                <img src="https://uploads-ssl.webflow.com/6262a3e80c60bf573256a3c0/6262a3e80c60bf360756a3e8_alert-triangle.svg"
                                    loading="lazy" alt="" class="s-icon" />
                                <div>Oops! Something went wrong!</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=632dc8b8adc03d7837aa8b50"
        type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
        crossorigin="anonymous"></script>
    <script src="https://sapienwebflow.s3.amazonaws.com/public/js/login.js" type="text/javascript"></script>
    <!--[if lte IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script><![endif]-->
</body>

</html>