/* ---- fonts (self-hosted, SIL OFL: assets/fonts/OFL.txt) ---- */
@font-face {
	font-family: 'Geist Variable';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/geist-latin-wght-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: 'Geist Variable';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/geist-latin-ext-wght-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: 'Geist Mono Variable';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/geist-mono-latin-wght-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: 'Geist Mono Variable';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url(fonts/geist-mono-latin-ext-wght-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;
}

/* ---- tokens: the Enterprise ("Obsidian") palette of the app ---- */
:root {
	color-scheme: dark;

	--c-canvas: #07080a;
	--c-canvas-deep: #050607;
	--c-surface: #0b0d10;
	--c-surface-2: #111419;
	--c-line: #16191e;
	--c-line-strong: #23272e;

	--c-ink: #eceef1;
	--c-ink-2: #8a919c;
	--c-ink-3: #7a818c;
	--c-ghost: rgb(236 238 241 / 0.08);

	--c-signal: #2fd17c;
	--c-signal-ink: #7be3a8;
	--c-signal-soft: rgb(47 209 124 / 0.12);
	--c-advisory: #f2b033;
	--c-advisory-ink: #f7c766;
	--c-advisory-soft: rgb(242 176 51 / 0.13);
	--c-warning: #ff5c5c;
	--c-warning-ink: #ff8a8a;
	--c-warning-soft: rgb(255 92 92 / 0.13);
	--c-info: #7da9ff;
	--c-info-ink: #b3ccff;
	--c-info-soft: rgb(125 169 255 / 0.13);

	/* The solid button is ink on black, not green: green means "up". */
	--c-primary: #eceef1;
	--c-on-primary: #07080a;
	--c-focus: #7da9ff;

	--c-river-up: #1d5e3c;
	--c-river-warn: #a7761c;
	--c-river-down: #c24040;
	--c-river-none: #13161a;

	--shadow-lift: 0 1px 0 rgb(255 255 255 / 0.02) inset, 0 1px 2px rgb(0 0 0 / 0.5);
	--shadow-float: 0 2px 8px rgb(0 0 0 / 0.5), 0 24px 48px -16px rgb(0 0 0 / 0.8);

	--font-ui: 'Geist Variable', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-code: 'Geist Mono Variable', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;

	--radius-plate: 6px;
	--radius-btn: 8px;
	--radius-card: 12px;

	--head-h: 52px;
	--gutter: 16px;
	--ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---- base ---- */
*,
*::before,
*::after {
	box-sizing: border-box;
}
html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc(var(--head-h) + 16px);
}
body {
	margin: 0;
	background: var(--c-canvas);
	color: var(--c-ink);
	font-family: var(--font-ui);
	font-size: 0.9375rem;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}
img,
svg {
	display: block;
	max-width: 100%;
}
h1,
h2,
h3,
p,
ul,
ol,
figure {
	margin: 0;
}
ul,
ol {
	padding: 0;
	list-style: none;
}
h1,
h2,
h3 {
	font-weight: 600;
	letter-spacing: -0.02em;
	line-height: 1.2;
	text-wrap: balance;
	overflow-wrap: anywhere;
}
p {
	text-wrap: pretty;
}
a {
	color: var(--c-info-ink);
	text-decoration: underline;
	text-decoration-color: rgb(125 169 255 / 0.35);
	text-underline-offset: 3px;
}
a:hover {
	text-decoration-color: currentColor;
}
:focus-visible {
	outline: 2px solid var(--c-focus);
	outline-offset: 2px;
	border-radius: 4px;
}
code,
kbd,
pre,
samp {
	font-family: var(--font-code);
	font-size: 0.85em;
}
:not(pre) > code {
	padding: 1px 5px;
	border: 1px solid var(--c-line-strong);
	border-radius: 4px;
	background: var(--c-surface-2);
	color: var(--c-ink);
	overflow-wrap: anywhere;
}
strong {
	font-weight: 600;
	color: var(--c-ink);
}
::selection {
	background: rgb(125 169 255 / 0.3);
}
.muted {
	color: var(--c-ink-2);
}
.tnum,
.num {
	font-variant-numeric: tabular-nums;
}
.skip {
	position: absolute;
	left: 8px;
	top: -60px;
	z-index: 100;
	padding: 10px 14px;
	border-radius: var(--radius-btn);
	background: var(--c-primary);
	color: var(--c-on-primary);
	font-weight: 600;
	text-decoration: none;
}
.skip:focus {
	top: 8px;
}
.wrap {
	width: 100%;
	max-width: 1160px;
	margin-inline: auto;
	padding-inline: var(--gutter);
}
@media (min-width: 600px) {
	:root {
		--gutter: 24px;
	}
}
@media (min-width: 1200px) {
	:root {
		--gutter: 32px;
	}
}

/* ---- header: a classic horizontal bar ---- */
.sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.topbar {
	position: sticky;
	top: 0;
	z-index: 30;
	height: var(--head-h);
	border-bottom: 1px solid var(--c-line);
	background: rgb(7 8 10 / 0.92);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}
.topbar .wrap {
	display: flex;
	align-items: center;
	gap: 16px;
	height: 100%;
	max-width: 1280px;
}
.brand {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 40px;
	color: var(--c-ink);
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: -0.01em;
	text-decoration: none;
	white-space: nowrap;
}
.brand img {
	width: 28px;
	height: 28px;
	border-radius: 7px;
}
.nav {
	display: none;
}
@media (min-width: 1140px) {
	.nav {
		display: flex;
		align-items: center;
		gap: 2px;
		margin-left: 12px;
	}
	.nav a {
		display: inline-flex;
		align-items: center;
		height: 36px;
		padding: 0 11px;
		border-radius: var(--radius-btn);
		color: var(--c-ink-2);
		font-size: 0.875rem;
		font-weight: 500;
		text-decoration: none;
		white-space: nowrap;
	}
	.nav a:hover {
		color: var(--c-ink);
	}
	.nav a[aria-current] {
		color: var(--c-ink);
		box-shadow: inset 0 -2px 0 var(--c-info);
		border-radius: 0;
	}
	.nav .nav-extra {
		display: none;
	}
}
.actions {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-left: auto;
}
.actions .btn {
	display: none;
}
@media (min-width: 600px) {
	.actions .btn {
		display: inline-flex;
	}
}
@media (min-width: 1140px) and (max-width: 1279px) {
	.actions .gh span {
		display: none;
	}
	.actions .gh {
		padding: 0 10px;
	}
}
.menu-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-btn);
	background: var(--c-surface);
	color: var(--c-ink);
	cursor: pointer;
}
.menu-btn span,
.menu-btn span::before,
.menu-btn span::after {
	display: block;
	width: 16px;
	height: 1.5px;
	border-radius: 1px;
	background: currentColor;
	transition: transform 0.2s var(--ease);
}
.menu-btn span {
	position: relative;
}
.menu-btn span::before,
.menu-btn span::after {
	content: '';
	position: absolute;
	left: 0;
}
.menu-btn span::before {
	top: -5px;
}
.menu-btn span::after {
	top: 5px;
}
.menu-open .menu-btn span {
	background: transparent;
}
.menu-open .menu-btn span::before {
	transform: translateY(5px) rotate(45deg);
}
.menu-open .menu-btn span::after {
	transform: translateY(-5px) rotate(-45deg);
}
@media (min-width: 1140px) {
	.menu-btn {
		display: none;
	}
}
@media (max-width: 1139px) {
	.menu-open .nav {
		position: fixed;
		top: var(--head-h);
		left: 0;
		right: 0;
		z-index: 29;
		display: grid;
		gap: 2px;
		max-height: calc(100dvh - var(--head-h));
		overflow-y: auto;
		padding: 8px var(--gutter) 16px;
		border-bottom: 1px solid var(--c-line);
		background: var(--c-canvas-deep);
		box-shadow: var(--shadow-float);
	}
	.menu-open .nav a {
		display: flex;
		align-items: center;
		min-height: 44px;
		padding: 0 12px;
		border-radius: var(--radius-btn);
		color: var(--c-ink);
		font-weight: 500;
		text-decoration: none;
	}
	.menu-open .nav a:hover,
	.menu-open .nav a[aria-current] {
		background: var(--c-surface-2);
	}
}

