kepr.css

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