kepr.css

62.3 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}2048/* Matching groups keep every column continuous across the loop boundary. */2049.hex-col {2050	display: flex;2051	flex-direction: column;2052	flex-shrink: 0;2053	opacity: 0.22;2054	animation: hex-stream 120s linear infinite;2055	animation-delay: -43s;2056}2057.hex-group {2058	display: flex;2059	flex-direction: column;2060	gap: 36px;2061	padding-bottom: 36px;2062}2063.hex-id {2064	writing-mode: vertical-rl;2065	text-orientation: upright;2066	letter-spacing: 3px;2067	opacity: 0.45;2068}2069.hex-id:first-child {2070	color: var(--accent);2071	opacity: 1;2072}2073.hex-col:nth-child(3n) {2074	color: var(--accent);2075	animation-duration: 144s;2076	animation-delay: -77s;2077}2078.hex-col:nth-child(4n + 1) {2079	animation-duration: 160s;2080	animation-delay: -119s;2081}2082.hex-col:nth-child(5n + 2) {2083	animation-duration: 108s;2084	animation-delay: -19s;2085}2086.hex-col:nth-child(7n) {2087	animation-delay: -91s;2088}2089.hex-backdrop.paused .hex-col {2090	animation-play-state: paused;2091}2092@keyframes hex-stream {2093	from {2094		transform: translateY(-50%);2095	}2096	to {2097		transform: translateY(0);2098	}2099}2100.profile-cover-fade {2101	position: absolute;2102	left: 0;2103	right: 0;2104	bottom: 0;2105	height: 55%;2106	background: linear-gradient(to bottom, transparent, var(--bg));2107	pointer-events: none;2108}2109.profile-identity {2110	position: absolute;2111	bottom: 40px;2112	left: 0;2113	right: 0;2114	max-width: 980px;2115	margin: 0 auto;2116	padding: 0 48px;2117}2118.profile-username {2119	margin: 0 0 8px;2120	font-family: "Sacramento", cursive;2121	font-weight: 400;2122	font-size: 3.625rem;2123	line-height: 1;2124	letter-spacing: -0.02em;2125	text-transform: lowercase;2126	color: var(--text-heading);2127	user-select: none;2128	animation: fadeUp 500ms ease both;2129}2130.profile-signature {2131	display: block;2132	max-height: 96px;2133	max-width: min(360px, 100%);2134}2135.profile-tagline {2136	margin: 0 0 6px;2137	font-family: var(--mono);2138	font-size: 0.75rem;2139	letter-spacing: 0.15em;2140	color: var(--text-faint);2141}2142.profile-op-badge {2143	display: block;2144	font-size: 0.6875rem;2145	letter-spacing: 0.18em;2146	color: var(--accent-bright);2147}21482149.profile-portrait-section {2150	display: grid;2151	grid-template-columns: 320px minmax(0, 1fr);2152	gap: 40px;2153	align-items: start;2154	padding-top: 40px;2155}2156.profile-left {2157	display: flex;2158	flex-direction: column;2159	gap: 16px;2160}2161.profile-identity-card,2162.profile-languages-bar {2163	padding: 20px 24px;2164	border: 1px solid var(--bg-elevated);2165	border-radius: 4px;2166}2167.profile-identity-bio {2168	margin: 0;2169	font-size: 0.875rem;2170	line-height: 1.5;2171	color: var(--text-muted);2172}2173.profile-identity-location {2174	margin: 6px 0 0;2175	font-family: var(--mono);2176	font-size: 0.8125rem;2177	color: var(--text-muted);2178}2179.profile-website-pill {2180	display: inline-block;2181	max-width: 100%;2182	margin-top: 10px;2183	padding: 3px 8px;2184	overflow: hidden;2185	text-overflow: ellipsis;2186	white-space: nowrap;2187	border: 1px solid var(--text-faint);2188	border-radius: 3px;2189	background: var(--bg-surface);2190	font-family: var(--mono);2191	font-size: 0.6875rem;2192	color: var(--accent);2193}2194.profile-website-pill:hover {2195	border-color: var(--accent);2196	text-decoration: none;2197}2198.profile-stats-grid {2199	display: grid;2200	grid-template-columns: 1fr 1fr;2201	border: 1px solid var(--bg-elevated);2202	border-radius: 4px;2203	overflow: hidden;2204}2205.profile-stat-tile {2206	padding: 16px;2207	border-right: 1px solid var(--bg-elevated);2208	border-bottom: 1px solid var(--bg-elevated);2209}2210.profile-stat-tile:nth-child(2n) {2211	border-right: none;2212}2213.profile-stat-tile:nth-last-child(-n + 2) {2214	border-bottom: none;2215}2216.profile-stat-number {2217	margin-bottom: 4px;2218	font-weight: 600;2219	font-size: 1.75rem;2220	line-height: 1;2221	color: var(--accent);2222}2223.profile-stat-label,2224.profile-section-label {2225	font-family: var(--mono);2226	font-size: 0.625rem;2227	text-transform: uppercase;2228	letter-spacing: 0.08em;2229	color: var(--text-faint);2230}2231.profile-lang-bar {2232	display: block;2233	width: 100%;2234	height: 6px;2235	margin-bottom: 8px;2236	border-radius: 3px;2237	background: var(--bg-surface);2238}2239.profile-lang-bar rect {2240	fill: var(--accent);2241	opacity: 0.6;2242}2243.profile-lang-bar rect:nth-child(2) {2244	fill: var(--accent-bright);2245}2246.profile-lang-bar rect:nth-child(3) {2247	fill: var(--accent-dim);2248}2249.profile-lang-bar rect:nth-child(4) {2250	fill: var(--text-muted);2251}2252.profile-lang-labels {2253	display: flex;2254	flex-wrap: wrap;2255	gap: 10px;2256	font-family: var(--mono);2257	font-size: 0.625rem;2258	color: var(--text-muted);2259}2260.profile-section-label {2261	margin-bottom: 16px;2262	letter-spacing: 0.2em;2263}2264.profile-timeline {2265	display: grid;2266	grid-auto-rows: 2.25rem;2267	max-height: 13.5rem;2268	overflow-y: auto;2269	scrollbar-width: thin;2270}2271.profile-event {2272	display: grid;2273	grid-template-columns: 96px 12px minmax(0, 1fr) auto;2274	gap: 10px;2275	align-items: baseline;2276	padding: 7px 0;2277	border-bottom: 1px solid var(--bg-surface);2278	font-family: var(--mono);2279	font-size: 0.6875rem;2280	animation: fadeUp 300ms ease both;2281}2282.profile-event-repo,2283.profile-event-message {2284	overflow: hidden;2285	text-overflow: ellipsis;2286	white-space: nowrap;2287}2288.profile-event-repo,2289.profile-event-glyph {2290	color: var(--accent);2291}2292.profile-event-glyph {2293	font-size: 0.625rem;2294}2295.profile-event-message {2296	color: var(--text-muted);2297}2298.profile-event-message:hover {2299	color: var(--text-heading);2300}2301.profile-event-time {2302	font-size: 0.625rem;2303	white-space: nowrap;2304	color: var(--text-faint);2305}2306.profile-empty-state {2307	font-style: italic;2308	font-size: 0.8125rem;2309	color: var(--text-faint);2310}2311.profile-repos-section {2312	margin-top: 40px;2313	padding-top: 40px;2314	border-top: 1px solid var(--bg-surface);2315}23162317/* ----- docs and support --------------------------------------------------- */23182319.admin-layout {2320	display: grid;2321	grid-template-columns: 160px minmax(0, 1fr);2322	gap: 48px;2323	min-height: 70vh;2324}2325.admin-sidebar {2326	position: sticky;2327	top: 24px;2328	align-self: start;2329	padding: 24px 0;2330	font-size: 0.75rem;2331}2332.admin-sidebar nav,2333.admin-sidebar-foot {2334	display: flex;2335	flex-direction: column;2336	gap: 16px;2337	margin-top: 20px;2338}2339.admin-sidebar a {2340	color: var(--text-secondary);2341}2342.admin-unread {2343	display: inline-block;2344	min-width: 1.5em;2345	padding: 0 5px;2346	border-radius: 999px;2347	background: var(--accent);2348	color: var(--bg);2349	font-size: 0.6875rem;2350	text-align: center;2351}2352.notification-unread {2353	box-shadow: inset 2px 0 0 var(--accent);2354	background: var(--accent-tint-04);2355}2356.notification-list .notification-unread {2357	border-left: 2px solid var(--accent);2358	padding-left: 12px;2359}23602361.admin-sidebar a[aria-current] {2362	color: var(--accent);2363	border-left: 2px solid var(--accent);2364	padding-left: 12px;2365}2366.admin-sidebar-foot {2367	border-top: 1px solid var(--border);2368	padding-top: 24px;2369	margin-top: 40px;2370}2371.admin-content {2372	min-width: 0;2373}2374.admin-heading {2375	border-bottom: 1px solid var(--border);2376	padding: 24px 0;2377	margin-bottom: 32px;2378}2379.admin-heading h1 {2380	font-size: 2rem;2381	font-weight: 400;2382	margin: 8px 0 0;2383	color: var(--text-heading);2384}2385.admin-intro {2386	color: var(--text-secondary);2387	margin-bottom: 24px;2388}2389.admin-notice {2390	color: var(--sage);2391	border-left: 2px solid var(--sage);2392	padding-left: 16px;2393}2394.admin-content .profile-signature {2395	max-width: 240px;2396	max-height: 120px;2397	object-fit: contain;2398}2399.admin-vitals {2400	display: flex;2401	flex-wrap: wrap;2402	gap: 24px 40px;2403	padding: 0 0 24px;2404	border-bottom: 1px solid var(--border);2405}2406.admin-vitals strong {2407	display: block;2408	font-size: 1.75rem;2409	font-weight: 400;2410	color: var(--accent);2411}2412.admin-days {2413	margin: 0;2414	padding: 0;2415	list-style: none;2416	font-size: 0.6875rem;2417}2418.admin-days li {2419	display: grid;2420	grid-template-columns: 11ch minmax(0, 1fr) 5ch;2421	gap: 12px;2422	align-items: center;2423	padding: 2px 0;2424}2425.admin-days meter {2426	appearance: none;2427	width: 100%;2428	height: 6px;2429	background: var(--border);2430	border: 0;2431}2432.admin-days meter::-webkit-meter-bar {2433	height: 6px;2434	background: var(--border);2435	border: 0;2436	border-radius: 0;2437}2438.admin-days meter::-webkit-meter-optimum-value {2439	background: var(--accent);2440}2441.admin-days meter::-moz-meter-bar {2442	background: var(--accent);2443}2444.admin-days li > span:last-child {2445	text-align: right;2446}2447.admin-select-row {2448	display: flex;2449	gap: 12px;2450	align-items: center;2451}2452.admin-select-row .issue-row {2453	flex: 1;2454	min-width: 0;2455}2456.admin-content form.issue-row {2457	align-items: center;2458}2459.admin-table {2460	width: 100%;2461	border-collapse: collapse;2462	font-size: 0.6875rem;2463}2464.admin-table th,2465.admin-table td {2466	padding: 6px 12px 6px 0;2467	border-bottom: 1px solid var(--border);2468	text-align: left;2469	font-weight: 400;2470	overflow-wrap: anywhere;2471}2472.admin-table th {2473	color: var(--text-muted);2474}2475.admin-releases {2476	margin: 12px 0 0;2477	padding: 0;2478	list-style: none;2479	font-size: 0.6875rem;2480}2481.admin-releases li {2482	padding: 4px 0;2483}2484.admin-repos-layout {2485	display: grid;2486	grid-template-columns: 140px minmax(0, 1fr);2487	gap: 24px;2488}2489.admin-repo-picker {2490	position: sticky;2491	top: 24px;2492	align-self: start;2493	display: flex;2494	flex-direction: column;2495	gap: 20px;2496	font-size: 0.75rem;2497}2498.admin-repo-picker nav {2499	display: flex;2500	flex-direction: column;2501	max-height: 50vh;2502	overflow-y: auto;2503	border-bottom: 1px solid var(--border);2504}2505.admin-repo-link {2506	padding: 12px 8px;2507	overflow-wrap: anywhere;2508	border-left: 2px solid transparent;2509	color: var(--text-secondary);2510}2511.admin-repo-link.active {2512	border-left-color: var(--accent);2513	background: var(--bg-surface);2514	color: var(--accent-bright);2515}2516.admin-repo-link span {2517	display: block;2518	font-size: 0.625rem;2519}2520.admin-repo-workspace {2521	min-width: 0;2522}2523#global-hide {2524	scroll-margin-top: 24px;2525}2526@media (max-width: 900px) {2527	.admin-repos-layout {2528		grid-template-columns: minmax(0, 1fr);2529	}2530	.admin-repo-picker {2531		position: static;2532	}2533	.admin-repo-picker nav {2534		max-height: 200px;2535	}2536}2537@media (max-width: 680px) {2538	.admin-layout {2539		grid-template-columns: minmax(0, 1fr);2540		gap: 0;2541	}2542	.admin-sidebar {2543		position: static;2544		padding: 8px 0;2545	}2546	.admin-sidebar nav,2547	.admin-sidebar-foot {2548		flex-flow: row wrap;2549		gap: 12px 20px;2550	}2551	.admin-sidebar-foot {2552		margin-top: 16px;2553		padding-top: 16px;2554	}2555}25562557.site-doc {2558	max-width: 72ch;2559	margin-top: 16px;2560}2561.site-doc h1 {2562	font-size: clamp(2rem, 5vw, 3rem);2563	font-weight: 400;2564	color: var(--text-heading);2565}2566.site-doc h2 {2567	margin-top: 2.4em;2568	scroll-margin-top: 24px;2569}2570.site-doc-layout {2571	display: grid;2572	grid-template-columns: 180px minmax(0, 72ch);2573	gap: 48px;2574}2575.site-doc-nav {2576	position: sticky;2577	top: 24px;2578	align-self: start;2579	display: flex;2580	flex-direction: column;2581	gap: 10px;2582	margin-top: 32px;2583	font-size: 0.8125rem;2584}2585.site-doc-nav a {2586	color: var(--text-secondary);2587	text-decoration: none;2588}2589.site-doc-nav a:hover {2590	color: var(--text-heading);2591}2592@media (max-width: 860px) {2593	.site-doc-layout {2594		grid-template-columns: minmax(0, 1fr);2595		gap: 0;2596	}2597	.site-doc-nav {2598		position: static;2599		flex-flow: row wrap;2600		gap: 8px 16px;2601		margin-top: 24px;2602	}2603}26042605@media (max-width: 860px) {2606	.headline,2607	.profile-portrait-section {2608		grid-template-columns: minmax(0, 1fr);2609	}2610	.headline {2611		gap: 8px;2612		padding-top: 48px;2613	}2614	.card-grid {2615		grid-template-columns: minmax(0, 1fr);2616	}2617}2618@media (max-width: 768px) {2619	.ticker {2620		height: 226px;2621		margin-top: -88px;2622		padding-top: 80px;2623	}2624	.profile-cover {2625		height: 280px;2626		margin-top: -16px;2627	}2628	.profile-identity {2629		bottom: 24px;2630		padding: 0 16px;2631	}2632	.profile-username {2633		font-size: 2.5rem;2634	}2635	.profile-event {2636		grid-template-columns: 72px 12px minmax(0, 1fr);2637	}2638	.profile-event-time {2639		display: none;2640	}2641}26422643/* ----- media in Markdown and the signed-in editor ------------------------- */26442645/* Sizes and places from an image's options (markdown.ts); classes, as the policy allows no inline2646   style. */2647.markdown .media {2648	display: block;2649	max-width: 100%;2650	height: auto;2651	margin: 12px auto;2652	border-radius: 3px;2653}2654.markdown .media-left {2655	margin-left: 0;2656}2657.markdown .media-right {2658	margin-right: 0;2659}2660.markdown .media-w25 {2661	width: 25%;2662}2663.markdown .media-w33 {2664	width: 33%;2665}2666.markdown .media-w50 {2667	width: 50%;2668}2669.markdown .media-w66 {2670	width: 66%;2671}2672.markdown .media-w75 {2673	width: 75%;2674}2675.markdown .media-w100 {2676	width: 100%;2677}2678.edit-btn {2679	margin-left: 12px;2680	padding: 1px 7px;2681	background: transparent;2682	border: 1px solid rgba(255, 173, 51, 0.2);2683	border-radius: 2px;2684	font-size: 0.625rem;2685	color: var(--text-faint);2686	cursor: pointer;2687	vertical-align: middle;2688}2689.repo-desc-editable:not(:has(.editor)) {2690	cursor: text;2691}2692.edit-btn:hover {2693	color: var(--accent);2694	border-color: var(--accent-dim);2695}2696.editor {2697	display: grid;2698	gap: 8px;2699	margin: 8px 0 16px;2700}2701.editor-toolbar,2702.editor-media,2703.editor-actions {2704	display: flex;2705	flex-wrap: wrap;2706	align-items: center;2707	gap: 4px;2708}2709.editor-media[hidden] {2710	display: none;2711}2712.editor-label,2713.editor-status {2714	margin: 0 6px;2715	font-size: 0.625rem;2716	color: var(--text-faint);2717}2718.editor-panes {2719	display: grid;2720	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);2721	gap: 12px;2722}2723@media (max-width: 768px) {2724	.editor-panes {2725		grid-template-columns: minmax(0, 1fr);2726	}2727}2728.editor-input {2729	width: 100%;2730	min-height: 4lh;2731	max-height: 70vh;2732	field-sizing: content;2733	resize: vertical;2734	padding: 10px 12px;2735	background: var(--bg-surface);2736	border: 1px solid var(--border);2737	border-radius: 3px;2738	color: var(--text);2739	font-size: 0.75rem;2740	line-height: 1.6;2741}2742.editor-input:focus {2743	outline: none;2744	border-color: var(--accent-dim);2745}2746.editor-preview {2747	min-width: 0;2748	max-height: 70vh;2749	overflow-y: auto;2750	padding: 0 4px;2751}2752.editor-preview:empty::before {2753	content: attr(data-empty);2754	font-family: var(--mono);2755	font-size: 0.625rem;2756	color: var(--text-faint);2757}27582759/* ----- file viewer (Kepr 2's Atlas modal) -------------------------------- */27602761body:has(> .fv-overlay) {2762	overflow: hidden;2763}2764.fv-overlay {2765	position: fixed;2766	inset: 0;2767	z-index: 2000;2768	display: flex;2769	flex-direction: column;2770	background: rgba(13, 8, 5, 0.97);2771	outline: none;2772	animation: fv-in 200ms ease both;2773}2774@keyframes fv-in {2775	from {2776		opacity: 0;2777		transform: translateY(6px) scale(0.97);2778	}2779}2780.fv-header {2781	display: flex;2782	align-items: center;2783	gap: 16px;2784	flex-shrink: 0;2785	height: 48px;2786	padding: 0 20px;2787	background: var(--bg);2788	border-bottom: 1px solid var(--bg-elevated);2789}2790.fv-close {2791	background: none;2792	border: 0;2793	padding: 0 4px;2794	font-size: 1.375rem;2795	line-height: 1;2796	color: var(--text-faint);2797	cursor: pointer;2798}2799.fv-close:hover {2800	color: var(--accent);2801}2802.fv-title {2803	display: flex;2804	align-items: baseline;2805	gap: 8px;2806	flex: 1;2807	min-width: 0;2808}2809.fv-name {2810	font-size: 1.25rem;2811	color: var(--text-heading);2812	white-space: nowrap;2813}2814.fv-path {2815	font-size: 0.625rem;2816	color: var(--text-faint);2817	white-space: nowrap;2818	overflow: hidden;2819	text-overflow: ellipsis;2820}2821.fv-controls,2822.fv-nav {2823	display: flex;2824	align-items: center;2825	gap: 4px;2826	flex-shrink: 0;2827}2828.fv-ctrl-btn {2829	background: transparent;2830	border: 1px solid rgba(255, 173, 51, 0.2);2831	border-radius: 2px;2832	padding: 3px 7px;2833	font: inherit;2834	font-size: 0.625rem;2835	color: var(--text-faint);2836	cursor: pointer;2837	transition:2838		color 100ms,2839		border-color 100ms;2840}2841.fv-ctrl-btn:hover:not(:disabled),2842.fv-ctrl-btn.active {2843	color: var(--accent);2844	border-color: rgba(255, 173, 51, 0.5);2845	text-decoration: none;2846}2847.fv-ctrl-btn:disabled {2848	opacity: 0.3;2849	cursor: default;2850}2851.fv-pos {2852	min-width: 48px;2853	text-align: center;2854	font-size: 0.625rem;2855	color: var(--text-faint);2856}2857.fv-body {2858	flex: 1;2859	min-height: 0;2860	display: grid;2861	grid-template-columns: minmax(0, 1fr) 280px;2862}2863.fv-source {2864	min-height: 0;2865	overflow: auto;2866	padding: 16px 28px 32px;2867	font-family: var(--mono);2868	font-size: 0.6875rem;2869	color: var(--text-faint);2870}2871.fv-source .file-view {2872	margin: -16px -28px 0;2873	border: 0;2874	background: none;2875	overflow: visible;2876}2877.fv-source .code {2878	font-size: var(--fv-size);2879	color: var(--text);2880}2881.fv-wrap .fv-source .lc {2882	white-space: pre-wrap;2883	overflow-wrap: anywhere;2884}2885.fv-source .file-markdown {2886	font-family: var(--sans);2887	font-size: calc(var(--fv-size) + 2px);2888	color: var(--text);2889}2890.fv-detail .atlas-info-desc {2891	font-size: 0.8125rem;2892}2893.fv-detail {2894	overflow-y: auto;2895	padding: 18px 20px 24px;2896	background: var(--bg);2897	border-left: 1px solid var(--bg-elevated);2898}2899/* After the viewer's own rules, which would otherwise win at equal specificity. */2900@media (max-width: 768px) {2901	.fv-overlay {2902		background: var(--bg);2903	}2904	.fv-header {2905		flex-wrap: wrap;2906		height: auto;2907		padding: 8px 12px;2908		gap: 8px 12px;2909	}2910	.fv-title {2911		flex-basis: calc(100% - 40px);2912	}2913	.fv-body {2914		grid-template-columns: minmax(0, 1fr);2915	}2916	.fv-detail {2917		display: none;2918	}2919	.fv-source {2920		padding: 12px 16px 24px;2921	}2922	.fv-source .file-view {2923		margin: -12px -16px 0;2924	}2925}29262927/* Last in the file, after every animation it stops, so it wins without !important. */2928@media (prefers-reduced-motion: reduce) {2929	.tri-outer,2930	.tri-inner,2931	.repo-name,2932	.repo-contributor,2933	.repo-desc,2934	.repo-homepage,2935	.repo-meta,2936	.repo-tabs,2937	.install-lines,2938	.repo-section,2939	.repo-details,2940	.save-message-head,2941	.ticker-row,2942	.ticker-track,2943	.hex-col,2944	.headline h1,2945	.headline-tagline,2946	.headline-cloud,2947	.repo-card,2948	.profile-username,2949	.profile-event,2950	.fv-overlay,2951	.repo-panel {2952		animation: none;2953	}2954	.nav-toggle span {2955		transition: none;2956	}2957	.hex-col {2958		opacity: 0.12;2959	}2960}29612962/* ----- fonts: served by Kepr itself; licences beside them in /static/fonts ----- */29632964/* latin */2965@font-face {2966	font-family: "Bellota";2967	font-style: normal;2968	font-weight: 700;2969	font-display: swap;2970	src: url(/static/fonts/bellota-latin-700-normal.woff2) format("woff2");2971	unicode-range:2972		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;2973}29742975/* cyrillic */2976@font-face {2977	font-family: "Bellota";2978	font-style: normal;2979	font-weight: 700;2980	font-display: swap;2981	src: url(/static/fonts/bellota-cyrillic-700-normal.woff2) format("woff2");2982	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;2983}29842985/* latin-ext */2986@font-face {2987	font-family: "Bellota";2988	font-style: normal;2989	font-weight: 700;2990	font-display: swap;2991	src: url(/static/fonts/bellota-latin-ext-700-normal.woff2) format("woff2");2992	unicode-range:2993		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;2994}29952996/* vietnamese */2997@font-face {2998	font-family: "Bellota";2999	font-style: normal;3000	font-weight: 700;3001	font-display: swap;3002	src: url(/static/fonts/bellota-vietnamese-700-normal.woff2) format("woff2");3003	unicode-range:3004		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;3005}30063007/* greek */3008@font-face {3009	font-family: "Comfortaa";3010	font-style: normal;3011	font-weight: 700;3012	font-stretch: 100%;3013	font-display: swap;3014	src: url(/static/fonts/comfortaa-greek-700-normal.woff2) format("woff2");3015	unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;3016}30173018/* latin */3019@font-face {3020	font-family: "Comfortaa";3021	font-style: normal;3022	font-weight: 700;3023	font-stretch: 100%;3024	font-display: swap;3025	src: url(/static/fonts/comfortaa-latin-700-normal.woff2) format("woff2");3026	unicode-range:3027		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;3028}30293030/* cyrillic */3031@font-face {3032	font-family: "Comfortaa";3033	font-style: normal;3034	font-weight: 700;3035	font-stretch: 100%;3036	font-display: swap;3037	src: url(/static/fonts/comfortaa-cyrillic-700-normal.woff2) format("woff2");3038	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;3039}30403041/* latin-ext */3042@font-face {3043	font-family: "Comfortaa";3044	font-style: normal;3045	font-weight: 700;3046	font-stretch: 100%;3047	font-display: swap;3048	src: url(/static/fonts/comfortaa-latin-ext-700-normal.woff2) format("woff2");3049	unicode-range:3050		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;3051}30523053/* vietnamese */3054@font-face {3055	font-family: "Comfortaa";3056	font-style: normal;3057	font-weight: 700;3058	font-stretch: 100%;3059	font-display: swap;3060	src: url(/static/fonts/comfortaa-vietnamese-700-normal.woff2) format("woff2");3061	unicode-range:3062		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;3063}30643065/* cyrillic-ext */3066@font-face {3067	font-family: "Comfortaa";3068	font-style: normal;3069	font-weight: 700;3070	font-stretch: 100%;3071	font-display: swap;3072	src: url(/static/fonts/comfortaa-cyrillic-ext-700-normal.woff2) format("woff2");3073	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;3074}30753076/* latin */3077@font-face {3078	font-family: "Martian Mono";3079	font-style: normal;3080	font-weight: 400;3081	font-stretch: 100%;3082	font-display: swap;3083	src: url(/static/fonts/martian-mono-latin-400-normal.woff2) format("woff2");3084	unicode-range:3085		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;3086}30873088/* cyrillic */3089@font-face {3090	font-family: "Martian Mono";3091	font-style: normal;3092	font-weight: 400;3093	font-stretch: 100%;3094	font-display: swap;3095	src: url(/static/fonts/martian-mono-cyrillic-400-normal.woff2) format("woff2");3096	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;3097}30983099/* latin-ext */3100@font-face {3101	font-family: "Martian Mono";3102	font-style: normal;3103	font-weight: 400;3104	font-stretch: 100%;3105	font-display: swap;3106	src: url(/static/fonts/martian-mono-latin-ext-400-normal.woff2) format("woff2");3107	unicode-range:3108		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;3109}31103111/* cyrillic-ext */3112@font-face {3113	font-family: "Martian Mono";3114	font-style: normal;3115	font-weight: 400;3116	font-stretch: 100%;3117	font-display: swap;3118	src: url(/static/fonts/martian-mono-cyrillic-ext-400-normal.woff2) format("woff2");3119	unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;3120}31213122/* latin */3123@font-face {3124	font-family: "Quicksand";3125	font-style: normal;3126	font-weight: 400;3127	font-stretch: 100%;3128	font-display: swap;3129	src: url(/static/fonts/quicksand-latin-400-normal.woff2) format("woff2");3130	unicode-range:3131		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;3132}31333134/* latin-ext */3135@font-face {3136	font-family: "Quicksand";3137	font-style: normal;3138	font-weight: 400;3139	font-stretch: 100%;3140	font-display: swap;3141	src: url(/static/fonts/quicksand-latin-ext-400-normal.woff2) format("woff2");3142	unicode-range:3143		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;3144}31453146/* vietnamese */3147@font-face {3148	font-family: "Quicksand";3149	font-style: normal;3150	font-weight: 400;3151	font-stretch: 100%;3152	font-display: swap;3153	src: url(/static/fonts/quicksand-vietnamese-400-normal.woff2) format("woff2");3154	unicode-range:3155		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;3156}31573158/* latin */3159@font-face {3160	font-family: "Quicksand";3161	font-style: normal;3162	font-weight: 600;3163	font-stretch: 100%;3164	font-display: swap;3165	src: url(/static/fonts/quicksand-latin-600-normal.woff2) format("woff2");3166	unicode-range:3167		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;3168}31693170/* latin-ext */3171@font-face {3172	font-family: "Quicksand";3173	font-style: normal;3174	font-weight: 600;3175	font-stretch: 100%;3176	font-display: swap;3177	src: url(/static/fonts/quicksand-latin-ext-600-normal.woff2) format("woff2");3178	unicode-range:3179		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;3180}31813182/* vietnamese */3183@font-face {3184	font-family: "Quicksand";3185	font-style: normal;3186	font-weight: 600;3187	font-stretch: 100%;3188	font-display: swap;3189	src: url(/static/fonts/quicksand-vietnamese-600-normal.woff2) format("woff2");3190	unicode-range:3191		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;3192}31933194/* latin */3195@font-face {3196	font-family: "Sacramento";3197	font-style: normal;3198	font-weight: 400;3199	font-display: swap;3200	src: url(/static/fonts/sacramento-latin-400-normal.woff2) format("woff2");3201	unicode-range:3202		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;3203}32043205/* latin-ext */3206@font-face {3207	font-family: "Sacramento";3208	font-style: normal;3209	font-weight: 400;3210	font-display: swap;3211	src: url(/static/fonts/sacramento-latin-ext-400-normal.woff2) format("woff2");3212	unicode-range:3213		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;3214}