/* language selector */
.lang {
	position: relative;
}
.lang summary {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 40px;
	padding: 0 10px;
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-btn);
	background: var(--c-surface);
	color: var(--c-ink-2);
	font-family: var(--font-code);
	font-size: 0.75rem;
	font-weight: 500;
	cursor: pointer;
	list-style: none;
}
@media (min-width: 1140px) {
	.lang summary {
		height: 36px;
	}
}
.lang summary::-webkit-details-marker {
	display: none;
}
.lang summary:hover {
	color: var(--c-ink);
}
.lang summary svg {
	width: 14px;
	height: 14px;
}
.lang ul {
	position: absolute;
	right: 0;
	top: calc(100% + 6px);
	z-index: 40;
	min-width: 200px;
	padding: 4px;
	border: 1px solid var(--c-line-strong);
	border-radius: 10px;
	background: var(--c-surface);
	box-shadow: var(--shadow-float);
}
.lang a {
	display: flex;
	align-items: center;
	min-height: 40px;
	padding: 0 10px;
	border-radius: 6px;
	color: var(--c-ink);
	font-size: 0.8125rem;
	text-decoration: none;
}
.lang a:hover,
.lang a[aria-current] {
	background: var(--c-surface-2);
}
.lang a[aria-current] {
	font-weight: 600;
}
.lang a[aria-current]::after {
	content: '';
	width: 6px;
	height: 6px;
	margin-left: auto;
	border-radius: 50%;
	background: var(--c-info);
}

