kepr.css

61.6 KB · raw

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