kepr.css

61.6 KB · raw

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