/* ---- buttons, plates, marks ---- */
.btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 40px;
	padding: 0 16px;
	border: 1px solid transparent;
	border-radius: var(--radius-btn);
	font-family: inherit;
	font-size: 0.875rem;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: filter 0.2s, border-color 0.2s, background-color 0.2s, transform 0.1s;
}
.btn:active {
	transform: translateY(1px);
}
.btn svg {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}
.btn-primary {
	background: var(--c-primary);
	color: var(--c-on-primary);
	box-shadow: var(--shadow-lift);
}
.btn-primary:hover {
	filter: brightness(1.1);
}
.btn-secondary {
	border-color: var(--c-line-strong);
	background: var(--c-surface);
	color: var(--c-ink);
	box-shadow: var(--shadow-lift);
}
.btn-secondary:hover {
	border-color: var(--c-ink-3);
}
.btn-lg {
	min-height: 48px;
	padding: 0 22px;
	font-size: 0.9375rem;
}
.btn-sm {
	min-height: 36px;
	padding: 0 12px;
	font-size: 0.8125rem;
}
@media (max-width: 1139px) {
	.btn-sm {
		min-height: 40px;
	}
}
.plate {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 22px;
	padding: 0 8px;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-plate);
	background: var(--c-ghost);
	color: var(--c-ink-2);
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1;
	white-space: nowrap;
}
.plate svg {
	width: 13px;
	height: 13px;
	flex-shrink: 0;
}
.plate-signal {
	border-color: rgb(47 209 124 / 0.3);
	background: var(--c-signal-soft);
	color: var(--c-signal-ink);
}
.plate-info {
	border-color: rgb(125 169 255 / 0.3);
	background: var(--c-info-soft);
	color: var(--c-info-ink);
}
.plate-advisory {
	border-color: rgb(242 176 51 / 0.35);
	background: var(--c-advisory-soft);
	color: var(--c-advisory-ink);
}
.plate-warning {
	border-color: rgb(255 92 92 / 0.35);
	background: var(--c-warning-soft);
	color: var(--c-warning-ink);
}
/* A state is a shape and a word, never a colour alone (app: enterprise/status.ts). */
.mk {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-family: var(--font-code);
	font-size: 0.625rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}
.mk::before {
	content: '';
	width: 7px;
	height: 7px;
	flex-shrink: 0;
}
.mk-up {
	color: var(--c-signal-ink);
}
.mk-up::before {
	border-radius: 50%;
	background: var(--c-signal);
}
.mk-deg {
	color: var(--c-advisory-ink);
}
.mk-deg::before {
	transform: rotate(45deg);
	background: var(--c-advisory);
}
.mk-down {
	color: var(--c-warning-ink);
}
.mk-down::before {
	border-radius: 2px;
	background: var(--c-warning);
}
.eyebrow,
.label-tape {
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* ---- sections ---- */
main {
	flex: 1;
}
.block {
	padding-block: 48px;
	border-top: 1px solid var(--c-line);
}
@media (min-width: 900px) {
	.block {
		padding-block: 72px;
	}
}
.block.flush {
	border-top: 0;
	padding-top: 8px;
}
.section-head {
	display: grid;
	gap: 10px;
	max-width: 44rem;
	margin-bottom: 28px;
}
.section-head h2 {
	font-size: clamp(1.375rem, 1.1rem + 1vw, 1.75rem);
}
.section-head p {
	color: var(--c-ink-2);
}
.section-head.tight {
	margin-bottom: 0;
}
.page-head {
	padding-block: 40px 28px;
}
@media (min-width: 900px) {
	.page-head {
		padding-block: 64px 36px;
	}
}
.page-head h1 {
	margin-top: 8px;
	font-size: clamp(1.75rem, 1.3rem + 2vw, 2.5rem);
}
.page-head .lede {
	max-width: 44rem;
	margin-top: 14px;
	color: var(--c-ink-2);
	font-size: 1rem;
}
.page-head .code-note {
	max-width: 44rem;
}
.crumbs {
	font-size: 0.8125rem;
}
.crumbs a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	color: var(--c-ink-2);
}

/* cards (family cards from build.py, community cards) */
.cards {
	display: grid;
	gap: 12px;
}
@media (min-width: 640px) {
	.cards-fam,
	.cards-3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1000px) {
	.cards-fam,
	.cards-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
	padding: 18px 20px;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-card);
	background: var(--c-surface);
	transition: border-color 0.2s, background-color 0.2s;
}
.card:hover {
	border-color: var(--c-line-strong);
	background: var(--c-surface-2);
}
.card h3,
.card .card-h {
	font-size: 0.9375rem;
	letter-spacing: -0.01em;
}
.card h3 a {
	color: var(--c-ink);
	text-decoration: none;
}
.card h3 a::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
}
.card p {
	color: var(--c-ink-2);
	font-size: 0.875rem;
}
.card .label-tape {
	margin-top: auto;
	padding-top: 4px;
}
.more {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 40px;
	font-size: 0.875rem;
	font-weight: 500;
}
.more::after {
	content: '→';
	transition: transform 0.2s var(--ease);
}
.more:hover::after {
	transform: translateX(3px);
}

