She Slept Through Murder
The Story
She said she slept through the gunshot… but the evidence told a darker story. A 16-year-old boy dead, a hidden weapon, and a lie that unraveled piece by piece.Become a supporter of this podcast: https://www.spreaker.com/podcast/dark-american-crime--7005371/support.
Thanks for listening to Dark American Crime. The next episode is coming soon.
This episode includes AI-generated content.
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Basic Meta -->
<meta charset="utf-8">
<!-- Javascript with import maps, modern approach -->
<meta name="rails_env" content="production">
<meta name="release_version" content="v32530">
<meta name="path_parameters" content="{"controller":"users/sessions","action":"new"}">
<!-- Some globals that break stuff if removed, should be migrated to singleton / data modules -->
<script type="text/javascript" charset="utf-8">
window.environment = "production"
window.release_version = "v32530"
</script>
<script src="https://www.happyscribe.com/vite/assets/globals-Bw4VFuB4.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/preload-helper-ICK8sbMs.js" as="script" crossorigin="anonymous">
<title>
Login to your account | HappyScribe
</title>
<meta name="title" content="Login to your account | HappyScribe">
<meta name="description"
content="Login to your account">
<meta name="author" content="HappyScribe">
<meta name="application-name" content="HappyScribe">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="afkGf-BYGjrwTfdy4Xde-QAz5RKAGRK3wKO__le5M2rCrBEkfv0bpjERZLGFQVVHRsdw9ujxEb1OG2ds1LSu7w" />
<meta name="robots" content="index,follow">
<link rel="canonical" href="https://www.happyscribe.com/users/sign_in">
<style>
@font-face {
font-family: 'Inter var';
font-style: normal;
font-weight: 100 900;
font-display: swap;
src: url(https://www.happyscribe.com/assets/Inter/InterVariable-673e2cf3.woff2) format('woff2-variations');
}
</style>
<link rel="stylesheet" href="https://www.happyscribe.com/assets/hs.landing-84221dac.css" data-turbo-track="reload" />
<link rel="stylesheet" href="https://www.happyscribe.com/assets/flags-82febfc8.css" data-turbo-track="reload" />
<meta name="apple-itunes-app" content="app-id=6747448962, affiliate-data=ct=mobile_app_promo_smart_app_banner_users_sign_in">
<!-- Google Tag Manager -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
window.uetq = window.uetq || [];
window.uetq.push('consent', 'default', {
'ad_storage': 'denied'
});
</script>
<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-WFXGPXQ');</script>
<!-- End Google Tag Manager -->
<script>
window.mixpanelProjectToken = '6d60fe03b6525fd8e1d50232300c43aa';
window.mixpanelDebug = false;
window.mixpanelExcludedEvents = ["Cookie consent changed","Subtitles hardcoded","Onboarding question seen","Onboarding question answered","Onboarding questions finished","Onboarding wait page file clicked","Onboarding join or create workspace page visited","Onboarding scribe application link clicked","Integration removed","File translated","Link sharing mode changed","Access created","Select All Modal Viewed","Select All Modal - Text Copied","New integration connect button clicked","Organization created from onboarding","Guests asked to be added to workspace","User joined organization by domain from onboarding","User joined organization by invite from onboarding","Pro subscription Export paywall seen","Meetings Hub Sidebar Impression"];
</script>
<script>
window.sentryOnLoad = function() {
if (['production', 'staging'].includes(window.environment)) {
Sentry.init({
release: window.release_version,
environment: window.environment,
ignoreErrors: [
/ReferenceError: load is not defined/,
/Can't find variable: load/,
/ResizeObserver loop/,
/Internal JSON-RPC error/,
/Object Not Found Matching Id:\d+, MethodName:/,
/runtime\.sendMessage\(\)\. Tab not found/,
/AbortError: signal is aborted without reason/,
/Purpose not allowed/,
/TurnstileError/,
/window\.ID5\.init/,
],
});
}
};
</script>
<script
src="https://js.sentry-cdn.com/fb3250c987cfa3aae37a174cc9c8bde5.min.js"
crossorigin="anonymous"
defer>
</script>
<script src="https://www.happyscribe.com/vite/assets/landing-DpnR5EJD.js" crossorigin="anonymous" type="module" defer="defer" data-turbo-track="reload"></script><link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/theme_handler-CpEkEeQC.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/cookieconsent.esm-D0_pM2BB.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/product_analytics-BLrfSzfQ.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/_commonjsHelpers-CE1G-McA.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/popper-30SdXY-3.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/preload-helper-ICK8sbMs.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<link rel="modulepreload" href="https://www.happyscribe.com/vite/assets/ahoy.esm-D0moo6Mx.js" as="script" crossorigin="anonymous" defer="defer" data-turbo-track="reload">
<!-- Mobile Meta -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#F6F8FE">
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="https://www.happyscribe.com/favicon/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32"
href="https://www.happyscribe.com/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16"
href="https://www.happyscribe.com/favicon/favicon-16x16.png">
<link rel="apple-touch-icon"
href="https://www.happyscribe.com/favicon/apple-touch-icon.png">
<link rel="manifest" href="https://www.happyscribe.com/assets/manifest-98e2730f.json">
<!-- Twitter Card -->
<meta name="twitter:creator" content='@happy_scribe'>
<meta name="twitter:site" content="@happy_scribe">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://www.happyscribe.com/users/sign_in">
<meta name="twitter:title"
content="Login to your account | HappyScribe">
<meta name="twitter:description"
content="Login to your account">
<meta name="twitter:image"
content="https://www.happyscribe.com/assets/og-image-2dd37547.jpg">
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.happyscribe.com/users/sign_in" />
<meta property="og:title"
content="Login to your account | HappyScribe" />
<meta property="og:description"
content="Login to your account" />
<meta property="og:image" content="https://www.happyscribe.com/assets/og-image-2dd37547.jpg" />
<meta property="og:site_name" content="HappyScribe" />
<meta property="og:locale" content="en_US" />
<script type="text/javascript" charset="utf-8">
if (!window.intercomSettings) {
window.intercomSettings = {
api_base: "https://api-iam.intercom.io",
app_id: "frdatdus",
user_role: "visitor",
has_high_potential: "",
is_member_of_pro_workspace:
"",
};
let chatBtn;
const setupIntercom = () => {
// We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/frdatdus'
var w = window;
var ic = w.Intercom;
if (typeof ic === "function") {
ic('reattach_activator');
ic('update', w.intercomSettings);
} else {
var d = document;
var i = function () {
i.c(arguments);
};
i.q = [];
i.c = function (args) {
i.q.push(args);
};
w.Intercom = i;
var l = function () {
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://widget.intercom.io/widget/frdatdus';
var x = d.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
const chatBtn = document.getElementById("chatBtn");
if (chatBtn) {
chatBtn.style.display = 'none';
}
};
if (document.readyState === 'complete') {
l();
} else if (w.attachEvent) {
w.attachEvent('onload', l);
} else {
w.addEventListener('load', l, false);
}
}
;
}
const dismantleIntercom = () => {
if (typeof window.Intercom === "function") {
Intercom("shutdown");
}
};
window.setupIntercom = setupIntercom;
window.dismantleIntercom = dismantleIntercom;
const openIntercom = () => Intercom('show');
const setupIntercomOnClick = () => {
chatBtn = document.getElementById("chatBtn");
if (!chatBtn) return;
chatBtn.addEventListener('click', () => {
chatBtn.style.display = 'none';
setupIntercom();
openIntercom();
})
}
document.addEventListener('DOMContentLoaded', setupIntercomOnClick)
}
</script>
<link rel="alternate" hreflang="x-default" href="https://www.happyscribe.com/users/sign_in">
<link rel="alternate" hreflang="de" href="https://www.happyscribe.com/de/users/sign_in">
<link rel="alternate" hreflang="en" href="https://www.happyscribe.com/users/sign_in">
<link rel="alternate" hreflang="es" href="https://www.happyscribe.com/es/users/sign_in">
<link rel="alternate" hreflang="fr" href="https://www.happyscribe.com/fr/users/sign_in">
<link rel="alternate" hreflang="it" href="https://www.happyscribe.com/it/users/sign_in">
<link rel="alternate" hreflang="pt" href="https://www.happyscribe.com/pt/users/sign_in">
<link rel="alternate" hreflang="nl" href="https://www.happyscribe.com/nl/users/sign_in">
<link rel="alternate" hreflang="pl" href="https://www.happyscribe.com/pl/users/sign_in">
<link rel="alternate" hreflang="ja" href="https://www.happyscribe.com/ja/users/sign_in">
<link rel="alternate" hreflang="sv" href="https://www.happyscribe.com/sv/users/sign_in">
<link rel="alternate" hreflang="el" href="https://www.happyscribe.com/el/users/sign_in">
<script>
(function () {
const isSignedIn = document.cookie.includes('unsecure_is_signed_in=1');
const isRoot = window.location.pathname.match(/^\/([a-z]{2})?\/?$/);
if (isSignedIn && isRoot) {
window.location.pathname = "/user";
}
})();
function showSpinner(btnId) {
const btn = document.getElementById(btnId);
btn.classList.add('hs-status', 'processing');
}
function hideSpinner(btnId) {
const btn = document.getElementById(btnId);
btn.classList.remove('hs-status', 'processing');
}
</script>
<script type="module" src="https://assets.cello.so/attribution/latest/cello-attribution.js" async></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.happyscribe.com/#organization",
"name": "HappyScribe",
"legalName": "Happy Scribe Limited",
"url": "https://www.happyscribe.com/",
"taxID": "IE3502234EH",
"logo": {
"@type": "ImageObject",
"caption": "HappyScribe logo",
"url": "https://www.happyscribe.com/assets/all/logo-email-7dcb2151.jpg"
},
"description": "HappyScribe is an AI Notetaker, transcription and subtitling platform offering automatic and human-made services to convert audio and video into text in 150+ languages.",
"sameAs": [
"https://www.linkedin.com/company/happyscribe",
"https://x.com/happy_scribe",
"https://www.instagram.com/happy_scribe/",
"https://www.youtube.com/@happy_scribe",
"https://www.trustpilot.com/review/happyscribe.co",
"https://www.tiktok.com/@happy_scribe"
],
"founder": [
{
"@type": "Person",
"name": "André Bastié",
"jobTitle": "Co-Founder",
"sameAs": "https://www.linkedin.com/in/andrebastie/"
},
{
"@type": "Person",
"name": "Marc Assenss",
"jobTitle": "Co-Founder",
"sameAs": "https://www.linkedin.com/in/massens/"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"@id": "https://www.happyscribe.com/#aggregate-rating",
"ratingValue": "4.7",
"reviewCount": "1272",
"bestRating": "5",
"worstRating": "1",
"sameAs": "https://www.trustpilot.com/review/happyscribe.co"
}
},
{
"@type": "WebSite",
"@id": "https://www.happyscribe.com/#website",
"name": "HappyScribe",
"url": "https://www.happyscribe.com/",
"inLanguage": "en"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebPage",
"url": "https://www.happyscribe.com/users/sign_in",
"name": "HappyScribe",
"description": "Login to your account",
"isPartOf": {
"@id": "https://www.happyscribe.com/#website"
}
},
{
"@type": "SoftwareApplication",
"name": "HappyScribe",
"description": "Login to your account",
"url": "https://www.happyscribe.com/users/sign_in",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"publisher": {
"@id": "https://www.happyscribe.com/#organization"
},
"aggregateRating": {
"@type": "AggregateRating",
"@id": "https://www.happyscribe.com/#aggregate-rating",
"ratingValue": 4.7,
"reviewCount": 1272,
"bestRating": 5,
"worstRating": 1,
"sameAs": "https://www.trustpilot.com/review/happyscribe.co"
}
}
]
}
</script>
</head>
<body data-turbo="false" class="">
<div data-controller="query-param-cookie"
data-query-param-cookie-param-name-value="ucc"
data-query-param-cookie-cookie-name-value="hs-cello-referral"
data-query-param-cookie-expires-days-value="90">
</div>
<div data-controller="query-param-cookie"
data-query-param-cookie-param-name-value="im_ref"
data-query-param-cookie-cookie-name-value="impact-affiliate"
data-query-param-cookie-expires-days-value="30">
</div>
<div class="landing-flash-wrapper"></div>
<!-- Customer Support -->
<button type="button" id="chatBtn" aria-label="Help desk">
<svg width="24" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M20.347 20.871l-.003-.05c0 .017.001.034.003.05zm-.243-4.278a2 2 0 0 1 .513-1.455c1.11-1.226 1.383-2.212 1.383-4.74C22 5.782 18.046 2 13.125 2h-2.25C5.954 2 2 5.78 2 10.399c0 4.675 4.01 8.626 8.875 8.626h2.25c.834 0 1.606-.207 3.212-.798a2 2 0 0 1 1.575.083l2.355 1.161-.163-2.878zM10.875 0h2.25C19.13 0 24 4.656 24 10.399c0 2.6-.25 4.257-1.9 6.08l.243 4.279c.072.845-.807 1.471-1.633 1.162l-3.682-1.816c-1.212.446-2.527.921-3.903.921h-2.25C4.869 21.025 0 16.142 0 10.4 0 4.656 4.869 0 10.875 0z" fill="#fff">
</path>
</svg>
</button>
<style>.auth-no-hover .pricing-card { box-shadow: none !important; } .auth-no-hover .pricing-card:hover { box-shadow: none !important; transform: none !important; }</style>
<div class="flex-1 flex flex-col min-h-screen page-gradient-blue-right auth-no-hover overflow-hidden">
<header class="w-full mb-2 sm:mb-6" style="margin-top: var(--header--top, 8px);">
<div class="header-top">
<a href="/"
class="header-logo hs-imagotype w-[130px] md:w-[150px] xl:w-[175px] inline-grid"
aria-label="HappyScribe Home">
</a>
<nav class="flex items-center gap-4 ml-auto">
<span class="text-sm text-gray-500 hidden sm:inline">Don't have an account?</span>
<a class="btn-sm btn-primary text-sm font-semibold px-5 py-2"
href="/users/sign_up">
Sign up
</a>
</nav>
</div>
</header>
<div class="flex-1 flex flex-col items-center px-4 sm:px-6 pt-10 sm:pt-20 pb-12 relative overflow-hidden">
<div class="absolute top-[15%] left-[30%] w-[400px] sm:w-[700px] h-[400px] sm:h-[700px] rounded-full bg-hs-brand-primary/[0.05] blur-[100px] sm:blur-[140px] pointer-events-none"></div>
<div class="absolute bottom-[10%] right-[20%] w-[300px] sm:w-[500px] h-[300px] sm:h-[500px] rounded-full bg-hs-brand-secondary/[0.04] blur-[80px] sm:blur-[120px] pointer-events-none"></div>
<main class="w-full flex flex-col items-center relative z-10">
<div class="w-full max-w-md rounded-lg p-6 sm:p-12 border border-white/60 shadow-[inset_0_1px_0_rgba(255,255,255,0.9),0_0_0_1px_rgba(0,0,0,0.04)] backdrop-blur-xl" style="background: rgba(255,255,255,0.82);">
<div id="auth-options-view" class=" space-y-6">
<div class="text-center">
<div class="h-12 w-12 rounded-full bg-hs-brand-primary/5 text-hs-brand-primary flex items-center justify-center mx-auto mb-3">
<svg class="phosphor-icon" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="24" height="24"><path d="M220.17,100,202.86,70a28,28,0,0,0-38.24-10.25,27.69,27.69,0,0,0-9,8.34L138.2,38a28,28,0,0,0-48.48,0A28,28,0,0,0,48.15,74l1.59,2.76A27.67,27.67,0,0,0,38,80.41a28,28,0,0,0-10.24,38.25l40,69.32a87.47,87.47,0,0,0,53.43,41,88.56,88.56,0,0,0,22.92,3,88,88,0,0,0,76.06-132Zm-6.66,62.64A72,72,0,0,1,81.62,180l-40-69.32a12,12,0,0,1,20.78-12L81.63,132a8,8,0,1,0,13.85-8L62,66A12,12,0,1,1,82.78,54L114,108a8,8,0,1,0,13.85-8L103.57,58h0a12,12,0,1,1,20.78-12l33.42,57.9a48,48,0,0,0-5.54,60.6,8,8,0,0,0,13.24-9A32,32,0,0,1,172.78,112a8,8,0,0,0,2.13-10.4L168.23,90A12,12,0,1,1,189,78l17.31,30A71.56,71.56,0,0,1,213.51,162.62ZM184.25,31.71A8,8,0,0,1,194,26a59.62,59.62,0,0,1,36.53,28l.33.57a8,8,0,1,1-13.85,8l-.33-.57a43.67,43.67,0,0,0-26.8-20.5A8,8,0,0,1,184.25,31.71ZM80.89,237a8,8,0,0,1-11.23,1.33A119.56,119.56,0,0,1,40.06,204a8,8,0,0,1,13.86-8,103.67,103.67,0,0,0,25.64,29.72A8,8,0,0,1,80.89,237Z"/></svg>
</div>
<h2 class="text-2xl font-extrabold text-gray-900 mb-1">Welcome back</h2>
<p class="text-sm text-gray-500">Sign in to your HappyScribe account.</p>
</div>
<div class="hs-form-googleauth space-y-3" data-turbo="false">
<form class="button_to" method="post" action="/users/auth/google_oauth2"><button class="w-full relative flex items-center justify-center gap-2.5 py-3 px-4 bg-white border border-gray-200/40 rounded text-sm font-semibold text-gray-800 hover:bg-gray-50 hover:border-gray-300/50 transition-all" data-turbo="false" type="submit">
<img width="20" height="20" alt="Google Logo" src="https://www.happyscribe.com/assets/google-52285dcc.svg" />
<span>Continue with Google</span>
</button><input type="hidden" name="authenticity_token" value="4OSsgqoy5ncHohGLoUbkPvj1YisDOv-nqtI14Q5gFM0r54_RHMNGwgg482bfuz98-Yx7wGqYrQUg1dCW0Ga7Xw" autocomplete="off" /></form> <form class="button_to" method="post" action="/users/auth/apple"><button class="w-full relative flex items-center justify-center gap-2.5 py-3 px-4 bg-white border border-gray-200/40 rounded text-sm font-semibold text-gray-800 hover:bg-gray-50 hover:border-gray-300/50 transition-all" data-turbo="false" type="submit">
<img width="20" height="20" alt="Apple Logo" class="shrink-0" src="https://www.happyscribe.com/assets/apple-12590166.svg" />
<span>Continue with Apple</span>
</button><input type="hidden" name="authenticity_token" value="BNsF04APrIMtKmii_9Yz7_0Y9c41zk8UQw9OMrxNU44Hl5ueGNNxHKqsQimfL9TeVG9ux5LCLat0PubiHL5GDA" autocomplete="off" /></form> <form class="button_to" method="post" action="/users/auth/entra_id"><button class="w-full relative flex items-center justify-center gap-2.5 py-3 px-4 bg-white border border-gray-200/40 rounded text-sm font-semibold text-gray-800 hover:bg-gray-50 hover:border-gray-300/50 transition-all" data-turbo="false" type="submit">
<img width="20" height="20" alt="Microsoft Logo" class="shrink-0" src="https://www.happyscribe.com/assets/microsoft-bf19c6c0.svg" />
<span>Continue with Microsoft</span>
</button><input type="hidden" name="authenticity_token" value="tXEd1P8EpOaBYE99tQAbdWz6o73OzhS7JFCyxZLSG9J9rUgMKQ_s5Rb8SE9a9UXfrUr_pXr7xHyqzyCqVJM2ug" autocomplete="off" /></form></div>
<form class="space-y-4" id="signin-email-form" action="/users/sign_in" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="AvPUqF-uXqNhyY4eJfUyga3Z-XG-5UWZDMo5aMscqZw4-WG2u7-kpQitZL0p_CXa7Z2ROplmWqE66jSSsIGH4g" autocomplete="off" />
<div class="space-y-1.5">
<div class="flex items-center justify-between ml-0.5">
<label for="signin-email" class="block text-xs font-normal text-gray-300">Email</label>
</div>
<div class="relative rounded bg-white border border-gray-200/50 transition-all duration-200 focus-within:ring-4 focus-within:ring-hs-brand-primary/10 focus-within:border-hs-brand-primary">
<input id="signin-email" placeholder="[email protected]" class="w-full px-4 py-3 pr-12 bg-transparent border-none outline-none rounded text-base sm:text-sm placeholder:text-gray-300 focus:ring-0" required="required" type="email" name="user[email]" />
<button name="button" type="submit" class="absolute right-1.5 top-1/2 -translate-y-1/2 w-8 h-8 flex items-center justify-center rounded bg-hs-brand-primary text-white cursor-pointer transition-opacity duration-200" id="signin-submit-btn">
<svg class="phosphor-icon" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16"><path d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"/></svg>
</button> </div>
</div>
<input type="hidden" name="next" id="next" autocomplete="off" />
<input name="user[remember_me]" type="hidden" value="0" autocomplete="off" /><input hidden="hidden" type="checkbox" value="1" checked="checked" name="user[remember_me]" id="user_remember_me" />
</form>
<div class="flex items-center gap-3">
<div class="flex-1 h-px bg-gray-200/40"></div>
<span class="text-[10px] text-gray-400 font-medium uppercase tracking-widest">or</span>
<div class="flex-1 h-px bg-gray-200/40"></div>
</div>
<a class="w-full relative flex items-center justify-center gap-2.5 py-3 px-4 bg-white border border-gray-200/40 rounded text-sm font-semibold text-gray-800 hover:bg-gray-50 hover:border-gray-300/50 transition-all" href="/users/sso">
<svg class="phosphor-icon text-gray-600" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="16" height="16"><path d="M216.57,39.43A80,80,0,0,0,83.91,120.78L28.69,176A15.86,15.86,0,0,0,24,187.31V216a16,16,0,0,0,16,16H72a8,8,0,0,0,8-8V208H96a8,8,0,0,0,8-8V184h16a8,8,0,0,0,5.66-2.34l9.56-9.57A79.73,79.73,0,0,0,160,176h.1A80,80,0,0,0,216.57,39.43ZM224,98.1c-1.09,34.09-29.75,61.86-63.89,61.9H160a63.7,63.7,0,0,1-23.65-4.51,8,8,0,0,0-8.84,1.68L116.69,168H96a8,8,0,0,0-8,8v16H72a8,8,0,0,0-8,8v16H40V187.31l58.83-58.82a8,8,0,0,0,1.68-8.84A63.72,63.72,0,0,1,96,95.92c0-34.14,27.81-62.8,61.9-63.89A64,64,0,0,1,224,98.1ZM192,76a12,12,0,1,1-12-12A12,12,0,0,1,192,76Z"/></svg>
<span>Continue with SSO</span>
</a> </div>
<div id="email-auth-view" class="hidden space-y-6">
<div class="text-center">
<div class="h-12 w-12 rounded-full bg-hs-brand-primary/5 text-hs-brand-primary flex items-center justify-center mx-auto mb-3">
<svg class="phosphor-icon" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="24" height="24"><path d="M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z"/></svg>
</div>
<h2 class="text-2xl font-extrabold text-gray-900 mb-1">Sign in with email</h2>
<p class="text-sm text-gray-500">Enter your email to continue.</p>
</div>
<form class="space-y-4" id="new_user" action="/users/sign_in" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="1H_cq8Cvu61KDuxQstkycyyE8qDLlC1rgVOG055w8ZfudWm1JL5BqyNqBvO-0CUobMCa6-wXMlO3c4sp5e3f6Q" autocomplete="off" />
<div class="space-y-4">
<div class="space-y-1.5">
<label for="email" class="block text-sm font-bold text-gray-900 ml-0.5">Email</label>
<input id="email" placeholder="[email protected]" class="tw-input text-input w-full px-4 py-3 rounded bg-white border border-gray-200/50 focus:ring-4 focus:ring-hs-brand-primary/10 focus:border-hs-brand-primary transition-all text-base sm:text-sm placeholder:text-gray-300" required="required" autofocus="autofocus" type="email" name="user[email]" />
</div>
</div>
<input type="hidden" name="next" id="next" autocomplete="off" />
<input name="user[remember_me]" type="hidden" value="0" autocomplete="off" /><input hidden="hidden" type="checkbox" value="1" checked="checked" name="user[remember_me]" id="user_remember_me" />
<button name="button" type="submit" id="submit-button" class="tw-primary-button btn-sm btn-primary w-full py-2.5 px-5 rounded font-semibold text-sm hover:-translate-y-0.5 transition-all duration-200" disabled="disabled">Continue</button>
</form>
<div class="text-center">
<button type="button" id="back-to-options" class="text-sm text-hs-brand-primary font-bold hover:underline">
← All sign-in options
</button>
</div>
</div>
</div>
<script type="module">
// Password/2FA step: back button + submit validation
const optionsView = document.getElementById('auth-options-view');
const emailView = document.getElementById('email-auth-view');
const backBtn = document.getElementById('back-to-options');
const emailInput = document.getElementById('email');
const passwordInput = document.getElementById('password-field');
const twoFactorInput = document.getElementById('otp-field');
const submitButton = document.getElementById('submit-button');
if (backBtn) {
backBtn.addEventListener('click', () => {
emailView.classList.add('hidden');
optionsView.classList.remove('hidden');
});
}
if (submitButton) {
function updateSubmitButton() {
const passwordValue = passwordInput ? passwordInput.value : true;
submitButton.disabled = !(emailInput.value && passwordValue);
}
const inputs = [emailInput, passwordInput, twoFactorInput];
inputs.filter(i => i).forEach(input => {
input.addEventListener('input', updateSubmitButton);
});
// Enable button if browser autofilled before JS loaded
updateSubmitButton();
}
</script>
<div class="mt-4 text-sm text-center">
<span class="text-gray-400">Forgot password?</span>
<a class="text-hs-brand-primary font-bold hover:underline ml-1" href="/users/password/new">Reset</a>
</div>
</main>
</div>
</div>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WFXGPXQ"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
</body>
</html>
Podbean