/* plus.lazaruss.co, after the Lazarus Brand Guide: night panels, one violet, gold only for Lazarus+. */

@font-face {
	font-family: "Archivo";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	font-stretch: 62% 125%;
	src: url(/fonts/archivo-latin-ext-wdth-normal.woff2) format("woff2-variations");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: "Archivo";
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	font-stretch: 62% 125%;
	src: url(/fonts/archivo-latin-wdth-normal.woff2) format("woff2-variations");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "JetBrains Mono";
	font-style: normal;
	font-display: swap;
	font-weight: 100 800;
	src: url(/fonts/jetbrains-mono-latin-wght-normal.woff2) format("woff2-variations");
}

:root {
	color-scheme: dark;
	--void: #101014;
	--obsidian: #15151b;
	--slate: #1c1c24;
	--iron: #3a3a46;
	--ash: #5a5a66;
	--fog: #8c8c9a;
	--bone: #f2f2f5;
	--violet: #b46cff;
	--lilac: #cda4ff;
	--violet-soft: rgba(180, 108, 255, 0.14);
	--halo: #e9c27d;
	--good: #5be38a;
	--bad: #ff6b6b;
	--line: rgba(255, 255, 255, 0.07);
	--ease: cubic-bezier(0.33, 1, 0.68, 1);
	--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	--sans: "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
}

* {
	box-sizing: border-box;
}

html {
	background: var(--void);
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var(--void);
	color: var(--bone);
	font: 400 16px/1.6 var(--sans);
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

a {
	color: var(--violet);
	text-decoration: none;
	transition: color 160ms var(--ease);
}

a:hover,
a:focus-visible {
	color: var(--lilac);
	text-decoration: underline;
	text-underline-offset: 3px;
}

:focus-visible {
	outline: 2px solid var(--violet);
	outline-offset: 2px;
	border-radius: 4px;
}

h1,
h2,
h3 {
	font-stretch: 125%;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0.01em;
	margin: 0 0 0.5em;
}

h1 {
	font-size: clamp(28px, 6vw, 40px);
}

h2 {
	font-size: 22px;
}

h3 {
	font-size: 16px;
}

p {
	margin: 0 0 1em;
}

code,
.mono {
	font-family: var(--mono);
	font-size: 0.92em;
}

code {
	color: var(--lilac);
	background: var(--violet-soft);
	padding: 0.1em 0.4em;
	border-radius: 4px;
	white-space: nowrap;
}

.plus {
	color: var(--halo);
}

.muted {
	color: var(--fog);
}

.wrap {
	width: 100%;
	max-width: 880px;
	margin: 0 auto;
	padding: 0 16px;
}

/* Header and footer */

.top {
	padding: 28px 0 8px;
}

.top .wrap {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

.top .lockup img {
	display: block;
	height: 28px;
	width: auto;
}

.top nav {
	display: flex;
	gap: 20px;
	font-size: 14px;
}

main.wrap {
	flex: 1;
	padding: 48px 16px 64px;
}

footer {
	border-top: 1px solid var(--line);
	padding: 28px 0 40px;
	font-size: 13px;
	color: var(--fog);
}

footer .links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
	margin-bottom: 14px;
}

footer p {
	margin: 0 0 6px;
}

/* Panels, buttons and forms */

.panel {
	background: var(--obsidian);
	border: 1px solid var(--line);
	border-radius: 12px;
	padding: 24px;
}

.panel + .panel,
.stack > * + * {
	margin-top: 16px;
}

.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font: 600 15px/1 var(--sans);
	font-stretch: 112%;
	color: var(--bone);
	background: var(--violet);
	border: 0;
	border-radius: 8px;
	padding: 13px 20px;
	cursor: pointer;
	transition: background-color 160ms var(--ease), opacity 160ms var(--ease);
	text-decoration: none;
}

.button:hover,
.button:focus-visible {
	background: var(--lilac);
	color: var(--void);
	text-decoration: none;
}

.button.quiet {
	background: var(--slate);
	color: var(--bone);
	border: 1px solid var(--line);
}

.button.quiet:hover,
.button.quiet:focus-visible {
	background: var(--violet-soft);
	color: var(--bone);
}

.button[disabled] {
	opacity: 0.4;
	cursor: not-allowed;
	pointer-events: none;
}

main:focus {
	outline: none;
}

.actions.centered {
	justify-content: center;
}

.actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 20px;
}

label.agree {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	font-size: 14px;
	color: var(--bone);
	cursor: pointer;
}

label.agree input {
	flex: none;
	width: 18px;
	height: 18px;
	margin: 3px 0 0;
	accent-color: var(--violet);
}

.note {
	font-size: 13px;
	color: var(--fog);
	margin-top: 14px;
}

.error {
	color: var(--bad);
	font-size: 14px;
	margin-top: 12px;
}

/* The rise: new things drift up a little as they fade in, then stay still. */

.rise {
	animation: rise 240ms var(--ease) both;
}

.rise.moment {
	animation-duration: 700ms;
}

@keyframes rise {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.rise,
	.rise.moment {
		animation: none;
	}
	* {
		transition: none !important;
	}
}

/* Landing page */

.hero {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 32px;
	align-items: center;
	margin-bottom: 40px;
}

