kepr.css

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