.fm-ls-open { overflow: hidden; }

.fm-ls-launcher {
	box-sizing: border-box;
	position: fixed;
	right: 22px;
	bottom: 22px;
	z-index: 9998;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 13px 18px;
	border: 1px solid rgba(255,255,255,.13);
	border-radius: 999px;
	background: var(--fm-ls-accent, #2c3829);
	color: #fff;
	font: 600 13px/1 Outfit, Muli, sans-serif;
	letter-spacing: .04em;
	box-shadow: 0 12px 34px rgba(0,0,0,.24);
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: transform .2s ease, box-shadow .2s ease;
}

.fm-ls-launcher::before,
.fm-ls-launcher::after { content: none !important; display: none !important; }
.fm-ls-launcher:hover { transform: translateY(-2px); box-shadow: 0 16px 38px rgba(0,0,0,.3); }
.fm-ls-launcher__spark { display: grid; place-items: center; width: 18px; height: 18px; animation: fm-ls-twinkle 2.4s ease-in-out infinite; }
.fm-ls-launcher__spark svg { display: block; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

.fm-ls-overlay {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: grid;
	place-items: center;
	padding: 24px;
	background: rgba(10,10,10,.72);
	backdrop-filter: blur(8px);
	opacity: 0;
	transition: opacity .25s ease;
}

.fm-ls-overlay[hidden] { display: none; }
.fm-ls-overlay.is-visible { display: grid !important; opacity: 1; }

.fm-ls-dialog {
	position: relative;
	display: grid;
	grid-template-columns: minmax(330px, .95fr) minmax(360px, 1.05fr);
	width: min(900px, 100%);
	min-height: 540px;
	overflow: hidden;
	border-radius: 4px;
	background: var(--fm-ls-cream, #f5f0e7);
	box-shadow: 0 32px 90px rgba(0,0,0,.42);
	transform: translateY(16px) scale(.985);
	transition: transform .3s cubic-bezier(.2,.8,.2,1);
	outline: none;
}

.fm-ls-overlay.is-visible .fm-ls-dialog { transform: none; }

.fm-ls-close {
	position: absolute;
	top: 14px;
	right: 16px;
	z-index: 3;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255,255,255,.78);
	color: #171717;
	font: 300 27px/35px Arial, sans-serif;
	cursor: pointer;
}

.fm-ls-visual {
	position: relative;
	display: grid;
	place-items: center;
	overflow: hidden;
	background: var(--fm-ls-accent, #2c3829);
}

.fm-ls-wheel {
	position: relative;
	width: 390px;
	height: 390px;
	border: 8px solid #f5f0e7;
	border-radius: 50%;
	box-shadow: 0 0 0 3px rgba(255,255,255,.2), 0 20px 50px rgba(0,0,0,.3);
	transition: transform 4.4s cubic-bezier(.12,.68,.08,1);
}

.fm-ls-pointer {
	position: absolute;
	z-index: 2;
	left: 50%;
	top: calc(50% - 210px);
	width: 0;
	height: 0;
	border-left: 16px solid transparent;
	border-right: 16px solid transparent;
	border-top: 34px solid #f5f0e7;
	filter: drop-shadow(0 3px 2px rgba(0,0,0,.24));
	transform: translateX(-50%);
}

.fm-ls-wheel__label {
	position: absolute;
	left: 50%;
	top: 50%;
	width: 96px;
	margin-left: -48px;
	color: #fff;
	font: 700 11px/1.15 Outfit, Muli, sans-serif;
	letter-spacing: .03em;
	text-align: center;
	text-shadow: 0 1px 2px rgba(0,0,0,.3);
	transform: rotate(var(--fm-ls-angle)) translateY(-148px) rotate(calc(var(--fm-ls-angle) * -1));
	transform-origin: center;
}

.fm-ls-wheel__hub {
	position: absolute;
	left: 50%;
	top: 50%;
	display: grid;
	place-items: center;
	width: 72px;
	height: 72px;
	border: 5px solid #f5f0e7;
	border-radius: 50%;
	background: #111;
	color: #fff;
	font: 600 17px/1 Outfit, sans-serif;
	letter-spacing: .12em;
	transform: translate(-50%,-50%);
}

.fm-ls-content {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 64px 68px;
	color: #171717;
}

.fm-ls-eyebrow { margin: 0 0 16px; color: var(--fm-ls-accent, #2c3829); font: 700 11px/1 Outfit, sans-serif; letter-spacing: .22em; }
.fm-ls-content h2 { margin: 0 0 18px; color: #171717; font: 500 clamp(34px, 4vw, 52px)/1.02 Georgia, serif; letter-spacing: -.035em; }
.fm-ls-intro { margin: 0 0 26px; color: #555; font: 400 15px/1.65 Outfit, Muli, sans-serif; }
.fm-ls-form { display: grid; gap: 10px; }
.fm-ls-form input[type="email"] { box-sizing: border-box; width: 100%; height: 52px; padding: 0 16px; border: 1px solid #c9c1b5; border-radius: 2px; background: rgba(255,255,255,.65); color: #171717; font: 400 14px/1 Outfit, sans-serif; outline: none; }
.fm-ls-form input[type="email"]:focus { border-color: var(--fm-ls-accent, #2c3829); box-shadow: 0 0 0 2px rgba(44,56,41,.12); }
.fm-ls-submit { display: grid; place-items: center; box-sizing: border-box; min-height: 52px; padding: 0 22px; border: 0; border-radius: 2px; background: var(--fm-ls-accent, #2c3829); color: #fff !important; font: 700 12px/1 Outfit, sans-serif; letter-spacing: .11em; text-decoration: none !important; text-transform: uppercase; cursor: pointer; }
.fm-ls-submit:disabled { opacity: .7; cursor: wait; }
.fm-ls-submit.is-loading::after { content: ''; width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff; border-radius: 50%; animation: fm-ls-spin .7s linear infinite; }
.fm-ls-submit.is-loading { font-size: 0; }
.fm-ls-privacy { margin: 14px 0 0; color: #777; font: 400 10px/1.5 Outfit, sans-serif; }
.fm-ls-error { margin: 2px 0 0; color: #a32a1d; font: 500 12px/1.4 Outfit, sans-serif; }
.fm-ls-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; }

.fm-ls-result__kicker { margin: 0 0 9px; color: #666; font: 500 13px/1.4 Outfit, sans-serif; }
.fm-ls-result__prize { margin: 0 0 22px; color: #171717; font: 500 30px/1.1 Georgia, serif; }
.fm-ls-code { width: 100%; margin: 0 0 10px; padding: 14px; border: 1px dashed #988d7c; border-radius: 2px; background: rgba(255,255,255,.52); color: #171717; cursor: pointer; }
.fm-ls-code__value { display: block; font: 700 19px/1.2 Outfit, sans-serif; letter-spacing: .13em; }
.fm-ls-code small { display: block; margin-top: 5px; color: #777; font: 400 10px/1 Outfit, sans-serif; }
.fm-ls-result__meta { margin: 0 0 20px; color: #666; font: 400 11px/1.4 Outfit, sans-serif; }

@keyframes fm-ls-spin { to { transform: rotate(360deg); } }
@keyframes fm-ls-twinkle { 0%,100% { transform: scale(.85) rotate(0); opacity: .75; } 50% { transform: scale(1.18) rotate(18deg); opacity: 1; } }

@media (max-width: 760px) {
	.fm-ls-overlay { padding: 12px; align-items: end; }
	.fm-ls-dialog { display: block; width: 100%; max-height: 94vh; min-height: 0; overflow-y: auto; border-radius: 8px 8px 0 0; }
	.fm-ls-visual { height: 300px; }
	.fm-ls-wheel { width: 280px; height: 280px; }
	.fm-ls-pointer { top: 0; border-left-width: 13px; border-right-width: 13px; border-top-width: 30px; }
	.fm-ls-wheel__label { width: 78px; margin-left: -39px; font-size: 9px; transform: rotate(var(--fm-ls-angle)) translateY(-105px) rotate(calc(var(--fm-ls-angle) * -1)); }
	.fm-ls-wheel__hub { width: 58px; height: 58px; }
	.fm-ls-content { padding: 32px 28px 36px; text-align: center; }
	.fm-ls-content h2 { font-size: 38px; }
	.fm-ls-eyebrow { margin-bottom: 11px; }
	.fm-ls-intro { margin-bottom: 20px; }
	.fm-ls-launcher {
		position: fixed !important;
		right: 16px !important;
		bottom: max(18px, env(safe-area-inset-bottom)) !important;
		left: auto !important;
		top: auto !important;
		z-index: 9998 !important;
		display: grid !important;
		place-items: center !important;
		box-sizing: border-box !important;
		width: 48px !important;
		min-width: 48px !important;
		max-width: 48px !important;
		height: 48px !important;
		min-height: 48px !important;
		max-height: 48px !important;
		margin: 0 !important;
		padding: 0 !important;
		border: 1px solid rgba(255,255,255,.16) !important;
		border-radius: 50% !important;
		background: var(--fm-ls-accent, #2c3829) !important;
		background-image: none !important;
		color: #fff !important;
		box-shadow: 0 8px 24px rgba(0,0,0,.25) !important;
		font-size: 0 !important;
		line-height: 1 !important;
		text-indent: 0 !important;
		overflow: hidden !important;
		appearance: none !important;
		-webkit-appearance: none !important;
	}
	.fm-ls-launcher > span:last-child { display: none !important; }
	.fm-ls-launcher__spark { display: grid !important; width: 21px !important; height: 21px !important; margin: 0 !important; }
	.fm-ls-launcher__spark svg { width: 21px !important; height: 21px !important; stroke: #fff !important; }
}

@media (prefers-reduced-motion: reduce) {
	.fm-ls-wheel { transition-duration: .01ms; }
	.fm-ls-launcher__spark { animation: none; }
}