.hero .lead {
	font-size: 18px;
	color: var(--fog);
	max-width: 34em;
}

.hero .mark {
	width: 128px;
	height: 128px;
	image-rendering: pixelated;
}

.price {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin: 20px 0 4px;
}

.price strong {
	font-size: 34px;
	font-stretch: 125%;
	font-weight: 600;
}

.command {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: var(--obsidian);
	border: 1px solid var(--line);
	border-radius: 8px;
	padding: 6px 6px 6px 14px;
	font-family: var(--mono);
	color: var(--lilac);
}

.command button {
	font: 600 13px/1 var(--sans);
	color: var(--bone);
	background: var(--slate);
	border: 1px solid var(--line);
	border-radius: 6px;
	padding: 8px 10px;
	cursor: pointer;
	transition: background-color 160ms var(--ease);
}

.command button:hover {
	background: var(--violet-soft);
}

.perks {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 12px;
	margin: 0 0 40px;
	padding: 0;
	list-style: none;
}

.perks li {
	background: var(--obsidian);
	border: 1px solid var(--line);
	border-radius: 12px;
	padding: 18px 20px;
	display: flex;
	gap: 14px;
	align-items: flex-start;
}

.perks .bullet {
	color: var(--halo);
	font-weight: 700;
	font-size: 20px;
	line-height: 1.1;
}

.perks h3 {
	margin: 0 0 4px;
}

.perks p {
	margin: 0;
	font-size: 14px;
	color: var(--fog);
}

.perks img {
	width: 16px;
	height: 16px;
	image-rendering: pixelated;
	vertical-align: -3px;
}

.steps {
	counter-reset: step;
	list-style: none;
	padding: 0;
	margin: 0 0 40px;
	display: grid;
	gap: 10px;
}

.steps li {
	counter-increment: step;
	display: flex;
	gap: 16px;
	align-items: baseline;
	background: var(--obsidian);
	border: 1px solid var(--line);
	border-radius: 12px;
	padding: 16px 20px;
}

.steps li::before {
	content: counter(step);
	flex: none;
	width: 28px;
	height: 28px;
	display: inline-grid;
	place-items: center;
	border-radius: 6px;
	background: var(--violet-soft);
	color: var(--lilac);
	font-family: var(--mono);
	font-size: 14px;
}

.faq details {
	border-bottom: 1px solid var(--line);
	padding: 14px 0;
}

.faq summary {
	cursor: pointer;
	font-weight: 600;
	list-style: none;
}

.faq summary::-webkit-details-marker {
	display: none;
}

.faq summary::after {
	content: "+";
	float: right;
	color: var(--fog);
	transition: transform 160ms var(--ease);
}

.faq details[open] summary::after {
	transform: rotate(45deg);
}

.faq details p {
	margin: 10px 0 0;
	color: var(--fog);
}

/* Buying and managing */

.narrow {
	max-width: 560px;
	margin: 0 auto;
}

.who {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px;
}

.who .name {
	font-weight: 600;
	font-stretch: 112%;
}

.who .id {
	font-family: var(--mono);
	font-size: 12px;
	color: var(--ash);
}

.state {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 4px 8px;
	border-radius: 6px;
	background: var(--slate);
	color: var(--fog);
	margin-left: auto;
}

.state.on {
	color: var(--good);
	background: rgba(91, 227, 138, 0.1);
}

.bar {
	height: 4px;
	background: var(--iron);
	border-radius: 2px;
	overflow: hidden;
	margin: 12px 0 4px;
}

.bar span {
	display: block;
	width: 0;
	height: 100%;
	background: var(--violet);
	transition: width 700ms var(--ease);
}

.order {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	padding: 14px 0;
	margin: 18px 0;
}

.order .total {
	font-size: 22px;
	font-weight: 600;
	font-stretch: 125%;
}

table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

th,
td {
	text-align: left;
	padding: 10px 8px;
	border-bottom: 1px solid var(--line);
	vertical-align: top;
}

th {
	color: var(--fog);
	font-weight: 600;
	font-size: 12px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.center {
	text-align: center;
}

.spinner {
	width: 28px;
	height: 28px;
	margin: 8px auto 16px;
	border-radius: 50%;
	border: 3px solid var(--iron);
	border-top-color: var(--violet);
	animation: spin 900ms linear infinite;
}

@keyframes spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.spinner {
		animation: none;
		border-top-color: var(--iron);
	}
}

/* Legal pages */

.legal {
	max-width: 720px;
}

.legal h2 {
	margin-top: 1.8em;
	font-size: 18px;
}

.legal li {
	margin-bottom: 0.4em;
}

.legal .summary {
	border-left: 3px solid var(--violet);
	background: var(--obsidian);
	border-radius: 0 8px 8px 0;
	padding: 14px 18px;
	margin: 0 0 24px;
}

.legal .summary p:last-child {
	margin: 0;
}

@media (max-width: 640px) {
	.hero {
		grid-template-columns: 1fr;
	}
	.hero .mark {
		display: none;
	}
	.perks {
		grid-template-columns: 1fr;
	}
	.top nav {
		gap: 14px;
	}
	.panel {
		padding: 18px;
	}
	th:nth-child(3),
	td:nth-child(3) {
		display: none;
	}
}