/* ---- code blocks ---- */
.code {
	position: relative;
	max-width: min(40rem, 100%);
	min-width: 0;
	margin-inline: auto;
	border: 1px solid var(--c-line-strong);
	border-radius: 10px;
	background: var(--c-canvas-deep);
}
.code pre {
	margin: 0;
	padding: 16px 84px 16px 16px;
	overflow-x: auto;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
	color: var(--c-ink);
	font-size: 0.8125rem;
	line-height: 1.75;
	scrollbar-width: thin;
}
.code .prompt,
.code .comment {
	color: var(--c-ink-3);
}
.code .prompt {
	user-select: none;
}
.copy {
	position: absolute;
	top: 10px;
	right: 10px;
	min-height: 32px;
	padding: 0 10px;
	border: 1px solid var(--c-line-strong);
	border-radius: 6px;
	background: var(--c-surface-2);
	color: var(--c-ink-2);
	font-family: inherit;
	font-size: 0.75rem;
	font-weight: 600;
	cursor: pointer;
}
@media (max-width: 959px) {
	.copy {
		min-height: 40px;
		top: 6px;
		right: 6px;
	}
}
.copy:hover {
	color: var(--c-ink);
}
.copy.done {
	border-color: rgb(47 209 124 / 0.4);
	color: var(--c-signal-ink);
}
.code-note {
	margin-top: 10px;
	color: var(--c-ink-2);
	font-size: 0.8125rem;
}
.cta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

/* ---- home ---- */
.hero {
	padding-block: 44px 56px;
	background:
		radial-gradient(48rem 26rem at 70% 10%, rgb(125 169 255 / 0.09), transparent 70%),
		linear-gradient(var(--c-line) 1px, transparent 1px) 0 0 / 44px 44px,
		linear-gradient(90deg, var(--c-line) 1px, transparent 1px) 0 0 / 44px 44px;
	border-bottom: 1px solid var(--c-line);
}
@media (min-width: 900px) {
	.hero {
		padding-block: 80px 88px;
	}
}
.hero-grid {
	display: grid;
	gap: 40px;
	max-width: 1280px;
}
@media (min-width: 1100px) {
	.hero-grid {
		grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
		gap: 56px;
		align-items: center;
	}
}
.hero-text {
	min-width: 0;
}
.hero h1 {
	margin-top: 18px;
	font-size: clamp(2.125rem, 1.4rem + 3vw, 3.4rem);
	letter-spacing: -0.035em;
	line-height: 1.08;
}
.benefits {
	display: grid;
	gap: 28px 32px;
}
@media (min-width: 640px) {
	.benefits {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1000px) {
	.benefits {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.benefits li {
	min-width: 0;
}
.benefits h3 {
	font-size: 1rem;
}
.benefits p {
	margin-top: 6px;
	color: var(--c-ink-2);
	font-size: 0.9375rem;
}
.icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	margin-bottom: 14px;
	border: 1px solid var(--c-line-strong);
	border-radius: 10px;
	background: var(--c-canvas);
	color: var(--c-info);
}
.icon svg {
	width: 20px;
	height: 20px;
}
.card .icon {
	width: 36px;
	height: 36px;
	margin-bottom: 4px;
	background: var(--c-surface-2);
}
.card .icon svg {
	width: 18px;
	height: 18px;
}
/* ---- install ---- */
.steps {
	display: grid;
	max-width: 46rem;
	counter-reset: step;
}
.steps > li {
	position: relative;
	display: grid;
	gap: 10px;
	min-width: 0;
	padding: 0 0 32px 46px;
	counter-increment: step;
}
.steps > li::before {
	content: counter(step);
	position: absolute;
	left: 0;
	top: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border: 1px solid var(--c-line-strong);
	border-radius: 8px;
	background: var(--c-surface-2);
	color: var(--c-ink);
	font-family: var(--font-code);
	font-size: 0.8125rem;
	font-weight: 600;
}
.steps > li::after {
	content: '';
	position: absolute;
	left: 15px;
	top: 38px;
	bottom: 8px;
	width: 1px;
	background: var(--c-line-strong);
}
.steps > li:last-child::after {
	display: none;
}
.steps h2 {
	font-size: 1.0625rem;
	line-height: 30px;
}
.steps p {
	color: var(--c-ink-2);
}
.steps .code {
	max-width: none;
}
.facts {
	display: grid;
	border-top: 1px solid var(--c-line);
}
.facts li {
	padding-block: 10px;
	border-bottom: 1px solid var(--c-line);
	font-size: 0.875rem;
}
.facts a {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
}
.h-sm {
	margin-bottom: 14px;
	font-size: 1rem;
}

/* ---- community ---- */
.badges {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 4px;
}
.badges a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 12px;
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-btn);
	background: var(--c-surface);
	color: var(--c-ink);
	font-size: 0.8125rem;
	font-weight: 500;
	text-decoration: none;
}
.badges a:hover {
	border-color: var(--c-ink-3);
}

