/* otomaki.com
 *
 * The desktop app's design language on the web: near-black surfaces, warm off-white text stepped by
 * opacity, IBM Plex Sans for copy and IBM Plex Mono for micro-labels, and signal violet for anything
 * you can act on. The wordmark carries the page; nothing else competes with it.
 */

@font-face {
	font-family: "IBM Plex Sans";
	src: url("/font/PlexSans-Regular.woff2") format("woff2");
	font-weight: 400;
	font-display: swap;
}

@font-face {
	font-family: "IBM Plex Sans";
	src: url("/font/PlexSans-SemiBold.woff2") format("woff2");
	font-weight: 600;
	font-display: swap;
}

@font-face {
	font-family: "IBM Plex Mono";
	src: url("/font/PlexMono-Regular.woff2") format("woff2");
	font-weight: 400;
	font-display: swap;
}

@font-face {
	font-family: "IBM Plex Mono";
	src: url("/font/PlexMono-SemiBold.woff2") format("woff2");
	font-weight: 600;
	font-display: swap;
}

:root {
	--bg-0: #0E0E0E;
	--bg-1: #141414;
	--line: #2B2B2B;

	--text: #EFE9DF;
	--text-2: rgba(239, 233, 223, 0.72);
	--text-3: rgba(239, 233, 223, 0.50);

	--accent: #9872FF;
	--accent-hover: #AD8BFF;
	--accent-wash: rgba(152, 114, 255, 0.16);

	--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
	--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

	--gutter: 16px;
	--measure: 720px;
}

* { box-sizing: border-box; }

html { color-scheme: dark; }

body {
	margin: 0;
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	background: var(--bg-0);
	color: var(--text);
	font-family: var(--sans);
	font-size: 17px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

main {
	flex: 1;
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: 100%;
	max-width: calc(var(--measure) + 2 * var(--gutter));
	margin: 0 auto;
	padding: 0 var(--gutter);
}

h1, h2 {
	font-weight: 600;
	line-height: 1.15;
	margin: 0 0 16px;
	text-wrap: balance;
}

h2 { font-size: 22px; }

p { margin: 0 0 16px; }

a { color: var(--accent); text-underline-offset: 3px; }
a:hover { color: var(--accent-hover); }
a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

::selection { background: var(--accent-wash); }

/* ---- hero ------------------------------------------------------------------------- */

.hero { padding: 96px 0 56px; }

.wordmark { margin: 0 0 32px; }

.wordmark img {
	display: block;
	width: min(360px, 80vw);
	height: auto;
}

.headline { font-size: clamp(32px, 6vw, 48px); }

.tagline {
	margin-bottom: 24px;
	font-size: clamp(22px, 4vw, 28px);
	font-weight: 600;
	line-height: 1.3;
}

.lede {
	font-size: 19px;
	color: var(--text-2);
	max-width: 620px;
}

.status {
	margin: 28px 0 0;
	font-family: var(--mono);
	font-size: 13px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--text-3);
}

.hero .status:first-child { margin: 0 0 12px; }

.contact { padding-bottom: 96px; }

.contact p { overflow-wrap: anywhere; }

/* ---- footer ----------------------------------------------------------------------- */

.footer {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px 24px;
	width: 100%;
	max-width: calc(var(--measure) + 2 * var(--gutter));
	margin: 0 auto;
	padding: 24px var(--gutter) 40px;
	border-top: 1px solid var(--line);
	font-family: var(--mono);
	font-size: 13px;
	color: var(--text-3);
}

@media (max-width: 520px) {
	.hero { padding: 56px 0 40px; }
	.lede { font-size: 18px; }
	.contact { padding-bottom: 56px; }
}
