kepr.css

58.9 KB · raw

1/* Kepr 3: Kepr 2's look (kepr.uk, gold theme), ported only as far as the pages that exist use it. */23:root {4	--bg: #090706;5	--bg-surface: #0e0c09;6	--bg-elevated: #1b1710;7	--border: #2a2018;8	--text: #c8b898;9	--text-secondary: #7a6a50;10	--text-muted: #7a6a50;11	--text-faint: #4a3a28;12	--text-heading: #e8d8b8;13	--accent: #c89a5a;14	--accent-bright: #d9b88c;15	--accent-dim: #85663c;16	--accent-flash: #5a88c8;17	--red-flash: #c8483a;18	--accent-tint-04: rgba(200, 154, 90, 0.04);19	--accent-tint-12: rgba(200, 154, 90, 0.12);20	--sage: #7a9a68;21	--sans: "Quicksand", system-ui, sans-serif;22	--mono: "Martian Mono", ui-monospace, monospace;23}2425* {26	box-sizing: border-box;27	scrollbar-width: thin;28	scrollbar-color: var(--border) transparent;29}3031html,32body {33	margin: 0;34	padding: 0;35	background: var(--bg);36	color: var(--text);37	font-family: var(--sans);38	font-size: 16px;39	line-height: 1.6;40	overflow-x: hidden;41}4243a {44	color: inherit;45	text-decoration: none;46}47a:hover {48	text-decoration: underline;49	text-decoration-color: var(--accent);50	text-decoration-thickness: 1px;51	text-underline-offset: 4px;52}5354/* ----- top bar ------------------------------------------------------------ */5556body > nav {57	display: flex;58	align-items: center;59	padding: 24px 48px;60	font-size: 0.6875rem;61	letter-spacing: 0.04em;62}63.wordmark {64	display: flex;65	color: var(--accent);66}67.wordmark:hover {68	text-decoration: none;69}70.wordmark-icon {71	display: block;72	width: 32px;73	height: 32px;74	color: var(--accent);75}76.wordmark-icon polygon {77	fill: none;78	stroke: currentColor;79	stroke-linejoin: round;80}81.tri-outer polygon {82	stroke-width: 2;83}84.tri-inner polygon {85	stroke-width: 1.5;86}87.tri-outer,88.tri-inner {89	transform-origin: 16px 16px;90}91/* The outer triangle stays gold; the inner one flashes red now and then. */92.tri-outer {93	animation: tri-ccw 12s linear infinite;94}95.tri-inner {96	animation:97		tri-cw 8s linear infinite,98		red-flash 11s ease-in-out infinite;99}100@keyframes tri-ccw {101	to {102		transform: rotate(-360deg);103	}104}105@keyframes tri-cw {106	to {107		transform: rotate(360deg);108	}109}110@keyframes red-flash {111	0%,112	90%,113	100% {114		color: var(--accent);115	}116	95% {117		color: var(--red-flash);118	}119}120.wordmark-by {121	margin-left: 10px;122	font-size: 0.625rem;123	color: var(--text-faint);124	letter-spacing: 0.03em;125}126.nav-links {127	margin-left: auto;128	display: inline-flex;129	gap: 28px;130	font-family: var(--mono);131}132.nav-links a {133	color: var(--text-secondary);134}135.nav-logout {136	margin: 0;137}138.nav-toggle {139	display: none;140}141.nav-logout button {142	border: 0;143	padding: 0;144	background: none;145	color: var(--text-secondary);146	font: inherit;147	letter-spacing: inherit;148	cursor: pointer;149}150.nav-logout button:hover {151	text-decoration: underline;152	text-decoration-color: var(--accent);153}154155main {156	max-width: 980px;157	margin: 0 auto;158	padding: 24px 48px 120px;159}160161footer {162	text-align: center;163	padding: 80px 24px 48px;164}165footer .credit {166	font-family: var(--mono);167	font-size: 0.6875rem;168	color: var(--text-muted);169}170171.mono {172	font-family: var(--mono);173	font-size: 0.8125rem;174	color: var(--text-secondary);175}176.muted {177	color: var(--text-muted);178}179180@keyframes fadeUp {181	from {182		opacity: 0;183		transform: translateY(6px);184	}185	to {186		opacity: 1;187		transform: translateY(0);188	}189}190@keyframes fadeIn {191	from {192		opacity: 0;193	}194}195196/* ----- repo header -------------------------------------------------------- */197198.repo-head {199	margin: 20px 0 24px;200}201.repo-name {202	font-family: "Comfortaa", var(--sans);203	font-weight: 700;204	font-size: 4rem;205	line-height: 1.05;206	margin: -0.1em 0 10px;207	color: var(--text);208	overflow-wrap: anywhere;209	animation: fadeUp 280ms ease both;210}211.repo-contributor {212	margin: 4px 0 0;213	font-size: 0.8125rem;214	animation: fadeUp 280ms 40ms ease both;215}216.repo-contributor a:hover {217	color: var(--accent);218}219.repo-desc,220.repo-homepage {221	margin: 0 0 10px;222	font-size: 1.0625rem;223	color: var(--text-secondary);224	line-height: 1.75;225	animation: fadeUp 280ms 30ms ease both;226}227.repo-desc p {228	margin: 12px 0 0;229}230.repo-desc a,231.repo-homepage a {232	color: var(--accent);233}234.repo-desc code {235	font-family: var(--mono);236	font-size: 0.85em;237	color: var(--accent);238}239.lang-badges {240	display: flex;241	flex-wrap: wrap;242	gap: 6px;243	margin: 8px 0 6px;244}245.lang-badge {246	font-family: var(--mono);247	font-size: 0.6875rem;248	color: var(--accent-dim);249	background: var(--bg-surface);250	border: 1px solid var(--border);251	border-radius: 3px;252	padding: 1px 7px;253	letter-spacing: 0.02em;254}255.repo-meta {256	margin: 0;257	font-size: 0.875rem;258	color: var(--text-muted);259	line-height: 1.7;260	animation: fadeUp 280ms 60ms ease both;261}262.repo-tabbar {263	display: flex;264	align-items: center;265	justify-content: space-between;266	flex-wrap: wrap;267	gap: 14px 20px;268	margin-top: 22px;269}270.repo-tabs {271	display: flex;272	gap: 24px;273	flex-wrap: wrap;274	font-family: var(--mono);275	animation: fadeUp 280ms 90ms ease both;276}277.repo-tab {278	font-size: 0.6875rem;279	color: var(--text-muted);280	padding: 0 0 11px;281	border-bottom: 1px solid transparent;282	transition:283		color 140ms,284		border-color 140ms;285}286.repo-tab:hover {287	color: var(--accent);288	text-decoration: none;289}290.repo-tab.active {291	color: var(--accent);292	border-bottom-color: var(--accent);293}294.repo-panel {295	padding: 10px 0 16px;296	animation: fadeIn 220ms ease both;297}298.repo-panel[hidden] {299	display: none;300}301/* Inline, archives and builds show about five entries and scroll; their own pages show all. */302.repo-panel .repo-section:has(> .archive-row, > .release-latest) {303	max-height: 420px;304	overflow-y: auto;305	scrollbar-width: thin;306	scrollbar-color: var(--border) transparent;307}308.repo-steal-btn {309	display: block;310	width: fit-content;311	max-width: 100%;312	font-family: var(--mono);313	font-size: 0.75rem;314	color: var(--text-muted);315	background: var(--bg-surface);316	border: 1px solid var(--border);317	border-radius: 3px;318	padding: 5px 11px;319	cursor: pointer;320	letter-spacing: 0.03em;321	white-space: nowrap;322	overflow: hidden;323	text-overflow: ellipsis;324	transition:325		color 120ms,326		border-color 120ms;327}328.repo-steal-btn:hover,329.repo-steal-btn.copied {330	color: var(--accent);331	border-color: var(--accent-dim);332}333.install-lines {334	display: flex;335	flex-direction: column;336	align-items: flex-end;337	gap: 6px;338	max-width: 100%;339	margin-left: auto;340	animation: fadeUp 280ms 120ms ease both;341}342.install-line {343	display: flex;344	align-items: center;345	gap: 12px;346	max-width: 100%;347	font-family: var(--mono);348	font-size: 0.75rem;349	color: var(--text-muted);350	background: var(--bg-surface);351	border: 1px solid var(--border);352	border-radius: 3px;353	padding: 5px 11px;354}355.install-line code {356	white-space: pre;357	overflow-x: auto;358	font-family: inherit;359}360.copy-btn {361	background: none;362	border: 0;363	padding: 0;364	cursor: pointer;365	font: inherit;366	font-size: 0.625rem;367	color: var(--text-faint);368	letter-spacing: 0.04em;369}370.copy-btn:hover,371.copy-btn.copied {372	color: var(--accent);373}374375/* ----- sections ----------------------------------------------------------- */376377.repo-section {378	margin: 36px 0 0;379	animation: fadeIn 320ms 80ms ease both;380}381.repo-section-toggle > summary,382.repo-details-toggle > summary {383	list-style: none;384	cursor: pointer;385	user-select: none;386}387.repo-section-toggle > summary::-webkit-details-marker,388.repo-details-toggle > summary::-webkit-details-marker {389	display: none;390}391.section-head {392	display: flex;393	align-items: baseline;394	gap: 12px;395	padding-bottom: 8px;396	border-bottom: 1px solid var(--border);397	margin-bottom: 4px;398}399.section-head::after,400.repo-details-head::after {401	content: "▸";402	font-size: 0.5625rem;403	opacity: 0.4;404	transition: transform 120ms;405}406.section-head::after {407	margin-left: auto;408}409details[open] > .section-head::after,410details[open] > .repo-details-head::after {411	transform: rotate(90deg);412}413.section-label {414	font-size: 0.6875rem;415	letter-spacing: 0.12em;416	color: var(--text-secondary);417	text-transform: uppercase;418}419.section-count {420	font-family: var(--mono);421	font-size: 0.6875rem;422	color: var(--accent);423}424425/* ----- timeline ----------------------------------------------------------- */426427.timeline {428	display: block;429	margin: 18px 0 4px;430	overflow: visible;431}432.timeline-line {433	stroke: var(--text-faint);434	stroke-width: 1;435	stroke-dasharray: 4 4;436}437.timeline .dot {438	fill: var(--accent);439}440.timeline .d0 {441	fill: var(--accent-dim);442	fill-opacity: 0.45;443}444.timeline .d1 {445	fill-opacity: 0.55;446}447.timeline .d2 {448	fill-opacity: 0.8;449}450.timeline .d3 {451	fill: var(--accent-bright);452	fill-opacity: 1;453}454.timeline-canvas {455	display: block;456	margin: 18px 0 4px;457	cursor: grab;458	touch-action: pan-y;459}460.timeline-tip {461	position: fixed;462	z-index: 200;463	max-width: 340px;464	padding: 0.45rem 0.7rem;465	background: #0f0c08;466	border: 1px solid var(--border);467	border-radius: 4px;468	pointer-events: none;469	line-height: 1.5;470}471.timeline-tip .tip-id {472	font-family: var(--mono);473	font-size: 12px;474	color: var(--accent);475}476.timeline-tip .tip-msg {477	margin-top: 3px;478	font-style: italic;479	font-size: 15px;480	color: var(--text-heading);481}482.timeline-tip .tip-meta {483	margin-top: 4px;484	font-family: var(--mono);485	font-size: 10px;486	color: var(--text-muted);487}488489/* ----- history ------------------------------------------------------------ */490491.history-row {492	position: relative;493	display: grid;494	grid-template-columns: 110px 1fr auto;495	align-items: baseline;496	gap: 0 10px;497	padding: 9px 8px;498	border-bottom: 1px solid var(--border);499	transition: background 100ms;500}501.history-row::before {502	content: "";503	position: absolute;504	left: 0;505	top: 0;506	bottom: 0;507	width: 2px;508	background: var(--accent);509	transform: scaleY(0);510	transition: transform 120ms ease;511}512.history-row:hover {513	background: var(--accent-tint-04);514	text-decoration: none;515}516.history-row:hover::before {517	transform: scaleY(1);518}519.history-id {520	font-family: var(--mono);521	font-size: 0.75rem;522	color: var(--text-secondary);523}524.history-msg {525	min-width: 0;526	line-height: 1.7;527	overflow: hidden;528	text-overflow: ellipsis;529	white-space: nowrap;530	transition: color 100ms;531}532.history-row:hover .history-msg {533	color: var(--accent);534}535.history-when {536	font-family: var(--mono);537	font-size: 0.6875rem;538	color: var(--text-muted);539	white-space: nowrap;540}541/* Kepr 2's history: four rows at a time, the rest a scroll away. */542.save-list {543	max-height: 180px;544	overflow-y: auto;545	scrollbar-width: thin;546	scrollbar-color: var(--border) transparent;547}548.pager {549	display: flex;550	justify-content: space-between;551	margin: 14px 0 0;552	font-size: 0.6875rem;553}554.pager a:last-child {555	margin-left: auto;556}557.pager a:hover {558	color: var(--accent);559}560561/* ----- atlas -------------------------------------------------------------- */562563.atlas-bar {564	display: flex;565	align-items: center;566	flex-wrap: wrap;567	gap: 8px 14px;568	margin: 10px 0 8px;569	font-size: 0.625rem;570}571.atlas-picker {572	position: relative;573}574/* Each section's fade-in makes it a stacking context, so the picker's popover would sit under the575   sections after it; the Atlas's section is lifted above them. */576#atlas {577	position: relative;578	z-index: 2;579}580.atlas-picker [hidden] {581	display: none;582}583.atlas-ref-tab {584	list-style: none;585	cursor: pointer;586	padding: 4px 8px;587	background: var(--bg);588	border: 1px solid rgba(200, 154, 90, 0.45);589	border-radius: 2px;590	font-size: 0.625rem;591	color: var(--accent);592}593.atlas-ref-tab::-webkit-details-marker {594	display: none;595}596.atlas-ref-tab:hover {597	color: var(--accent-dim);598}599.atlas-picker-popover {600	position: absolute;601	top: calc(100% + 6px);602	left: 0;603	z-index: 50;604	display: flex;605	flex-direction: column;606	width: min(420px, 90vw);607	max-height: 480px;608	background: var(--bg);609	border: 1px solid var(--text-faint);610	box-shadow: 0 18px 48px rgba(0, 0, 0, 0.48);611}612.atlas-picker-filter {613	padding: 8px 10px;614	background: var(--bg);615	border: 0;616	border-bottom: 1px solid var(--bg-elevated);617	outline: none;618	font-size: 0.6875rem;619	color: var(--text-heading);620}621.atlas-picker-filter::placeholder {622	color: var(--text-faint);623}624.atlas-picker-list {625	flex: 1 1 auto;626	min-height: 0;627	overflow: auto;628	scrollbar-width: thin;629	scrollbar-color: var(--border) transparent;630}631.atlas-picker-row {632	display: grid;633	grid-template-columns: 80px 1fr auto;634	align-items: center;635	gap: 8px;636	padding: 6px 10px;637	border-bottom: 1px solid rgba(42, 32, 24, 0.4);638	color: var(--text-muted);639}640.atlas-picker-row:hover {641	background: rgba(200, 154, 90, 0.06);642	text-decoration: none;643}644.atlas-picker-row.active {645	background: rgba(200, 154, 90, 0.1);646}647.atlas-picker-row:hover *,648.atlas-picker-row.active * {649	color: var(--accent);650}651.atlas-picker-id,652.atlas-picker-age {653	font-family: var(--mono);654	font-size: 0.5625rem;655	color: var(--text-faint);656	white-space: nowrap;657	overflow: hidden;658	text-overflow: ellipsis;659}660.atlas-picker-msg {661	font-size: 0.6875rem;662	white-space: nowrap;663	overflow: hidden;664	text-overflow: ellipsis;665}666.atlas-head-link {667	color: var(--accent);668}669.atlas-fold-btn {670	margin-left: auto;671}672.atlas-fold-btn,673.atlas-search-btn {674	padding: 4px 8px;675	background: transparent;676	border: 1px solid var(--border);677	border-radius: 2px;678	font: inherit;679	font-size: 0.625rem;680	color: var(--text-faint);681	cursor: pointer;682}683.atlas-fold-btn:hover,684.atlas-search-btn:hover {685	color: var(--accent);686	border-color: var(--accent-dim);687}688.atlas-fold-btn[hidden],689.atlas-search-btn[hidden],690.atlas-filter[hidden] {691	display: none;692}693.atlas-filter {694	width: 220px;695	max-width: 100%;696	padding: 5px 10px;697	background: transparent;698	border: 1px solid var(--border);699	border-radius: 3px;700	color: var(--text);701	font-size: 0.6875rem;702}703.atlas-filter:focus {704	outline: none;705	border-color: var(--accent-dim);706}707.atlas-filter::placeholder {708	color: var(--text-faint);709}710/* kepr.js fixes the height at the closed tree's, at most Kepr 2's 520px, and the tree and panel711   scroll inside it; without it, the whole box scrolls. */712.atlas {713	display: grid;714	grid-template-columns: minmax(0, 1fr);715	grid-template-rows: minmax(0, 1fr);716	gap: 0 20px;717	max-height: 520px;718	overflow-y: auto;719	border-top: 1px solid var(--bg-elevated);720	border-bottom: 1px solid var(--bg-elevated);721}722.atlas-tree,723.atlas-panel {724	min-height: 0;725	overflow-y: auto;726	scrollbar-width: thin;727	scrollbar-color: var(--border) transparent;728}729.atlas:has(> .atlas-panel:not([hidden])) {730	grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);731}732.atlas [hidden] {733	display: none;734}735.atlas-folder > summary {736	list-style: none;737}738.atlas-folder > summary::-webkit-details-marker {739	display: none;740}741.atlas-children {742	padding-left: 14px;743	border-left: 1px solid var(--border);744	margin-left: 6px;745}746.atlas-row {747	position: relative;748	display: grid;749	grid-template-columns: minmax(90px, auto) 1fr auto;750	align-items: baseline;751	gap: 0 12px;752	padding: 6px 8px;753	border-bottom: 1px solid rgba(42, 32, 24, 0.62);754	cursor: pointer;755	transition: background 100ms;756}757.atlas-row:hover,758.atlas-row:focus-visible,759.atlas-row.selected {760	outline: none;761	background: var(--accent-tint-04);762	text-decoration: none;763}764.atlas-row.selected {765	box-shadow: inset 2px 0 0 var(--accent);766}767.atlas-name {768	color: var(--text-heading);769	font-size: 0.875rem;770	white-space: nowrap;771}772.atlas-folder > summary .atlas-name {773	color: var(--accent);774}775.atlas-desc {776	min-width: 0;777	color: var(--text-muted);778	font-size: 0.8125rem;779	overflow: hidden;780	text-overflow: ellipsis;781	white-space: nowrap;782}783.atlas-meta {784	font-size: 0.625rem;785	color: var(--text-faint);786	white-space: nowrap;787}788.atlas-panel {789	padding: 12px 0 12px 16px;790	border-left: 1px solid var(--border);791}792.atlas-hint {793	margin: 0;794	font-size: 0.625rem;795	color: var(--text-faint);796}797.atlas-info-name {798	margin: 0;799	font-weight: 400;800	font-size: 1.375rem;801	color: var(--text-heading);802	overflow-wrap: anywhere;803}804.atlas-info-path {805	margin: 0 0 12px;806	font-size: 0.625rem;807	color: var(--text-faint);808	overflow-wrap: anywhere;809}810.atlas-facts {811	display: grid;812	grid-template-columns: auto 1fr;813	gap: 3px 12px;814	margin: 0 0 12px;815	font-size: 0.625rem;816}817.atlas-facts dt {818	color: var(--text-faint);819}820.atlas-facts dd {821	margin: 0;822	color: var(--text);823}824.atlas-facts a {825	color: var(--accent);826}827.atlas-info-desc {828	font-size: 0.8125rem;829	color: var(--text-muted);830}831/* ----- README and rendered Markdown --------------------------------------- */832833.repo-details {834	margin: 36px 0 0;835	animation: fadeIn 320ms 80ms ease both;836}837.repo-details-toggle {838	border-bottom: 1px solid var(--border);839	padding-bottom: 24px;840}841.repo-details-head {842	display: flex;843	align-items: center;844	gap: 6px;845	padding: 8px 0;846	font-family: var(--mono);847	font-size: 0.6875rem;848	letter-spacing: 0.12em;849	color: var(--text-secondary);850	text-transform: uppercase;851}852.markdown {853	font-size: 1.05rem;854	line-height: 1.7;855	overflow-wrap: break-word;856}857.markdown h1,858.markdown h2,859.markdown h3,860.markdown h4 {861	font-weight: 400;862	margin: 1.4em 0 0.4em;863	color: var(--text-heading);864}865.markdown h1 {866	font-size: 1.5rem;867}868.markdown h2 {869	font-size: 1.3rem;870}871.markdown h3 {872	font-size: 1.15rem;873}874.markdown p {875	margin: 0.8em 0;876}877.markdown ul,878.markdown ol {879	margin: 0.8em 0 0.8em 1.5em;880	padding: 0;881}882.markdown a {883	color: var(--accent);884}885.markdown code {886	font-family: var(--mono);887	font-size: 0.82em;888	color: var(--accent);889	background: var(--bg-surface);890	padding: 0.15em 0.35em;891	border-radius: 3px;892}893.markdown pre {894	background: var(--bg-surface);895	border-radius: 4px;896	padding: 1em 1.2em;897	overflow-x: auto;898	margin: 1em 0;899}900.markdown pre code {901	background: none;902	padding: 0;903	color: var(--text);904	font-size: 0.85em;905}906.markdown blockquote {907	border-left: 3px solid var(--border);908	margin: 1em 0;909	padding: 0.1em 1em;910	color: var(--text-secondary);911}912.markdown hr {913	border: none;914	border-top: 1px solid var(--border);915	margin: 1.5em 0;916}917.markdown img {918	max-width: 100%;919}920.markdown table {921	border-collapse: collapse;922	display: block;923	overflow-x: auto;924}925.markdown th,926.markdown td {927	border: 1px solid var(--border);928	padding: 4px 10px;929}930931/* ----- file viewer -------------------------------------------------------- */932933.breadcrumb {934	margin: 0 0 4px;935	font-size: 0.75rem;936	overflow-wrap: anywhere;937}938.breadcrumb a:hover {939	color: var(--accent);940}941.file-page-title {942	font-size: 1.75rem;943	font-weight: 400;944	margin: 4px 0 12px;945	overflow-wrap: anywhere;946}947.file-meta,948.file-toggle {949	margin: 0 0 12px;950	font-size: 0.6875rem;951}952.file-meta a,953.file-toggle a.active {954	color: var(--accent);955}956.file-image img {957	max-width: 100%;958	background: var(--bg-surface);959	border: 1px solid var(--border);960}961.file-view {962	border: 1px solid var(--border);963	background: var(--bg-surface);964	overflow-x: auto;965}966.code {967	margin: 0;968	padding: 16px 0;969	font-family: var(--mono);970	font-size: 0.8125rem;971	line-height: 1.65;972	tab-size: 4;973}974/* A grid, so tab stops count from the start of the code rather than the line number. */975.code .line {976	display: grid;977	grid-template-columns: 6em 1fr;978	padding-right: 24px;979	scroll-margin-top: 40vh;980}981.code .line:target,982.code .line.hl {983	background: var(--accent-tint-12);984}985.code .lc {986	white-space: pre;987}988.code .ln {989	padding-right: 1.5em;990	text-align: right;991	color: var(--text-faint);992	user-select: none;993}994.code .ln:hover {995	color: var(--accent);996	text-decoration: none;997}998999/* Shiki's CSS-variables theme roles, in Kepr 2's highlight.js colours. */1000.tk-comment {1001	color: var(--text-muted);1002	font-style: italic;1003}1004.tk-keyword {1005	color: var(--accent);1006}1007.tk-string,1008.tk-string-expression {1009	color: var(--sage);1010}1011.tk-constant {1012	color: var(--accent-bright);1013}1014.tk-function {1015	color: var(--accent);1016}1017.tk-parameter {1018	color: var(--text);1019}1020.tk-punctuation {1021	color: var(--text-secondary);1022}1023.tk-link {1024	color: var(--accent);1025	text-decoration: underline;1026}1027.tk-inserted {1028	color: var(--sage);1029}1030.tk-deleted {1031	color: #c45c5c;1032}1033.tk-i {1034	font-style: italic;1035}10361037/* ----- save page ---------------------------------------------------------- */10381039.save-id {1040	margin: 12px 0 0;1041	font-size: 0.75rem;1042	color: var(--text-secondary);1043}1044.save-flag {1045	margin: 12px 0 0;1046	padding: 8px 12px;1047	border: 1px solid #6a3a2a;1048	border-left: 2px solid #c45c5c;1049	background: rgba(196, 92, 92, 0.08);1050	color: var(--text-heading);1051}1052.save-flag-label {1053	margin-right: 8px;1054	font-size: 0.625rem;1055	letter-spacing: 0.12em;1056	text-transform: uppercase;1057	color: #c45c5c;1058}1059.save-message-head {1060	font-size: 2.25rem;1061	font-weight: 400;1062	line-height: 1.3;1063	margin: 12px 0 8px;1064	color: var(--text-heading);1065	overflow-wrap: anywhere;1066	animation: fadeUp 280ms ease both;1067}1068.save-message-body {1069	margin: 0 0 12px;1070	white-space: pre-wrap;1071	color: var(--text-secondary);1072}1073.save-facts {1074	display: grid;1075	grid-template-columns: max-content 1fr;1076	gap: 2px 16px;1077	margin: 16px 0;1078	font-size: 0.75rem;1079}1080.save-facts dt {1081	color: var(--text-faint);1082}1083.save-facts dd {1084	margin: 0;1085	overflow-wrap: anywhere;1086}1087.save-facts a,1088.save-links a,1089.diff-view a {1090	color: var(--accent);1091}1092.save-links {1093	display: flex;1094	flex-wrap: wrap;1095	gap: 8px 20px;1096	margin: 0;1097	font-size: 0.75rem;1098}1099.save-empty {1100	font-size: 0.75rem;1101}1102.change-row,1103.diff-head {1104	display: grid;1105	grid-template-columns: 1fr auto;1106	gap: 12px;1107	padding: 7px 8px;1108	border-bottom: 1px solid var(--border);1109	font-family: var(--mono);1110	font-size: 0.8125rem;1111}1112.change-row:hover {1113	background: var(--accent-tint-04);1114	text-decoration: none;1115}1116.change-path {1117	min-width: 0;1118	overflow-wrap: anywhere;1119}1120.change-added .change-path {1121	color: var(--sage);1122}1123.change-removed .change-path {1124	color: var(--text-muted);1125	text-decoration: line-through;1126}1127.change-modified .change-path {1128	color: var(--accent-bright);1129}1130.change-stat {1131	font-size: 0.75rem;1132	white-space: nowrap;1133}1134.diff-add {1135	color: var(--sage);1136}1137.diff-del {1138	color: #c45c5c;1139}1140.diff-note {1141	color: var(--text-faint);1142	font-size: 0.6875rem;1143}1144.diff-file {1145	margin: 0 0 20px;1146}1147.diff-head {1148	cursor: pointer;1149	list-style: none;1150	border: 1px solid var(--border);1151	background: var(--bg-surface);1152}1153.diff-head::-webkit-details-marker {1154	display: none;1155}1156.diff-file > .file-view {1157	border-top: 0;1158}1159.diff-file > .diff-note,1160.diff-view {1161	margin: 8px 0 0;1162	font-size: 0.6875rem;1163}1164.code.diff {1165	padding: 4px 0;1166}1167.diff .dl {1168	display: grid;1169	grid-template-columns: 3.5em 3.5em 1.5em 1fr;1170	padding-right: 24px;1171}1172.diff .dh {1173	display: block;1174	padding: 4px 1em;1175	color: var(--text-faint);1176	background: var(--bg-elevated);1177}1178.diff .ln {1179	padding-right: 0.75em;1180	text-align: right;1181	color: var(--text-faint);1182	user-select: none;1183}1184.diff .ds {1185	text-align: center;1186	color: var(--text-faint);1187	user-select: none;1188}1189.diff .dl-add {1190	background: rgba(122, 154, 104, 0.1);1191}1192.diff .dl-add .ds {1193	color: var(--sage);1194}1195.diff .dl-del {1196	background: rgba(196, 92, 92, 0.08);1197}1198.diff .dl-del .ds {1199	color: #c45c5c;1200}12011202/* ----- archives ----------------------------------------------------------- */12031204.archive-row {1205	padding: 12px 8px;1206	border-bottom: 1px solid var(--border);1207}1208.archive-save {1209	display: flex;1210	flex-wrap: wrap;1211	align-items: baseline;1212	gap: 0 10px;1213	margin: 0;1214}1215.archive-save .history-id {1216	flex: 0 0 110px;1217}1218.archive-msg {1219	flex: 1;1220}1221.archive-head {1222	font-size: 0.625rem;1223	letter-spacing: 0.08em;1224	color: var(--accent);1225	border: 1px solid var(--accent-dim);1226	border-radius: 2px;1227	padding: 0 6px;1228}1229.archive-save .history-id:hover {1230	color: var(--accent);1231}1232.archive-links {1233	display: flex;1234	flex-wrap: wrap;1235	align-items: center;1236	gap: 12px;1237	margin: 6px 0;1238	font-size: 0.75rem;1239}1240.archive-links a {1241	color: var(--accent);1242}1243.archive-row .install-line {1244	justify-content: space-between;1245}1246.archive-row--head {1247	background: var(--accent-tint-04);1248	border-top: 1px solid var(--accent-dim);1249}12501251/* ----- phone -------------------------------------------------------------- */12521253@media (max-width: 768px) {1254	body > nav {1255		padding: 20px 16px;1256	}1257	/* Without the menu script the links wrap in the bar instead of running off it. */1258	.nav-links {1259		flex-wrap: wrap;1260		justify-content: flex-end;1261		gap: 8px 18px;1262		min-width: 0;1263	}1264	.nav--menu {1265		position: relative;1266	}1267	.nav--menu .nav-toggle {1268		display: flex;1269		flex-direction: column;1270		justify-content: center;1271		gap: 4px;1272		width: 36px;1273		height: 36px;1274		margin: -8px -8px -8px auto;1275		padding: 8px;1276		border: 0;1277		background: none;1278		color: var(--text-secondary);1279		cursor: pointer;1280	}1281	.nav-toggle span {1282		height: 1.5px;1283		background: currentColor;1284		transition:1285			transform 0.2s ease,1286			opacity 0.2s ease;1287	}1288	.nav--open .nav-toggle {1289		color: var(--accent);1290	}1291	.nav--open .nav-toggle span:nth-child(1) {1292		transform: translateY(5.5px) rotate(45deg);1293	}1294	.nav--open .nav-toggle span:nth-child(2) {1295		opacity: 0;1296	}1297	.nav--open .nav-toggle span:nth-child(3) {1298		transform: translateY(-5.5px) rotate(-45deg);1299	}1300	.nav--menu .nav-links {1301		display: none;1302	}1303	.nav--menu.nav--open .nav-links {1304		position: absolute;1305		top: 100%;1306		left: 0;1307		right: 0;1308		z-index: 10;1309		display: flex;1310		flex-direction: column;1311		gap: 0;1312		padding: 0 16px 8px;1313		background: var(--bg);1314		border-bottom: 1px solid var(--border);1315		font-size: 0.8125rem;1316	}1317	.nav--open .nav-links > * {1318		padding: 14px 0;1319		border-top: 1px solid var(--border);1320	}1321	main {1322		padding: 16px 16px 80px;1323	}1324	.repo-name {1325		font-size: 2.75rem;1326	}1327	.install-lines {1328		align-items: stretch;1329		margin-left: 0;1330		width: 100%;1331	}1332	.history-row {1333		grid-template-columns: 1fr auto;1334	}1335	.history-id {1336		grid-column: 1 / -1;1337	}1338	.atlas-row {1339		grid-template-columns: 1fr auto;1340	}1341	.atlas-desc {1342		grid-column: 1 / -1;1343		grid-row: 2;1344	}1345	.atlas:has(> .atlas-panel:not([hidden])) {1346		grid-template-columns: minmax(0, 1fr);1347	}1348	.atlas-panel {1349		display: none;1350	}1351	.code .line {1352		grid-template-columns: 4.5em 1fr;1353	}1354	.save-message-head {1355		font-size: 1.625rem;1356	}1357	.archive-msg {1358		flex-basis: 100%;1359		order: 1;1360	}1361	.diff .dl {1362		grid-template-columns: 2.75em 2.75em 1.25em 1fr;1363	}1364	.code .ln {1365		padding-right: 1em;1366	}1367}13681369/* ----- builds ------------------------------------------------------------- */13701371.release {1372	padding: 20px 8px 24px;1373	border-bottom: 1px solid var(--border);1374}1375.release-head {1376	display: flex;1377	flex-wrap: wrap;1378	align-items: baseline;1379	gap: 0 14px;1380	margin: 0 0 8px;1381}1382.release-version {1383	font-family: "Martian Mono", monospace;1384	font-size: 1rem;1385	color: var(--accent);1386}1387.release-latest .release-version {1388	font-size: clamp(2rem, 5vw, 3.5rem);1389	letter-spacing: -0.06em;1390}1391.release-latest > p {1392	font-size: 0.6875rem;1393	margin: 16px 8px 0;1394}1395.release-older > summary {1396	padding: 16px 8px;1397	font-size: 0.75rem;1398	color: var(--text-muted);1399	cursor: pointer;1400	border-bottom: 1px solid var(--border);1401}1402.release-head .history-id:hover {1403	color: var(--accent);1404}1405.release-notes {1406	margin-bottom: 14px;1407}1408.release-file {1409	padding: 10px 0;1410	border-top: 1px solid var(--border);1411}1412.release-file-head {1413	display: flex;1414	flex-wrap: wrap;1415	align-items: baseline;1416	gap: 4px 14px;1417	margin: 0;1418}1419.release-platform {1420	flex: 0 0 180px;1421}1422.release-download {1423	flex: 1;1424	font-size: 0.75rem;1425	color: var(--accent);1426	overflow-wrap: anywhere;1427}1428.release-meta,1429.release-sha {1430	font-size: 0.6875rem;1431	color: var(--text-muted);1432}1433.release-sha {1434	margin: 4px 0 0;1435	overflow-wrap: anywhere;1436}1437.release-hint {1438	margin: 4px 0 0;1439	font-size: 0.8125rem;1440}14411442/* ----- issues ------------------------------------------------------------- */14431444.issues-bar {1445	display: flex;1446	flex-wrap: wrap;1447	align-items: center;1448	gap: 8px 12px;1449	font-size: 0.75rem;1450	padding-bottom: 14px;1451	border-bottom: 1px solid var(--bg-elevated);1452}1453.issues-tab {1454	color: var(--text-faint);1455	border: 1px solid transparent;1456	border-radius: 999px;1457	padding: 4px 10px;1458}1459button.issues-tab {1460	font: inherit;1461	background: none;1462	cursor: pointer;1463}1464.issues-tab.active {1465	color: var(--accent);1466	border-color: var(--accent-tint-12);1467}1468.issues-new {1469	margin-left: auto;1470	color: var(--text-muted);1471}1472.issue-row {1473	display: grid;1474	grid-template-columns: auto minmax(0, 1fr) auto;1475	align-items: baseline;1476	gap: 2px 10px;1477	padding: 16px 8px;1478	border-bottom: 1px solid var(--border);1479}1480.issue-row:hover {1481	text-decoration: none;1482	background: var(--accent-tint-04);1483}1484.issue-title {1485	grid-column: 2 / -1;1486	overflow-wrap: anywhere;1487	color: var(--text-heading);1488}1489.issues-new:hover,1490.issue-row:hover .issue-title {1491	color: var(--accent);1492}1493.issue-meta,1494.issue-post-head {1495	font-size: 0.6875rem;1496	color: var(--text-muted);1497}1498.issue-symbol--open {1499	color: var(--accent);1500}1501.issue-symbol--closed {1502	color: var(--text-faint);1503}1504.issue-row .issue-meta {1505	grid-column: 2;1506}1507.issue-reporter {1508	font-size: 0.6875rem;1509	color: var(--text-muted);1510	overflow-wrap: anywhere;1511}1512.issues-filter {1513	display: flex;1514	flex-wrap: wrap;1515	gap: 8px;1516	margin-bottom: 16px;1517}1518.issue-post {1519	margin: 18px 0;1520	padding: 14px 18px;1521	border: 1px solid var(--border);1522	border-radius: 6px;1523	background: var(--bg-surface);1524}1525.issue-post--operator {1526	border-color: var(--accent-dim);1527}1528.issue-post-head {1529	display: flex;1530	flex-wrap: wrap;1531	gap: 4px 12px;1532	margin: 0 0 8px;1533}1534.issue-author {1535	color: var(--text);1536}1537.issue-badge {1538	color: var(--accent);1539	text-transform: uppercase;1540	letter-spacing: 0.08em;1541}1542.issue-text {1543	white-space: pre-wrap;1544	overflow-wrap: anywhere;1545}1546.issue-link {1547	font-size: 0.75rem;1548	overflow-wrap: anywhere;1549	color: var(--accent);1550}1551.issues-form {1552	display: flex;1553	flex-direction: column;1554	gap: 6px;1555	max-width: 640px;1556	margin-top: 18px;1557}1558.issues-label {1559	font-family: var(--mono);1560	font-size: 0.6875rem;1561	margin-top: 6px;1562	opacity: 0.8;1563}1564.issues-input,1565.issues-textarea {1566	font-family: var(--mono);1567	font-size: 0.75rem;1568	width: 100%;1569	padding: 6px 8px;1570	color: var(--text);1571	background: var(--bg);1572	border: 1px solid var(--border);1573	border-radius: 4px;1574	resize: vertical;1575}1576.issues-input:focus,1577.issues-textarea:focus {1578	outline: none;1579	border-color: var(--accent);1580}1581.issues-filter .issues-input {1582	width: auto;1583	min-width: 0;1584	flex: 1 1 140px;1585}1586.issues-submit {1587	align-self: flex-start;1588	margin-top: 10px;1589	padding: 6px 14px;1590	font-family: var(--mono);1591	font-size: 0.75rem;1592	color: var(--bg);1593	background: var(--accent);1594	border: none;1595	border-radius: 4px;1596	cursor: pointer;1597}1598.issues-submit:hover {1599	opacity: 0.85;1600}1601.issues-submit:disabled {1602	opacity: 0.4;1603	cursor: not-allowed;1604}1605.issues-actions {1606	display: flex;1607	align-items: center;1608	gap: 16px;1609	margin: 10px 0 0;1610}1611.issues-actions .issues-submit {1612	align-self: auto;1613	margin-top: 0;1614}1615.issues-cancel {1616	font-size: 0.75rem;1617	color: var(--text-muted);1618}1619.issues-cancel:hover {1620	color: var(--accent);1621}1622button.issues-cancel {1623	padding: 0;1624	border: 0;1625	background: none;1626	cursor: pointer;1627}1628.issues-error {1629	font-size: 0.75rem;1630	color: #c86a5a;1631}1632/* The honeypot: off-screen for people, still in the form for bots. */1633.issues-hp {1634	position: absolute;1635	left: -9999px;1636	height: 0;1637	overflow: hidden;1638	opacity: 0;1639}16401641/* ----- front page --------------------------------------------------------- */16421643/* Kepr 2's hero band, full width, reaching up behind the nav (32px mark + 48px padding). */1644body > nav {1645	position: relative;1646	z-index: 1;1647}1648.ticker {1649	position: relative;1650	height: 304px;1651	margin: -104px calc(50% - 50vw) 0;1652	padding: 96px 0 20px;1653	display: flex;1654	flex-direction: column;1655	justify-content: space-evenly;1656	overflow: hidden;1657	pointer-events: none;1658	user-select: none;1659	border-bottom: 1px solid var(--border);1660	font-family: var(--mono);1661	color: var(--text-secondary);1662	mask-image: linear-gradient(1663		to right,1664		transparent,1665		#000 48px,1666		#000 calc(100% - 48px),1667		transparent1668	);1669}1670.ticker-row {1671	white-space: nowrap;1672	line-height: 1.2;1673	opacity: var(--o);1674	animation: ticker-glow 83s var(--glow-at) ease-in-out infinite;1675}1676/* The drift's duration is set by kepr.js from the track's width, so every row keeps Kepr 2's1677   pace in px/s (--speed) however long its messages are; this is the no-JavaScript fallback. */1678.ticker-track {1679	display: inline-flex;1680	gap: 64px;1681	padding-right: 64px;1682	animation: ticker-drift 1500s linear infinite;1683}1684/* Kepr 2's depth bands: nearer rows are larger, brighter and faster. Each row takes its turn at1685   the glow, a few seconds out of every 83, spaced so one or two glow at a time. */1686.ticker-row:nth-child(1) {1687	font-size: 9px;1688	--o: 0.05;1689	--speed: 12;1690	--glow-at: -5s;1691}1692.ticker-row:nth-child(2) {1693	font-size: 18px;1694	--o: 0.1;1695	--speed: 23;1696	--glow-at: -41s;1697}1698.ticker-row:nth-child(3) {1699	font-size: 7px;1700	--o: 0.04;1701	--speed: 9;1702	--glow-at: -77s;1703}1704.ticker-row:nth-child(4) {1705	font-size: 13px;1706	--o: 0.07;1707	--speed: 17;1708	--glow-at: -29s;1709}1710.ticker-row:nth-child(5) {1711	font-size: 22px;1712	--o: 0.12;1713	--speed: 29;1714	--glow-at: -65s;1715}1716.ticker-row:nth-child(6) {1717	font-size: 8px;1718	--o: 0.045;1719	--speed: 10;1720	--glow-at: -17s;1721}1722.ticker-row:nth-child(7) {1723	font-size: 15px;1724	--o: 0.08;1725	--speed: 20;1726	--glow-at: -53s;1727}1728@keyframes ticker-drift {1729	to {1730		transform: translateX(-50%);1731	}1732}1733@keyframes ticker-glow {1734	0%,1735	10%,1736	100% {1737		color: var(--text-secondary);1738		opacity: var(--o);1739		text-shadow: none;1740	}1741	5% {1742		color: var(--accent);1743		opacity: calc(var(--o) * 3.5);1744		text-shadow: 0 0 3px var(--accent-tint-12);1745	}1746}17471748.headline {1749	display: grid;1750	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);1751	gap: 48px;1752	align-items: center;1753	padding: 56px 0 40px;1754}1755.headline h1 {1756	font-size: clamp(2rem, 5vw, 3.5rem);1757	font-weight: 400;1758	line-height: 1.15;1759	color: var(--text-heading);1760	margin: 0 0 20px;1761	animation: fadeUp 480ms ease both;1762}1763.headline-tagline {1764	margin: 0;1765	font-size: 0.9375rem;1766	line-height: 1.7;1767	color: var(--text-secondary);1768	animation: fadeUp 480ms 80ms ease both;1769}1770.headline-cloud {1771	display: flex;1772	flex-wrap: wrap;1773	justify-content: center;1774	align-items: center;1775	gap: 10px 22px;1776	padding: 20px;1777	animation: fadeIn 600ms 160ms ease both;1778}1779.tc-tag {1780	font-family: var(--mono);1781	letter-spacing: 0.03em;1782	white-space: nowrap;1783	color: var(--accent-dim);1784	transition:1785		color 0.2s,1786		opacity 0.2s,1787		text-shadow 0.2s;1788}1789.tc-tag:hover {1790	color: var(--accent);1791	opacity: 1;1792	text-shadow: 0 0 14px var(--accent-tint-12);1793}1794.tc-1 {1795	font-size: 10px;1796	opacity: 0.42;1797}1798.tc-2 {1799	font-size: 12px;1800	opacity: 0.56;1801}1802.tc-3 {1803	font-size: 15px;1804	opacity: 0.7;1805}1806.tc-4 {1807	font-size: 18px;1808	opacity: 0.85;1809	font-weight: 500;1810}1811.tc-5 {1812	font-size: 23px;1813	opacity: 1;1814	font-weight: 500;1815}18161817.featured-label {1818	font-size: 0.6875rem;1819	font-weight: 400;1820	letter-spacing: 0.08em;1821	text-transform: uppercase;1822	color: var(--text-secondary);1823	margin: 0 0 12px;1824}1825.landing-self-host {1826	margin: 32px 0 0;1827	font-size: 0.75rem;1828}1829.landing-self-host a {1830	color: var(--text-secondary);1831}18321833/* ----- repo cards (front page, browse, profile) --------------------------- */18341835.card-grid {1836	display: grid;1837	grid-template-columns: repeat(2, minmax(0, 1fr));1838	gap: 16px;1839}1840.repo-card {1841	display: flex;1842	flex-direction: column;1843	padding: 20px 22px 16px;1844	border: 1px solid var(--bg-elevated);1845	border-radius: 4px;1846	background: var(--bg);1847	transition:1848		border-color 120ms,1849		background 120ms;1850	animation: fadeUp 350ms ease both;1851}1852.repo-card:hover {1853	text-decoration: none;1854	border-color: var(--text-faint);1855	background: var(--accent-tint-04);1856}1857.repo-card-head {1858	display: flex;1859	align-items: baseline;1860	justify-content: space-between;1861	gap: 12px;1862}1863.repo-card-name {1864	font-size: 1.375rem;1865	line-height: 1.1;1866	color: var(--accent);1867	overflow: hidden;1868	text-overflow: ellipsis;1869	white-space: nowrap;1870}1871.repo-card-saves {1872	font-size: 0.6875rem;1873	white-space: nowrap;1874}1875.repo-card-desc {1876	margin: 8px 0 0;1877	font-size: 0.8125rem;1878	line-height: 1.5;1879	color: var(--text-secondary);1880	display: -webkit-box;1881	-webkit-line-clamp: 2;1882	-webkit-box-orient: vertical;1883	overflow: hidden;1884}1885.repo-card-cat {1886	margin: 10px 0 0;1887	font-size: 0.9375rem;1888	color: var(--text);1889}18901891/* ----- profile ------------------------------------------------------------ */18921893/* The cover runs the full width of the window while the page keeps its column. */1894.profile-cover {1895	position: relative;1896	height: 380px;1897	margin: -24px calc(50% - 50vw) 0;1898	overflow: hidden;1899	border-bottom: 1px solid var(--bg-surface);1900}1901.hex-backdrop {1902	position: absolute;1903	inset: 0;1904	display: flex;1905	flex-direction: row-reverse;1906	justify-content: center;1907	align-items: center;1908	gap: 13px;1909	pointer-events: none;1910	user-select: none;1911	font-family: var(--mono);1912	font-size: 13px;1913	line-height: 16px;1914	color: var(--accent-dim);1915}1916/* Characters top to bottom, columns right to left, each breathing on its own clock. */1917.hex-col {1918	writing-mode: vertical-rl;1919	text-orientation: upright;1920	letter-spacing: 3px;1921	opacity: 0.05;1922	animation: hex-breathe 17s ease-in-out infinite;1923	transition:1924		color 1.6s ease,1925		text-shadow 1.6s ease;1926}1927.hex-col:nth-child(3n) {1928	color: var(--accent);1929	animation-duration: 23s;1930	animation-delay: -7s;1931}1932.hex-col:nth-child(4n + 1) {1933	animation-duration: 29s;1934	animation-delay: -13s;1935}1936.hex-col:nth-child(5n + 2) {1937	animation-duration: 19s;1938	animation-delay: -3s;1939}1940.hex-col:nth-child(7n) {1941	animation-delay: -21s;1942}1943.hex-col.glow {1944	color: var(--accent-bright);1945	text-shadow: 0 0 6px var(--accent-tint-12);1946}1947@keyframes hex-breathe {1948	0%,1949	100% {1950		opacity: 0.05;1951	}1952	50% {1953		opacity: 0.22;1954	}1955}1956.profile-cover-fade {1957	position: absolute;1958	left: 0;1959	right: 0;1960	bottom: 0;1961	height: 55%;1962	background: linear-gradient(to bottom, transparent, var(--bg));1963	pointer-events: none;1964}1965.profile-identity {1966	position: absolute;1967	bottom: 40px;1968	left: 0;1969	right: 0;1970	max-width: 980px;1971	margin: 0 auto;1972	padding: 0 48px;1973}1974.profile-username {1975	margin: 0 0 8px;1976	font-family: "Sacramento", cursive;1977	font-weight: 400;1978	font-size: 3.625rem;1979	line-height: 1;1980	letter-spacing: -0.02em;1981	text-transform: lowercase;1982	color: var(--text-heading);1983	user-select: none;1984	animation: fadeUp 500ms ease both;1985}1986.profile-signature {1987	display: block;1988	max-height: 96px;1989	max-width: min(360px, 100%);1990}1991.profile-tagline {1992	margin: 0 0 6px;1993	font-family: var(--mono);1994	font-size: 0.75rem;1995	letter-spacing: 0.15em;1996	color: var(--text-faint);1997}1998.profile-op-badge {1999	display: block;2000	font-size: 0.6875rem;2001	letter-spacing: 0.18em;2002	color: var(--accent);2003}20042005.profile-portrait-section {2006	display: grid;2007	grid-template-columns: 320px minmax(0, 1fr);2008	gap: 40px;2009	align-items: start;2010	padding-top: 40px;2011}2012.profile-left {2013	display: flex;2014	flex-direction: column;2015	gap: 16px;2016}2017.profile-identity-card,2018.profile-languages-bar {2019	padding: 20px 24px;2020	border: 1px solid var(--bg-elevated);2021	border-radius: 4px;2022}2023.profile-identity-bio {2024	margin: 0;2025	font-size: 0.875rem;2026	line-height: 1.5;2027	color: var(--text-muted);2028}2029.profile-identity-location {2030	margin: 6px 0 0;2031	font-family: var(--mono);2032	font-size: 0.8125rem;2033	color: var(--text-muted);2034}2035.profile-website-pill {2036	display: inline-block;2037	max-width: 100%;2038	margin-top: 10px;2039	padding: 3px 8px;2040	overflow: hidden;2041	text-overflow: ellipsis;2042	white-space: nowrap;2043	border: 1px solid var(--text-faint);2044	border-radius: 3px;2045	background: var(--bg-surface);2046	font-family: var(--mono);2047	font-size: 0.6875rem;2048	color: var(--accent);2049}2050.profile-website-pill:hover {2051	border-color: var(--accent);2052	text-decoration: none;2053}2054.profile-stats-grid {2055	display: grid;2056	grid-template-columns: 1fr 1fr;2057	border: 1px solid var(--bg-elevated);2058	border-radius: 4px;2059	overflow: hidden;2060}2061.profile-stat-tile {2062	padding: 16px;2063	border-right: 1px solid var(--bg-elevated);2064	border-bottom: 1px solid var(--bg-elevated);2065}2066.profile-stat-tile:nth-child(2n) {2067	border-right: none;2068}2069.profile-stat-tile:nth-last-child(-n + 2) {2070	border-bottom: none;2071}2072.profile-stat-number {2073	margin-bottom: 4px;2074	font-weight: 600;2075	font-size: 1.75rem;2076	line-height: 1;2077	color: var(--accent);2078}2079.profile-stat-label,2080.profile-section-label {2081	font-family: var(--mono);2082	font-size: 0.625rem;2083	text-transform: uppercase;2084	letter-spacing: 0.08em;2085	color: var(--text-faint);2086}2087.profile-lang-bar {2088	display: block;2089	width: 100%;2090	height: 6px;2091	margin-bottom: 8px;2092	border-radius: 3px;2093	background: var(--bg-surface);2094}2095.profile-lang-bar rect {2096	fill: var(--accent);2097	opacity: 0.6;2098}2099.profile-lang-bar rect:nth-child(2) {2100	fill: var(--sage);2101}2102.profile-lang-bar rect:nth-child(3) {2103	fill: var(--accent-flash);2104	opacity: 0.45;2105}2106.profile-lang-bar rect:nth-child(4) {2107	fill: var(--accent-dim);2108}2109.profile-lang-labels {2110	display: flex;2111	flex-wrap: wrap;2112	gap: 10px;2113	font-family: var(--mono);2114	font-size: 0.625rem;2115	color: var(--text-muted);2116}2117.profile-section-label {2118	margin-bottom: 16px;2119	letter-spacing: 0.2em;2120}2121.profile-timeline {2122	display: grid;2123	grid-auto-rows: 2.25rem;2124	max-height: 13.5rem;2125	overflow-y: auto;2126	scrollbar-width: thin;2127}2128.profile-event {2129	display: grid;2130	grid-template-columns: 96px 12px minmax(0, 1fr) auto;2131	gap: 10px;2132	align-items: baseline;2133	padding: 7px 0;2134	border-bottom: 1px solid var(--bg-surface);2135	font-family: var(--mono);2136	font-size: 0.6875rem;2137	animation: fadeUp 300ms ease both;2138}2139.profile-event-repo,2140.profile-event-message {2141	overflow: hidden;2142	text-overflow: ellipsis;2143	white-space: nowrap;2144}2145.profile-event-repo,2146.profile-event-glyph {2147	color: var(--accent);2148}2149.profile-event-glyph {2150	font-size: 0.625rem;2151}2152.profile-event-message {2153	color: var(--text-muted);2154}2155.profile-event-message:hover {2156	color: var(--text-heading);2157}2158.profile-event-time {2159	font-size: 0.625rem;2160	white-space: nowrap;2161	color: var(--text-faint);2162}2163.profile-empty-state {2164	font-style: italic;2165	font-size: 0.8125rem;2166	color: var(--text-faint);2167}2168.profile-repos-section {2169	margin-top: 40px;2170	padding-top: 40px;2171	border-top: 1px solid var(--bg-surface);2172}21732174/* ----- docs and support --------------------------------------------------- */21752176.admin-layout {2177	display: grid;2178	grid-template-columns: 160px minmax(0, 1fr);2179	gap: 48px;2180	min-height: 70vh;2181}2182.admin-sidebar {2183	position: sticky;2184	top: 24px;2185	align-self: start;2186	padding: 24px 0;2187	font-size: 0.75rem;2188}2189.admin-sidebar nav,2190.admin-sidebar-foot {2191	display: flex;2192	flex-direction: column;2193	gap: 16px;2194	margin-top: 20px;2195}2196.admin-sidebar a {2197	color: var(--text-secondary);2198}2199.admin-unread {2200	display: inline-block;2201	min-width: 1.5em;2202	padding: 0 5px;2203	border-radius: 999px;2204	background: var(--accent);2205	color: var(--bg);2206	font-size: 0.6875rem;2207	text-align: center;2208}2209.notification-unread {2210	box-shadow: inset 2px 0 0 var(--accent);2211	background: var(--accent-tint-04);2212}2213.admin-sidebar a[aria-current] {2214	color: var(--accent);2215	border-left: 2px solid var(--accent);2216	padding-left: 12px;2217}2218.admin-sidebar-foot {2219	border-top: 1px solid var(--border);2220	padding-top: 24px;2221	margin-top: 40px;2222}2223.admin-content {2224	min-width: 0;2225}2226.admin-heading {2227	border-bottom: 1px solid var(--border);2228	padding: 24px 0;2229	margin-bottom: 32px;2230}2231.admin-heading h1 {2232	font-size: 2rem;2233	font-weight: 400;2234	margin: 8px 0 0;2235	color: var(--text-heading);2236}2237.admin-intro {2238	color: var(--text-secondary);2239	margin-bottom: 24px;2240}2241.admin-notice {2242	color: var(--sage);2243	border-left: 2px solid var(--sage);2244	padding-left: 16px;2245}2246.admin-content .profile-signature {2247	max-width: 240px;2248	max-height: 120px;2249	object-fit: contain;2250}2251.admin-vitals {2252	display: flex;2253	flex-wrap: wrap;2254	gap: 24px 40px;2255	padding: 0 0 24px;2256	border-bottom: 1px solid var(--border);2257}2258.admin-vitals strong {2259	display: block;2260	font-size: 1.75rem;2261	font-weight: 400;2262	color: var(--accent);2263}2264.admin-days {2265	margin: 0;2266	padding: 0;2267	list-style: none;2268	font-size: 0.6875rem;2269}2270.admin-days li {2271	display: grid;2272	grid-template-columns: 11ch minmax(0, 1fr) 5ch;2273	gap: 12px;2274	align-items: center;2275	padding: 2px 0;2276}2277.admin-days meter {2278	appearance: none;2279	width: 100%;2280	height: 6px;2281	background: var(--border);2282	border: 0;2283}2284.admin-days meter::-webkit-meter-bar {2285	height: 6px;2286	background: var(--border);2287	border: 0;2288	border-radius: 0;2289}2290.admin-days meter::-webkit-meter-optimum-value {2291	background: var(--accent);2292}2293.admin-days meter::-moz-meter-bar {2294	background: var(--accent);2295}2296.admin-days li > span:last-child {2297	text-align: right;2298}2299.admin-select-row {2300	display: flex;2301	gap: 12px;2302	align-items: center;2303}2304.admin-select-row .issue-row {2305	flex: 1;2306	min-width: 0;2307}2308.admin-content form.issue-row {2309	align-items: center;2310}2311.admin-table {2312	width: 100%;2313	border-collapse: collapse;2314	font-size: 0.6875rem;2315}2316.admin-table th,2317.admin-table td {2318	padding: 6px 12px 6px 0;2319	border-bottom: 1px solid var(--border);2320	text-align: left;2321	font-weight: 400;2322	overflow-wrap: anywhere;2323}2324.admin-table th {2325	color: var(--text-muted);2326}2327.admin-releases {2328	margin: 12px 0 0;2329	padding: 0;2330	list-style: none;2331	font-size: 0.6875rem;2332}2333.admin-releases li {2334	padding: 4px 0;2335}2336.admin-repos {2337	display: grid;2338	grid-template-columns: minmax(120px, 0.7fr) minmax(0, 1.3fr);2339	gap: 24px;2340	margin-top: 24px;2341}2342.admin-repos .issue-row {2343	flex-wrap: wrap;2344}2345.admin-repos [aria-current] {2346	border-left: 2px solid var(--accent);2347	padding-left: 12px;2348}2349@media (max-width: 680px) {2350	.admin-repos {2351		grid-template-columns: minmax(0, 1fr);2352	}2353	.admin-layout {2354		grid-template-columns: minmax(0, 1fr);2355		gap: 0;2356	}2357	.admin-sidebar {2358		position: static;2359		padding: 8px 0;2360	}2361	.admin-sidebar nav,2362	.admin-sidebar-foot {2363		flex-flow: row wrap;2364		gap: 12px 20px;2365	}2366	.admin-sidebar-foot {2367		margin-top: 16px;2368		padding-top: 16px;2369	}2370}23712372.site-doc {2373	max-width: 72ch;2374	margin-top: 16px;2375}2376.site-doc h1 {2377	font-size: clamp(2rem, 5vw, 3rem);2378	font-weight: 400;2379	color: var(--text-heading);2380}2381.site-doc h2 {2382	margin-top: 2.4em;2383	scroll-margin-top: 24px;2384}2385.site-doc-layout {2386	display: grid;2387	grid-template-columns: 180px minmax(0, 72ch);2388	gap: 48px;2389}2390.site-doc-nav {2391	position: sticky;2392	top: 24px;2393	align-self: start;2394	display: flex;2395	flex-direction: column;2396	gap: 10px;2397	margin-top: 32px;2398	font-size: 0.8125rem;2399}2400.site-doc-nav a {2401	color: var(--text-secondary);2402	text-decoration: none;2403}2404.site-doc-nav a:hover {2405	color: var(--text-heading);2406}2407@media (max-width: 860px) {2408	.site-doc-layout {2409		grid-template-columns: minmax(0, 1fr);2410		gap: 0;2411	}2412	.site-doc-nav {2413		position: static;2414		flex-flow: row wrap;2415		gap: 8px 16px;2416		margin-top: 24px;2417	}2418}24192420@media (max-width: 860px) {2421	.headline,2422	.profile-portrait-section {2423		grid-template-columns: minmax(0, 1fr);2424	}2425	.headline {2426		gap: 8px;2427		padding-top: 48px;2428	}2429	.card-grid {2430		grid-template-columns: minmax(0, 1fr);2431	}2432}2433@media (max-width: 768px) {2434	.ticker {2435		height: 226px;2436		margin-top: -88px;2437		padding-top: 80px;2438	}2439	.profile-cover {2440		height: 280px;2441		margin-top: -16px;2442	}2443	.profile-identity {2444		bottom: 24px;2445		padding: 0 16px;2446	}2447	.profile-username {2448		font-size: 2.5rem;2449	}2450	.profile-event {2451		grid-template-columns: 72px 12px minmax(0, 1fr);2452	}2453	.profile-event-time {2454		display: none;2455	}2456}24572458/* ----- media in Markdown and the signed-in editor ------------------------- */24592460/* Sizes and places from an image's options (markdown.ts); classes, as the policy allows no inline2461   style. */2462.markdown .media {2463	display: block;2464	max-width: 100%;2465	height: auto;2466	margin: 12px auto;2467	border-radius: 3px;2468}2469.markdown .media-left {2470	margin-left: 0;2471}2472.markdown .media-right {2473	margin-right: 0;2474}2475.markdown .media-w25 {2476	width: 25%;2477}2478.markdown .media-w33 {2479	width: 33%;2480}2481.markdown .media-w50 {2482	width: 50%;2483}2484.markdown .media-w66 {2485	width: 66%;2486}2487.markdown .media-w75 {2488	width: 75%;2489}2490.markdown .media-w100 {2491	width: 100%;2492}2493.edit-btn {2494	margin-left: 12px;2495	padding: 1px 7px;2496	background: transparent;2497	border: 1px solid rgba(200, 154, 90, 0.2);2498	border-radius: 2px;2499	font-size: 0.625rem;2500	color: var(--text-faint);2501	cursor: pointer;2502	vertical-align: middle;2503}2504.repo-desc-editable:not(:has(.editor)) {2505	cursor: text;2506}2507.edit-btn:hover {2508	color: var(--accent);2509	border-color: var(--accent-dim);2510}2511.editor {2512	display: grid;2513	gap: 8px;2514	margin: 8px 0 16px;2515}2516.editor-toolbar,2517.editor-media,2518.editor-actions {2519	display: flex;2520	flex-wrap: wrap;2521	align-items: center;2522	gap: 4px;2523}2524.editor-media[hidden] {2525	display: none;2526}2527.editor-label,2528.editor-status {2529	margin: 0 6px;2530	font-size: 0.625rem;2531	color: var(--text-faint);2532}2533.editor-panes {2534	display: grid;2535	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);2536	gap: 12px;2537}2538@media (max-width: 768px) {2539	.editor-panes {2540		grid-template-columns: minmax(0, 1fr);2541	}2542}2543.editor-input {2544	width: 100%;2545	min-height: 4lh;2546	max-height: 70vh;2547	field-sizing: content;2548	resize: vertical;2549	padding: 10px 12px;2550	background: var(--bg-surface);2551	border: 1px solid var(--border);2552	border-radius: 3px;2553	color: var(--text);2554	font-size: 0.75rem;2555	line-height: 1.6;2556}2557.editor-input:focus {2558	outline: none;2559	border-color: var(--accent-dim);2560}2561.editor-preview {2562	min-width: 0;2563	max-height: 70vh;2564	overflow-y: auto;2565	padding: 0 4px;2566}2567.editor-preview:empty::before {2568	content: attr(data-empty);2569	font-family: var(--mono);2570	font-size: 0.625rem;2571	color: var(--text-faint);2572}25732574/* ----- file viewer (Kepr 2's Atlas modal) -------------------------------- */25752576body:has(> .fv-overlay) {2577	overflow: hidden;2578}2579.fv-overlay {2580	position: fixed;2581	inset: 0;2582	z-index: 2000;2583	display: flex;2584	flex-direction: column;2585	background: rgba(8, 7, 5, 0.97);2586	outline: none;2587	animation: fv-in 200ms ease both;2588}2589@keyframes fv-in {2590	from {2591		opacity: 0;2592		transform: translateY(6px) scale(0.97);2593	}2594}2595.fv-header {2596	display: flex;2597	align-items: center;2598	gap: 16px;2599	flex-shrink: 0;2600	height: 48px;2601	padding: 0 20px;2602	background: var(--bg);2603	border-bottom: 1px solid var(--bg-elevated);2604}2605.fv-close {2606	background: none;2607	border: 0;2608	padding: 0 4px;2609	font-size: 1.375rem;2610	line-height: 1;2611	color: var(--text-faint);2612	cursor: pointer;2613}2614.fv-close:hover {2615	color: var(--accent);2616}2617.fv-title {2618	display: flex;2619	align-items: baseline;2620	gap: 8px;2621	flex: 1;2622	min-width: 0;2623}2624.fv-name {2625	font-size: 1.25rem;2626	color: var(--text-heading);2627	white-space: nowrap;2628}2629.fv-path {2630	font-size: 0.625rem;2631	color: var(--text-faint);2632	white-space: nowrap;2633	overflow: hidden;2634	text-overflow: ellipsis;2635}2636.fv-controls,2637.fv-nav {2638	display: flex;2639	align-items: center;2640	gap: 4px;2641	flex-shrink: 0;2642}2643.fv-ctrl-btn {2644	background: transparent;2645	border: 1px solid rgba(200, 154, 90, 0.2);2646	border-radius: 2px;2647	padding: 3px 7px;2648	font: inherit;2649	font-size: 0.625rem;2650	color: var(--text-faint);2651	cursor: pointer;2652	transition:2653		color 100ms,2654		border-color 100ms;2655}2656.fv-ctrl-btn:hover:not(:disabled),2657.fv-ctrl-btn.active {2658	color: var(--accent);2659	border-color: rgba(200, 154, 90, 0.5);2660	text-decoration: none;2661}2662.fv-ctrl-btn:disabled {2663	opacity: 0.3;2664	cursor: default;2665}2666.fv-pos {2667	min-width: 48px;2668	text-align: center;2669	font-size: 0.625rem;2670	color: var(--text-faint);2671}2672.fv-body {2673	flex: 1;2674	min-height: 0;2675	display: grid;2676	grid-template-columns: minmax(0, 1fr) 280px;2677}2678.fv-source {2679	min-height: 0;2680	overflow: auto;2681	padding: 16px 28px 32px;2682	font-family: var(--mono);2683	font-size: 0.6875rem;2684	color: var(--text-faint);2685}2686.fv-source .file-view {2687	margin: -16px -28px 0;2688	border: 0;2689	background: none;2690	overflow: visible;2691}2692.fv-source .code {2693	font-size: var(--fv-size);2694	color: var(--text);2695}2696.fv-wrap .fv-source .lc {2697	white-space: pre-wrap;2698	overflow-wrap: anywhere;2699}2700.fv-source .file-markdown {2701	font-family: var(--sans);2702	font-size: calc(var(--fv-size) + 2px);2703	color: var(--text);2704}2705.fv-detail .atlas-info-desc {2706	font-size: 0.8125rem;2707}2708.fv-detail {2709	overflow-y: auto;2710	padding: 18px 20px 24px;2711	background: var(--bg);2712	border-left: 1px solid var(--bg-elevated);2713}2714/* After the viewer's own rules, which would otherwise win at equal specificity. */2715@media (max-width: 768px) {2716	.fv-overlay {2717		background: var(--bg);2718	}2719	.fv-header {2720		flex-wrap: wrap;2721		height: auto;2722		padding: 8px 12px;2723		gap: 8px 12px;2724	}2725	.fv-title {2726		flex-basis: calc(100% - 40px);2727	}2728	.fv-body {2729		grid-template-columns: minmax(0, 1fr);2730	}2731	.fv-detail {2732		display: none;2733	}2734	.fv-source {2735		padding: 12px 16px 24px;2736	}2737	.fv-source .file-view {2738		margin: -12px -16px 0;2739	}2740}27412742/* Last in the file, after every animation it stops, so it wins without !important. */2743@media (prefers-reduced-motion: reduce) {2744	.tri-outer,2745	.tri-inner,2746	.repo-name,2747	.repo-contributor,2748	.repo-desc,2749	.repo-homepage,2750	.repo-meta,2751	.repo-tabs,2752	.install-lines,2753	.repo-section,2754	.repo-details,2755	.save-message-head,2756	.ticker-row,2757	.ticker-track,2758	.hex-col,2759	.headline h1,2760	.headline-tagline,2761	.headline-cloud,2762	.repo-card,2763	.profile-username,2764	.profile-event,2765	.fv-overlay,2766	.repo-panel {2767		animation: none;2768	}2769	.nav-toggle span {2770		transition: none;2771	}2772	.hex-col {2773		opacity: 0.12;2774	}2775}27762777/* ----- fonts: served by Kepr itself; licences beside them in /static/fonts ----- */27782779/* latin */2780@font-face {2781	font-family: "Bellota";2782	font-style: normal;2783	font-weight: 700;2784	font-display: swap;2785	src: url(/static/fonts/bellota-latin-700-normal.woff2) format("woff2");2786	unicode-range:2787		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;2788}27892790/* cyrillic */2791@font-face {2792	font-family: "Bellota";2793	font-style: normal;2794	font-weight: 700;2795	font-display: swap;2796	src: url(/static/fonts/bellota-cyrillic-700-normal.woff2) format("woff2");2797	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;2798}27992800/* latin-ext */2801@font-face {2802	font-family: "Bellota";2803	font-style: normal;2804	font-weight: 700;2805	font-display: swap;2806	src: url(/static/fonts/bellota-latin-ext-700-normal.woff2) format("woff2");2807	unicode-range:2808		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;2809}28102811/* vietnamese */2812@font-face {2813	font-family: "Bellota";2814	font-style: normal;2815	font-weight: 700;2816	font-display: swap;2817	src: url(/static/fonts/bellota-vietnamese-700-normal.woff2) format("woff2");2818	unicode-range:2819		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;2820}28212822/* greek */2823@font-face {2824	font-family: "Comfortaa";2825	font-style: normal;2826	font-weight: 700;2827	font-stretch: 100%;2828	font-display: swap;2829	src: url(/static/fonts/comfortaa-greek-700-normal.woff2) format("woff2");2830	unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;2831}28322833/* latin */2834@font-face {2835	font-family: "Comfortaa";2836	font-style: normal;2837	font-weight: 700;2838	font-stretch: 100%;2839	font-display: swap;2840	src: url(/static/fonts/comfortaa-latin-700-normal.woff2) format("woff2");2841	unicode-range:2842		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;2843}28442845/* cyrillic */2846@font-face {2847	font-family: "Comfortaa";2848	font-style: normal;2849	font-weight: 700;2850	font-stretch: 100%;2851	font-display: swap;2852	src: url(/static/fonts/comfortaa-cyrillic-700-normal.woff2) format("woff2");2853	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;2854}28552856/* latin-ext */2857@font-face {2858	font-family: "Comfortaa";2859	font-style: normal;2860	font-weight: 700;2861	font-stretch: 100%;2862	font-display: swap;2863	src: url(/static/fonts/comfortaa-latin-ext-700-normal.woff2) format("woff2");2864	unicode-range:2865		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;2866}28672868/* vietnamese */2869@font-face {2870	font-family: "Comfortaa";2871	font-style: normal;2872	font-weight: 700;2873	font-stretch: 100%;2874	font-display: swap;2875	src: url(/static/fonts/comfortaa-vietnamese-700-normal.woff2) format("woff2");2876	unicode-range:2877		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;2878}28792880/* cyrillic-ext */2881@font-face {2882	font-family: "Comfortaa";2883	font-style: normal;2884	font-weight: 700;2885	font-stretch: 100%;2886	font-display: swap;2887	src: url(/static/fonts/comfortaa-cyrillic-ext-700-normal.woff2) format("woff2");2888	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;2889}28902891/* latin */2892@font-face {2893	font-family: "Martian Mono";2894	font-style: normal;2895	font-weight: 400;2896	font-stretch: 100%;2897	font-display: swap;2898	src: url(/static/fonts/martian-mono-latin-400-normal.woff2) format("woff2");2899	unicode-range:2900		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;2901}29022903/* cyrillic */2904@font-face {2905	font-family: "Martian Mono";2906	font-style: normal;2907	font-weight: 400;2908	font-stretch: 100%;2909	font-display: swap;2910	src: url(/static/fonts/martian-mono-cyrillic-400-normal.woff2) format("woff2");2911	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;2912}29132914/* latin-ext */2915@font-face {2916	font-family: "Martian Mono";2917	font-style: normal;2918	font-weight: 400;2919	font-stretch: 100%;2920	font-display: swap;2921	src: url(/static/fonts/martian-mono-latin-ext-400-normal.woff2) format("woff2");2922	unicode-range:2923		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;2924}29252926/* cyrillic-ext */2927@font-face {2928	font-family: "Martian Mono";2929	font-style: normal;2930	font-weight: 400;2931	font-stretch: 100%;2932	font-display: swap;2933	src: url(/static/fonts/martian-mono-cyrillic-ext-400-normal.woff2) format("woff2");2934	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;2935}29362937/* latin */2938@font-face {2939	font-family: "Quicksand";2940	font-style: normal;2941	font-weight: 400;2942	font-stretch: 100%;2943	font-display: swap;2944	src: url(/static/fonts/quicksand-latin-400-normal.woff2) format("woff2");2945	unicode-range:2946		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;2947}29482949/* latin-ext */2950@font-face {2951	font-family: "Quicksand";2952	font-style: normal;2953	font-weight: 400;2954	font-stretch: 100%;2955	font-display: swap;2956	src: url(/static/fonts/quicksand-latin-ext-400-normal.woff2) format("woff2");2957	unicode-range:2958		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;2959}29602961/* vietnamese */2962@font-face {2963	font-family: "Quicksand";2964	font-style: normal;2965	font-weight: 400;2966	font-stretch: 100%;2967	font-display: swap;2968	src: url(/static/fonts/quicksand-vietnamese-400-normal.woff2) format("woff2");2969	unicode-range:2970		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;2971}29722973/* latin */2974@font-face {2975	font-family: "Quicksand";2976	font-style: normal;2977	font-weight: 600;2978	font-stretch: 100%;2979	font-display: swap;2980	src: url(/static/fonts/quicksand-latin-600-normal.woff2) format("woff2");2981	unicode-range:2982		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;2983}29842985/* latin-ext */2986@font-face {2987	font-family: "Quicksand";2988	font-style: normal;2989	font-weight: 600;2990	font-stretch: 100%;2991	font-display: swap;2992	src: url(/static/fonts/quicksand-latin-ext-600-normal.woff2) format("woff2");2993	unicode-range:2994		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;2995}29962997/* vietnamese */2998@font-face {2999	font-family: "Quicksand";3000	font-style: normal;3001	font-weight: 600;3002	font-stretch: 100%;3003	font-display: swap;3004	src: url(/static/fonts/quicksand-vietnamese-600-normal.woff2) format("woff2");3005	unicode-range:3006		U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;3007}30083009/* latin */3010@font-face {3011	font-family: "Sacramento";3012	font-style: normal;3013	font-weight: 400;3014	font-display: swap;3015	src: url(/static/fonts/sacramento-latin-400-normal.woff2) format("woff2");3016	unicode-range:3017		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;3018}30193020/* latin-ext */3021@font-face {3022	font-family: "Sacramento";3023	font-style: normal;3024	font-weight: 400;3025	font-display: swap;3026	src: url(/static/fonts/sacramento-latin-ext-400-normal.woff2) format("woff2");3027	unicode-range:3028		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;3029}