/* ---- devices catalogue ---- */
.filter {
	display: grid;
	gap: 14px;
	margin-bottom: 20px;
}
.search {
	display: grid;
	gap: 6px;
	max-width: 30rem;
}
.search[hidden] {
	display: none;
}
.search input {
	width: 100%;
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-btn);
	background: var(--c-surface);
	color: var(--c-ink);
	font: inherit;
	font-size: 0.875rem;
}
.search input::placeholder {
	color: var(--c-ink-3);
}
.search input:focus {
	outline: 2px solid var(--c-focus);
	outline-offset: 0;
	border-color: transparent;
}
.fam-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}
.fam-chips a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 12px;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-btn);
	background: var(--c-surface);
	color: var(--c-ink-2);
	font-size: 0.8125rem;
	font-weight: 500;
	text-decoration: none;
}
@media (min-width: 960px) {
	.fam-chips a {
		min-height: 32px;
	}
}
.fam-chips a:hover {
	border-color: var(--c-line-strong);
	color: var(--c-ink);
}
.fam-chips a[aria-current] {
	border-color: var(--c-line-strong);
	background: var(--c-surface-2);
	color: var(--c-ink);
}
#dev-count {
	font-size: 0.8125rem;
}
.catalog {
	display: grid;
	gap: 8px;
}
@media (min-width: 640px) {
	.catalog {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1000px) {
	.catalog {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.catalog > li {
	min-width: 0;
}
.catalog > li[hidden] {
	display: none;
}
.dev-card {
	display: grid;
	gap: 6px;
	height: 100%;
	padding: 14px 16px;
	border: 1px solid var(--c-line);
	border-radius: 10px;
	background: var(--c-surface);
	color: var(--c-ink);
	text-decoration: none;
	transition: border-color 0.2s, background-color 0.2s;
}
.dev-card:hover {
	border-color: var(--c-line-strong);
	background: var(--c-surface-2);
}
.dev-card .name {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 0.875rem;
	font-weight: 600;
	overflow-wrap: anywhere;
}
.led {
	width: 7px;
	height: 7px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--c-signal);
}
.dev-card .what {
	color: var(--c-ink-2);
	font-size: 0.8125rem;
	line-height: 1.5;
}
.dev-card .fam {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-top: 4px;
	font-size: 0.625rem;
}
.dev-card .go::after {
	content: '→';
	display: inline-block;
	color: var(--c-ink-3);
	font-family: var(--font-ui);
	font-size: 0.875rem;
	transition: transform 0.2s var(--ease), color 0.2s;
}
.dev-card:hover .go::after {
	transform: translateX(3px);
	color: var(--c-ink);
}

/* ---- family pages ---- */
.devs {
	display: grid;
	gap: 16px;
	padding-bottom: 48px;
}
.dev {
	min-width: 0;
	padding: 20px;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-card);
	background: var(--c-surface);
}
@media (min-width: 900px) {
	.dev {
		padding: 28px;
	}
}
.dev > header {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px 12px;
}
.dev > header h2 {
	font-size: 1.25rem;
}
.dev .summary {
	margin-top: 8px;
	color: var(--c-ink-2);
}
.dev-grid {
	display: grid;
	gap: 24px;
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid var(--c-line);
}
@media (min-width: 900px) {
	.dev-grid {
		grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
		gap: 40px;
	}
}
.dev-grid section {
	min-width: 0;
}
.dev-grid h3 {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 12px;
	font-size: 0.875rem;
}
.dev-grid p {
	font-size: 0.875rem;
}
.dev-grid p + p {
	margin-top: 8px;
}
.needs {
	display: grid;
	gap: 10px;
	margin-bottom: 10px;
}
.needs li {
	display: grid;
	gap: 2px;
	font-size: 0.875rem;
}
.needs span {
	color: var(--c-ink-2);
}
.rules {
	display: grid;
	border-top: 1px solid var(--c-line);
}
.rules li {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 2px 10px;
	align-items: start;
	padding-block: 9px;
	border-bottom: 1px solid var(--c-line);
	font-size: 0.8125rem;
}
.rules li .plate {
	grid-row: span 2;
	margin-top: 1px;
}
.rules strong {
	overflow-wrap: anywhere;
}
.rules span:not(.plate) {
	color: var(--c-ink-2);
}
details > summary {
	cursor: pointer;
}
.more-rules summary,
.setup summary {
	display: flex;
	align-items: center;
	min-height: 40px;
	color: var(--c-info-ink);
	font-size: 0.8125rem;
	font-weight: 500;
}
.setup {
	margin-top: 18px;
	padding-top: 6px;
	border-top: 1px solid var(--c-line);
}
.setup-steps {
	display: grid;
	gap: 12px;
	margin-top: 8px;
	padding-left: 20px;
	list-style: decimal;
	font-size: 0.875rem;
}
.setup-steps li {
	min-width: 0;
}
.setup-steps li::marker {
	color: var(--c-ink-3);
	font-family: var(--font-code);
}
.setup-steps pre {
	margin: 8px 0 0;
	padding: 12px 14px;
	overflow-x: auto;
	border: 1px solid var(--c-line-strong);
	border-radius: 8px;
	background: var(--c-canvas-deep);
	font-size: 0.75rem;
}
.warn {
	margin-top: 12px;
	padding: 10px 12px;
	border: 1px solid rgb(242 176 51 / 0.3);
	border-radius: 8px;
	background: var(--c-advisory-soft);
	font-size: 0.8125rem;
}
.dev-doc {
	margin-top: 18px;
}

/* ---- roadmap ---- */
.rm-discuss {
	margin-bottom: 24px;
	color: var(--c-ink-2);
}
.rm-sec {
	padding-block: 28px;
	border-top: 1px solid var(--c-line);
}
.rm-head {
	display: grid;
	gap: 4px;
	margin-bottom: 14px;
}
.rm-head h2 {
	font-size: 1.125rem;
}
.rm-list {
	display: grid;
	overflow: hidden;
	border: 1px solid var(--c-line);
	border-radius: var(--radius-card);
	background: var(--c-surface);
}
.rm-list li {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 6px;
	padding: 12px 16px;
	border-top: 1px solid var(--c-line);
	font-size: 0.875rem;
}
.rm-list li:first-child {
	border-top: 0;
}
.rm-list .plate {
	justify-self: start;
}
@media (min-width: 700px) {
	.rm-list li {
		grid-template-columns: 9.5rem minmax(0, 1fr);
		gap: 14px;
		align-items: start;
	}
}
.rm-vote-box {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 14px;
	grid-column: 1 / -1;
}
@media (min-width: 700px) {
	.rm-vote-box {
		grid-column: 2;
	}
}
.rm-votes {
	font-weight: 600;
}
.rm-vote {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	text-decoration: underline;
}
.rm-ver {
	font-family: var(--font-code);
	font-size: 0.8125rem;
}
.rm-group {
	border: 1px solid var(--c-line);
	border-radius: 10px;
	background: var(--c-surface);
}
.rm-group + .rm-group {
	margin-top: 6px;
}
.rm-group summary {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 12px;
	min-height: 44px;
	padding: 8px 14px;
	list-style: none;
}
.rm-group summary::-webkit-details-marker {
	display: none;
}
.rm-group summary::before {
	content: '';
	width: 6px;
	height: 6px;
	border-right: 1.5px solid var(--c-ink-3);
	border-bottom: 1.5px solid var(--c-ink-3);
	transform: rotate(-45deg);
	transition: transform 0.2s var(--ease);
}
.rm-group[open] summary::before {
	transform: rotate(45deg);
}
.rm-gtitle {
	font-size: 0.875rem;
	font-weight: 600;
}
.rm-count {
	margin-left: auto;
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.6875rem;
}
.rm-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding: 4px 14px 14px;
}
.rm-chips li {
	padding: 3px 9px;
	border: 1px solid var(--c-line);
	border-radius: 6px;
	background: var(--c-canvas);
	color: var(--c-ink-2);
	font-size: 0.8125rem;
}
.rm-foot {
	margin-top: 24px;
}

