kepr.css

62.6 KB · raw

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