/* ---- footer: columns ---- */
footer {
	padding-block: 48px 28px;
	border-top: 1px solid var(--c-line);
	background: var(--c-canvas-deep);
	color: var(--c-ink-2);
	font-size: 0.875rem;
}
.foot-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 32px 24px;
}
@media (min-width: 900px) {
	.foot-grid {
		grid-template-columns: minmax(0, 1.4fr) repeat(4, minmax(0, 1fr)) minmax(0, 1.4fr);
	}
}
.foot-about,
.foot-support {
	grid-column: 1 / -1;
}
@media (min-width: 900px) {
	.foot-about,
	.foot-support {
		grid-column: auto;
	}
}
.foot-grid > * {
	min-width: 0;
}
.foot-grid h2 {
	margin-bottom: 10px;
	color: var(--c-ink);
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0;
}
.foot-grid ul {
	display: grid;
}
.foot-grid ul a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	color: var(--c-ink-2);
	text-decoration: none;
}
@media (min-width: 900px) {
	.foot-grid ul a {
		min-height: 30px;
	}
}
.foot-grid ul a:hover,
.foot-grid ul a[aria-current] {
	color: var(--c-ink);
}
.foot-about p + p,
.foot-support p + p {
	margin-top: 10px;
}
.foot-brand {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--c-ink);
	font-weight: 600;
}
.foot-brand img {
	width: 24px;
	height: 24px;
	border-radius: 6px;
}
.foot-ver a {
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.75rem;
}
.foot-support p:not(:first-of-type) a:not(.btn) {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
}
.foot-note {
	margin-top: 36px;
	padding-top: 20px;
	border-top: 1px solid var(--c-line);
	color: var(--c-ink-3);
	font-size: 0.75rem;
}

/* ---- 404 ---- */
.lost {
	display: grid;
	place-content: center;
	justify-items: center;
	gap: 16px;
	min-height: 100vh;
	min-height: 100dvh;
	padding: 48px var(--gutter);
	text-align: center;
}
.lost img {
	width: 56px;
	height: 56px;
	border-radius: 14px;
}
.lost h1 {
	font-size: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
}

/* ---- motion: a block settles in once, nothing more ---- */
.js .reveal {
	opacity: 0;
	transform: translateY(8px);
}
.js .reveal.in {
	opacity: 1;
	transform: none;
	transition: opacity 0.5s var(--ease) var(--rd, 0ms), transform 0.5s var(--ease) var(--rd, 0ms);
}
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
	}
}

/* selfhostr: the DumbMonit site charter, shared by the four showcase sites.
   Same near-black ground, same tokens, Geist and Geist Mono, hairline borders; green (signal) is the accent.
   A project may colour small details only (--proj: glyphs, dots), never backgrounds or titles. */
:root {
	color-scheme: dark;
	--c-info: #2fd17c;
	--c-info-ink: #7be3a8;
	--c-info-soft: rgb(47 209 124 / 0.12);
	--c-focus: #2fd17c;
	--proj: #2fd17c;
}
a {
	text-decoration-color: rgb(47 209 124 / 0.35);
}
::selection {
	background: rgb(47 209 124 / 0.3);
}
.plate-info {
	border-color: rgb(47 209 124 / 0.3);
}
.hero {
	background:
		radial-gradient(48rem 26rem at 70% 10%, rgb(47 209 124 / 0.07), transparent 70%),
		linear-gradient(var(--c-line) 1px, transparent 1px) 0 0 / 44px 44px,
		linear-gradient(90deg, var(--c-line) 1px, transparent 1px) 0 0 / 44px 44px;
}

/* ---- header additions ---- */
.brand .org {
	color: var(--c-ink-3);
	font-weight: 500;
}

/* ---- hero ---- */
.hero .lede {
	max-width: 38rem;
	margin-top: 16px;
	color: var(--c-ink-2);
	font-size: 1.0625rem;
}
.hero .cta {
	margin-top: 26px;
}
.status-row {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.hero-side {
	min-width: 0;
}
.hero-side .code {
	margin: 0;
	max-width: none;
}
.hero-side .code-note {
	margin-top: 10px;
}

/* the rack: a list of rows, like the product's own console */
.rack {
	border: 1px solid var(--c-line-strong);
	border-radius: var(--radius-card);
	background: var(--c-surface);
	box-shadow: var(--shadow-float);
	overflow: hidden;
}
.rack-head {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 16px;
	border-bottom: 1px solid var(--c-line);
	background: var(--c-surface-2);
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.6875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.rack ul {
	display: grid;
}
.rack li a {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 2px 12px;
	align-items: center;
	min-height: 52px;
	padding: 10px 16px;
	border-bottom: 1px solid var(--c-line);
	color: var(--c-ink);
	text-decoration: none;
}
.rack li:last-child a {
	border-bottom: 0;
}
.rack li a:hover {
	background: var(--c-surface-2);
}
.rack .nm {
	font-weight: 600;
}
.rack .ty {
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.75rem;
	text-align: right;
}
.rack .host {
	grid-column: 1 / -1;
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.75rem;
}

/* ---- project cards ---- */
.cards-proj {
	display: grid;
	gap: 12px;
}
@media (min-width: 700px) {
	.cards-proj {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1040px) {
	.cards-proj {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.card .links {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	margin-top: auto;
	padding-top: 8px;
}
.card .links a {
	position: relative;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	font-size: 0.8125rem;
	font-weight: 500;
}
.card-h {
	font-weight: 600;
}
.card .host {
	color: var(--c-ink-3);
	font-family: var(--font-code);
	font-size: 0.75rem;
}

/* ---- prose (about) ---- */
.prose {
	display: grid;
	gap: 14px;
	max-width: 40rem;
}
.prose p {
	color: var(--c-ink-2);
	font-size: 1rem;
}
.prose h2 {
	margin-top: 18px;
	font-size: 1.25rem;
}
.people {
	display: grid;
	gap: 12px;
	margin-top: 8px;
}
@media (min-width: 640px) {
	.people {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
.list-plain {
	display: grid;
	gap: 8px;
	color: var(--c-ink-2);
}
.list-plain li {
	padding-left: 18px;
	position: relative;
}
.list-plain li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.7em;
	width: 7px;
	height: 7px;
	border-radius: 2px;
	background: var(--c-info);
}

/* ---- project sites ---- */
.cells-3 {
	display: grid;
	gap: 12px;
}
@media (min-width: 640px) {
	.cells-3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1000px) {
	.cells-3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}
.states {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.notice {
	display: flex;
	gap: 10px;
	max-width: 46rem;
	margin-top: 20px;
	padding: 12px 16px;
	border: 1px solid color-mix(in srgb, var(--c-advisory-ink) 35%, transparent);
	border-radius: var(--radius-card);
	background: var(--c-advisory-soft);
	color: var(--c-ink);
	font-size: 0.875rem;
}
.steps .code {
	margin: 0;
	max-width: none;
}
.code .prompt,
.code .comment {
	color: var(--c-ink-3);
}
.cta-end {
	display: grid;
	justify-items: center;
	gap: 14px;
	text-align: center;
}
.cta-end p {
	color: var(--c-ink-2);
	max-width: 36rem;
}
.cta-end .cta {
	justify-content: center;
}
.lost .cta {
	justify-content: center;
}
.lost p {
	color: var(--c-ink-2);
}
.steps h3 {
	font-size: 1.0625rem;
	line-height: 30px;
}
.ask {
	display: grid;
}
.ask li {
	padding: 12px 16px;
	border-bottom: 1px solid var(--c-line);
	color: var(--c-ink);
}
.ask li:last-child {
	border-bottom: 0;
}
.notice .nicon {
	width: 18px;
	height: 18px;
	flex-shrink: 0;
	margin-top: 2px;
	color: var(--c-advisory-ink);
}
.stack {
	margin-top: 36px;
}
.states {
	margin-top: 4px;
}
@media (min-width: 640px) {
	.benefits.b4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (min-width: 1000px) {
	.benefits.b4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* orch.selfhostr.io : une page, thème sombre chaud, accent orange. Polices OFL auto-hébergées (assets/fonts/OFL-*.txt). */
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/instrument-sans-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/instrument-sans-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/instrument-sans-latin-600-normal.woff2) format('woff2')}
:root{--o-bg:#0d0b0a;--o-surface:#151210;--o-line:#26211d;--o-line2:#3a322c;--o-ink:#f1ede8;--o-ink2:#a39b92;--o-acc:#e8743b;--o-acc-ink:#f09560;
--font-ui:'Instrument Sans',ui-sans-serif,system-ui,sans-serif;--c-primary:var(--o-acc);--c-on-primary:#1a0d05}
body{background:var(--o-bg);color:var(--o-ink);font-size:1rem}
.o-wrap{width:100%;max-width:1040px;margin-inline:auto;padding-inline:24px}
a{color:inherit}
:focus-visible{outline:2px solid var(--o-acc);outline-offset:3px;border-radius:4px}
/* en-tête */
.o-head{border-bottom:1px solid var(--o-line)}
.o-head-in{display:flex;align-items:center;justify-content:space-between;height:64px}
.o-brand{display:flex;align-items:center;gap:10px;font-size:1.125rem;font-weight:600;letter-spacing:-.01em;text-decoration:none}
.o-brand img{display:block;border-radius:8px}
.o-nav{display:flex;align-items:center;gap:6px}
.o-nav a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:8px;color:var(--o-ink2);font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .2s}
.o-nav a:hover{color:var(--o-ink)}
/* héros */
.o-hero{padding:72px 0 80px;background:radial-gradient(52rem 24rem at 12% 0,rgb(232 116 59/.10),transparent 70%)}
.o-flow{display:inline-block;margin:0 0 28px;padding:7px 14px;border:1px solid var(--o-line2);border-radius:999px;background:var(--o-surface);font-family:var(--font-code);font-size:.8125rem;color:var(--o-ink2)}
.o-flow i{font-style:normal;color:var(--o-acc);margin-inline:4px}
.o-hero h1{margin:0;max-width:16ch;font-size:clamp(2.5rem,7vw,4.5rem);line-height:1.02;font-weight:600;letter-spacing:-.04em;text-wrap:balance}
.o-lede{max-width:40rem;margin:24px 0 0;font-size:1.1875rem;line-height:1.55;color:var(--o-ink2);text-wrap:pretty}
.o-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.o-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border:1px solid var(--o-line2);border-radius:10px;font-size:.9375rem;font-weight:600;text-decoration:none;transition:border-color .2s,filter .2s}
.o-btn:hover{border-color:var(--o-ink2)}
.o-btn-p{background:var(--o-acc);border-color:var(--o-acc);color:#1a0d05}
.o-btn-p:hover{filter:brightness(1.1);border-color:var(--o-acc)}
.o-shot{margin:64px 0 0;border:1px solid var(--o-line2);border-radius:14px;background:var(--o-surface);overflow:hidden;box-shadow:0 30px 80px -30px rgb(232 116 59/.25)}
.o-shot-bar{display:flex;gap:7px;padding:12px 14px;border-bottom:1px solid var(--o-line)}
.o-shot-bar span{width:10px;height:10px;border-radius:50%;background:var(--o-line2)}
.o-shot img{display:block;width:100%;height:auto}
/* trois points */
.o-sec{padding:72px 0;border-top:1px solid var(--o-line)}
.o-points{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin:0;padding:0;list-style:none}
.o-n{display:block;margin-bottom:14px;font-family:var(--font-code);font-size:.8125rem;color:var(--o-acc)}
.o-points h3{margin:0 0 10px;font-size:1.25rem;line-height:1.25;font-weight:600;letter-spacing:-.015em}
.o-points p{margin:0;color:var(--o-ink2);text-wrap:pretty}
/* installation */
.o-install-in{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
.o-install h2{margin:0 0 14px;font-size:2rem;line-height:1.1;font-weight:600;letter-spacing:-.03em}
.o-install p{margin:0 0 16px;color:var(--o-ink2);text-wrap:pretty}
.o-link{display:inline-flex;align-items:center;min-height:44px;color:var(--o-acc-ink);font-weight:600;text-decoration:none}
.o-link:hover{text-decoration:underline;text-underline-offset:4px}
.o-code{min-width:0}
.o-code .code{max-width:100%;margin:0;border-color:var(--o-line2);background:#090807;border-radius:12px}
.o-code .code pre{font-family:var(--font-code);font-size:.8125rem;padding:18px 84px 18px 18px}
.o-code .copy{border-color:var(--o-line2);background:var(--o-surface)}
.o-code .copy:hover{color:var(--o-acc-ink)}
/* pied */
.o-foot{border-top:1px solid var(--o-line);padding:28px 0 40px;color:var(--o-ink2);font-size:.9375rem}
.o-foot-in{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}
.o-foot p{margin:0}
.o-foot a{text-underline-offset:3px}
.o-foot a:hover{color:var(--o-acc-ink)}
@media (max-width:820px){.o-points{grid-template-columns:1fr;gap:32px}.o-install-in{grid-template-columns:1fr;gap:28px}}
@media (max-width:600px){.o-hero{padding:44px 0 56px}.o-sec{padding:52px 0}.o-shot{margin-top:44px}.o-flow{font-size:.75rem}.o-btn{flex:1 1 100%}.o-wrap{padding-inline:20px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.o-foot span[aria-hidden]{margin-inline:8px}
.o-foot p+p{display:flex;align-items:center}
@media (max-width:600px){.o-flow{border-radius:14px;line-height:1.6}}
