kepr.css

47.3 KB · raw

1/* Kepr 3: Kepr 2's look (kepr.uk, gold theme), ported only as far as the pages that exist use it. */23:root {4	--bg: #090706;5	--bg-surface: #0e0c09;6	--bg-elevated: #1b1710;7	--border: #2a2018;8	--text: #c8b898;9	--text-secondary: #7a6a50;10	--text-muted: #7a6a50;11	--text-faint: #4a3a28;12	--text-heading: #e8d8b8;13	--accent: #c89a5a;14	--accent-bright: #d9b88c;15	--accent-dim: #85663c;16	--accent-flash: #5a88c8;17	--red-flash: #c8483a;18	--accent-tint-04: rgba(200, 154, 90, 0.04);19	--accent-tint-12: rgba(200, 154, 90, 0.12);20	--sage: #7a9a68;21	--sans: "Quicksand", system-ui, sans-serif;22	--mono: "Martian Mono", ui-monospace, monospace;23}2425* {26	box-sizing: border-box;27	scrollbar-width: thin;28	scrollbar-color: var(--border) transparent;29}3031html,32body {33	margin: 0;34	padding: 0;35	background: var(--bg);36	color: var(--text);37	font-family: var(--sans);38	font-size: 16px;39	line-height: 1.6;40	overflow-x: hidden;41}4243a {44	color: inherit;45	text-decoration: none;46}47a:hover {48	text-decoration: underline;49	text-decoration-color: var(--accent);50	text-decoration-thickness: 1px;51	text-underline-offset: 4px;52}5354/* ----- top bar ------------------------------------------------------------ */5556body > nav {57	display: flex;58	align-items: center;59	padding: 24px 48px;60	font-size: 0.6875rem;61	letter-spacing: 0.04em;62}63.wordmark {64	display: flex;65	color: var(--accent);66}67.wordmark:hover {68	text-decoration: none;69}70.wordmark-icon {71	display: block;72	width: 32px;73	height: 32px;74	color: var(--accent);75}76.wordmark-icon polygon {77	fill: none;78	stroke: currentColor;79	stroke-linejoin: round;80}81.tri-outer polygon {82	stroke-width: 2;83}84.tri-inner polygon {85	stroke-width: 1.5;86}87.tri-outer,88.tri-inner {89	transform-origin: 16px 16px;90}91/* The outer triangle stays gold; the inner one flashes red now and then. */92.tri-outer {93	animation: tri-ccw 12s linear infinite;94}95.tri-inner {96	animation:97		tri-cw 8s linear infinite,98		red-flash 11s ease-in-out infinite;99}100@keyframes tri-ccw {101	to {102		transform: rotate(-360deg);103	}104}105@keyframes tri-cw {106	to {107		transform: rotate(360deg);108	}109}110@keyframes red-flash {111	0%,112	90%,113	100% {114		color: var(--accent);115	}116	95% {117		color: var(--red-flash);118	}119}120.wordmark-by {121	margin-left: 10px;122	font-size: 0.625rem;123	color: var(--text-faint);124	letter-spacing: 0.03em;125}126.nav-links {127	margin-left: auto;128	display: inline-flex;129	gap: 28px;130	font-family: var(--mono);131}132.nav-links a {133	color: var(--text-secondary);134}135.nav-logout {136	margin: 0;137}138.nav-logout button {139	border: 0;140	padding: 0;141	background: none;142	color: var(--text-secondary);143	font: inherit;144	letter-spacing: inherit;145	cursor: pointer;146}147.nav-logout button:hover {148	text-decoration: underline;149	text-decoration-color: var(--accent);150}151152main {153	max-width: 980px;154	margin: 0 auto;155	padding: 24px 48px 120px;156}157158footer {159	text-align: center;160	padding: 80px 24px 48px;161}162footer .credit {163	font-family: var(--mono);164	font-size: 0.6875rem;165	color: var(--text-muted);166}167168.mono {169	font-family: var(--mono);170	font-size: 0.8125rem;171	color: var(--text-secondary);172}173.muted {174	color: var(--text-muted);175}176177@keyframes fadeUp {178	from {179		opacity: 0;180		transform: translateY(6px);181	}182	to {183		opacity: 1;184		transform: translateY(0);185	}186}187@keyframes fadeIn {188	from {189		opacity: 0;190	}191}192193/* ----- repo header -------------------------------------------------------- */194195.repo-head {196	margin: 20px 0 24px;197}198.repo-name {199	font-family: "Comfortaa", var(--sans);200	font-weight: 700;201	font-size: 4rem;202	line-height: 1.05;203	margin: -0.1em 0 10px;204	color: var(--text);205	overflow-wrap: anywhere;206	animation: fadeUp 280ms ease both;207}208.repo-contributor {209	margin: 4px 0 0;210	font-size: 0.8125rem;211	animation: fadeUp 280ms 40ms ease both;212}213.repo-contributor a:hover {214	color: var(--accent);215}216.repo-desc,217.repo-homepage {218	margin: 0 0 10px;219	font-size: 1.0625rem;220	color: var(--text-secondary);221	line-height: 1.75;222	animation: fadeUp 280ms 30ms ease both;223}224.repo-desc p {225	margin: 12px 0 0;226}227.repo-desc a,228.repo-homepage a {229	color: var(--accent);230}231.repo-desc code {232	font-family: var(--mono);233	font-size: 0.85em;234	color: var(--accent);235}236.lang-badges {237	display: flex;238	flex-wrap: wrap;239	gap: 6px;240	margin: 8px 0 6px;241}242.lang-badge {243	font-family: var(--mono);244	font-size: 0.6875rem;245	color: var(--accent-dim);246	background: var(--bg-surface);247	border: 1px solid var(--border);248	border-radius: 3px;249	padding: 1px 7px;250	letter-spacing: 0.02em;251}252.repo-meta {253	margin: 0;254	font-size: 0.875rem;255	color: var(--text-muted);256	line-height: 1.7;257	animation: fadeUp 280ms 60ms ease both;258}259.repo-tabbar {260	display: flex;261	align-items: center;262	justify-content: space-between;263	flex-wrap: wrap;264	gap: 14px 20px;265	margin-top: 22px;266}267.repo-tabs {268	display: flex;269	gap: 24px;270	flex-wrap: wrap;271	font-family: var(--mono);272	animation: fadeUp 280ms 90ms ease both;273}274.repo-tab {275	font-size: 0.6875rem;276	color: var(--text-muted);277	padding: 0 0 11px;278	border-bottom: 1px solid transparent;279	transition:280		color 140ms,281		border-color 140ms;282}283.repo-tab:hover {284	color: var(--accent);285	text-decoration: none;286}287.repo-tab.active {288	color: var(--accent);289	border-bottom-color: var(--accent);290}291.repo-panel {292	padding: 10px 0 16px;293	animation: fadeIn 220ms ease both;294}295.repo-panel[hidden] {296	display: none;297}298/* Inline, archives and builds show about five entries and scroll; their own pages show all. */299.repo-panel .repo-section:has(> .archive-row, > .release-latest) {300	max-height: 420px;301	overflow-y: auto;302	scrollbar-width: thin;303	scrollbar-color: var(--border) transparent;304}305.repo-steal-btn {306	display: block;307	width: fit-content;308	max-width: 100%;309	font-family: var(--mono);310	font-size: 0.75rem;311	color: var(--text-muted);312	background: var(--bg-surface);313	border: 1px solid var(--border);314	border-radius: 3px;315	padding: 5px 11px;316	cursor: pointer;317	letter-spacing: 0.03em;318	white-space: nowrap;319	overflow: hidden;320	text-overflow: ellipsis;321	transition:322		color 120ms,323		border-color 120ms;324}325.repo-steal-btn:hover,326.repo-steal-btn.copied {327	color: var(--accent);328	border-color: var(--accent-dim);329}330.install-lines {331	display: flex;332	flex-direction: column;333	align-items: flex-end;334	gap: 6px;335	max-width: 100%;336	margin-left: auto;337	animation: fadeUp 280ms 120ms ease both;338}339.install-line {340	display: flex;341	align-items: center;342	gap: 12px;343	max-width: 100%;344	font-family: var(--mono);345	font-size: 0.75rem;346	color: var(--text-muted);347	background: var(--bg-surface);348	border: 1px solid var(--border);349	border-radius: 3px;350	padding: 5px 11px;351}352.install-line code {353	white-space: pre;354	overflow-x: auto;355	font-family: inherit;356}357.copy-btn {358	background: none;359	border: 0;360	padding: 0;361	cursor: pointer;362	font: inherit;363	font-size: 0.625rem;364	color: var(--text-faint);365	letter-spacing: 0.04em;366}367.copy-btn:hover,368.copy-btn.copied {369	color: var(--accent);370}371372/* ----- sections ----------------------------------------------------------- */373374.repo-section {375	margin: 36px 0 0;376	animation: fadeIn 320ms 80ms ease both;377}378.repo-section-toggle > summary,379.repo-details-toggle > summary {380	list-style: none;381	cursor: pointer;382	user-select: none;383}384.repo-section-toggle > summary::-webkit-details-marker,385.repo-details-toggle > summary::-webkit-details-marker {386	display: none;387}388.section-head {389	display: flex;390	align-items: baseline;391	gap: 12px;392	padding-bottom: 8px;393	border-bottom: 1px solid var(--border);394	margin-bottom: 4px;395}396.section-head::after,397.repo-details-head::after {398	content: "▸";399	font-size: 0.5625rem;400	opacity: 0.4;401	transition: transform 120ms;402}403.section-head::after {404	margin-left: auto;405}406details[open] > .section-head::after,407details[open] > .repo-details-head::after {408	transform: rotate(90deg);409}410.section-label {411	font-size: 0.6875rem;412	letter-spacing: 0.12em;413	color: var(--text-secondary);414	text-transform: uppercase;415}416.section-count {417	font-family: var(--mono);418	font-size: 0.6875rem;419	color: var(--accent);420}421422/* ----- timeline ----------------------------------------------------------- */423424.timeline {425	display: block;426	margin: 18px 0 4px;427	overflow: visible;428}429.timeline-line {430	stroke: var(--text-faint);431	stroke-width: 1;432	stroke-dasharray: 4 4;433}434.timeline .dot circle {435	fill: var(--accent);436	transition:437		fill-opacity 120ms,438		r 120ms;439}440.timeline .d0 circle {441	fill: var(--accent-dim);442	fill-opacity: 0.45;443}444.timeline .d1 circle {445	fill-opacity: 0.55;446}447.timeline .d2 circle {448	fill-opacity: 0.8;449}450.timeline .d3 circle {451	fill: var(--accent-bright);452	fill-opacity: 1;453}454.timeline .dot:hover circle,455.timeline .dot:focus circle {456	fill: var(--accent-bright);457	fill-opacity: 1;458}459.timeline-canvas {460	display: block;461	margin: 18px 0 4px;462	cursor: grab;463	touch-action: pan-y;464}465.timeline-tip {466	position: fixed;467	z-index: 200;468	max-width: 340px;469	padding: 0.45rem 0.7rem;470	background: #0f0c08;471	border: 1px solid var(--border);472	border-radius: 4px;473	pointer-events: none;474	line-height: 1.5;475}476.timeline-tip .tip-id {477	font-family: var(--mono);478	font-size: 12px;479	color: var(--accent);480}481.timeline-tip .tip-msg {482	margin-top: 3px;483	font-style: italic;484	font-size: 15px;485	color: var(--text-heading);486}487.timeline-tip .tip-meta {488	margin-top: 4px;489	font-family: var(--mono);490	font-size: 10px;491	color: var(--text-muted);492}493494/* ----- history ------------------------------------------------------------ */495496.history-row {497	position: relative;498	display: grid;499	grid-template-columns: 110px 1fr auto;500	align-items: baseline;501	gap: 0 10px;502	padding: 9px 8px;503	border-bottom: 1px solid var(--border);504	transition: background 100ms;505}506.history-row::before {507	content: "";508	position: absolute;509	left: 0;510	top: 0;511	bottom: 0;512	width: 2px;513	background: var(--accent);514	transform: scaleY(0);515	transition: transform 120ms ease;516}517.history-row:hover {518	background: var(--accent-tint-04);519	text-decoration: none;520}521.history-row:hover::before {522	transform: scaleY(1);523}524.history-id {525	font-family: var(--mono);526	font-size: 0.75rem;527	color: var(--text-secondary);528}529.history-msg {530	min-width: 0;531	line-height: 1.7;532	overflow: hidden;533	text-overflow: ellipsis;534	white-space: nowrap;535	transition: color 100ms;536}537.history-row:hover .history-msg {538	color: var(--accent);539}540.history-when {541	font-family: var(--mono);542	font-size: 0.6875rem;543	color: var(--text-muted);544	white-space: nowrap;545}546/* Kepr 2's history: four rows at a time, the rest a scroll away. */547.save-list {548	max-height: 180px;549	overflow-y: auto;550	scrollbar-width: thin;551	scrollbar-color: var(--border) transparent;552}553.pager {554	display: flex;555	justify-content: space-between;556	margin: 14px 0 0;557	font-size: 0.6875rem;558}559.pager a:last-child {560	margin-left: auto;561}562.pager a:hover {563	color: var(--accent);564}565566/* ----- atlas -------------------------------------------------------------- */567568.atlas-bar {569	display: flex;570	align-items: center;571	flex-wrap: wrap;572	gap: 8px 14px;573	margin: 10px 0 8px;574	font-size: 0.625rem;575}576.atlas-picker {577	position: relative;578}579/* Each section's fade-in makes it a stacking context, so the picker's popover would sit under the580   sections after it; the Atlas's section is lifted above them. */581#atlas {582	position: relative;583	z-index: 2;584}585.atlas-picker [hidden] {586	display: none;587}588.atlas-ref-tab {589	list-style: none;590	cursor: pointer;591	padding: 4px 8px;592	background: var(--bg);593	border: 1px solid rgba(200, 154, 90, 0.45);594	border-radius: 2px;595	font-size: 0.625rem;596	color: var(--accent);597}598.atlas-ref-tab::-webkit-details-marker {599	display: none;600}601.atlas-ref-tab:hover {602	color: var(--accent-dim);603}604.atlas-picker-popover {605	position: absolute;606	top: calc(100% + 6px);607	left: 0;608	z-index: 50;609	display: flex;610	flex-direction: column;611	width: min(420px, 90vw);612	max-height: 480px;613	background: var(--bg);614	border: 1px solid var(--text-faint);615	box-shadow: 0 18px 48px rgba(0, 0, 0, 0.48);616}617.atlas-picker-filter {618	padding: 8px 10px;619	background: var(--bg);620	border: 0;621	border-bottom: 1px solid var(--bg-elevated);622	outline: none;623	font-size: 0.6875rem;624	color: var(--text-heading);625}626.atlas-picker-filter::placeholder {627	color: var(--text-faint);628}629.atlas-picker-list {630	flex: 1 1 auto;631	min-height: 0;632	overflow: auto;633	scrollbar-width: thin;634	scrollbar-color: var(--border) transparent;635}636.atlas-picker-row {637	display: grid;638	grid-template-columns: 80px 1fr auto;639	align-items: center;640	gap: 8px;641	padding: 6px 10px;642	border-bottom: 1px solid rgba(42, 32, 24, 0.4);643	color: var(--text-muted);644}645.atlas-picker-row:hover {646	background: rgba(200, 154, 90, 0.06);647	text-decoration: none;648}649.atlas-picker-row.active {650	background: rgba(200, 154, 90, 0.1);651}652.atlas-picker-row:hover *,653.atlas-picker-row.active * {654	color: var(--accent);655}656.atlas-picker-id,657.atlas-picker-age {658	font-family: var(--mono);659	font-size: 0.5625rem;660	color: var(--text-faint);661	white-space: nowrap;662	overflow: hidden;663	text-overflow: ellipsis;664}665.atlas-picker-msg {666	font-size: 0.6875rem;667	white-space: nowrap;668	overflow: hidden;669	text-overflow: ellipsis;670}671.atlas-head-link {672	color: var(--accent);673}674.atlas-fold-btn {675	margin-left: auto;676}677.atlas-fold-btn,678.atlas-search-btn {679	padding: 4px 8px;680	background: transparent;681	border: 1px solid var(--border);682	border-radius: 2px;683	font: inherit;684	font-size: 0.625rem;685	color: var(--text-faint);686	cursor: pointer;687}688.atlas-fold-btn:hover,689.atlas-search-btn:hover {690	color: var(--accent);691	border-color: var(--accent-dim);692}693.atlas-fold-btn[hidden],694.atlas-search-btn[hidden],695.atlas-filter[hidden] {696	display: none;697}698.atlas-filter {699	width: 220px;700	max-width: 100%;701	padding: 5px 10px;702	background: transparent;703	border: 1px solid var(--border);704	border-radius: 3px;705	color: var(--text);706	font-size: 0.6875rem;707}708.atlas-filter:focus {709	outline: none;710	border-color: var(--accent-dim);711}712.atlas-filter::placeholder {713	color: var(--text-faint);714}715/* kepr.js fixes the height at the closed tree's, at most Kepr 2's 520px, and the tree and panel716   scroll inside it; without it, the whole box scrolls. */717.atlas {718	display: grid;719	grid-template-columns: minmax(0, 1fr);720	grid-template-rows: minmax(0, 1fr);721	gap: 0 20px;722	max-height: 520px;723	overflow-y: auto;724	border-top: 1px solid var(--bg-elevated);725	border-bottom: 1px solid var(--bg-elevated);726}727.atlas-tree,728.atlas-panel {729	min-height: 0;730	overflow-y: auto;731	scrollbar-width: thin;732	scrollbar-color: var(--border) transparent;733}734.atlas:has(> .atlas-panel:not([hidden])) {735	grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);736}737.atlas [hidden] {738	display: none;739}740.atlas-folder > summary {741	list-style: none;742}743.atlas-folder > summary::-webkit-details-marker {744	display: none;745}746.atlas-children {747	padding-left: 14px;748	border-left: 1px solid var(--border);749	margin-left: 6px;750}751.atlas-row {752	position: relative;753	display: grid;754	grid-template-columns: minmax(90px, auto) 1fr auto;755	align-items: baseline;756	gap: 0 12px;757	padding: 6px 8px;758	border-bottom: 1px solid rgba(42, 32, 24, 0.62);759	cursor: pointer;760	transition: background 100ms;761}762.atlas-row:hover,763.atlas-row:focus-visible,764.atlas-row.selected {765	outline: none;766	background: var(--accent-tint-04);767	text-decoration: none;768}769.atlas-row.selected {770	box-shadow: inset 2px 0 0 var(--accent);771}772.atlas-name {773	color: var(--text-heading);774	font-size: 0.875rem;775	white-space: nowrap;776}777.atlas-folder > summary .atlas-name {778	color: var(--accent);779}780.atlas-desc {781	min-width: 0;782	color: var(--text-muted);783	font-size: 0.8125rem;784	overflow: hidden;785	text-overflow: ellipsis;786	white-space: nowrap;787}788.atlas-meta {789	font-size: 0.625rem;790	color: var(--text-faint);791	white-space: nowrap;792}793.atlas-panel {794	padding: 12px 0 12px 16px;795	border-left: 1px solid var(--border);796}797.atlas-hint {798	margin: 0;799	font-size: 0.625rem;800	color: var(--text-faint);801}802.atlas-info-name {803	margin: 0;804	font-weight: 400;805	font-size: 1.375rem;806	color: var(--text-heading);807	overflow-wrap: anywhere;808}809.atlas-info-path {810	margin: 0 0 12px;811	font-size: 0.625rem;812	color: var(--text-faint);813	overflow-wrap: anywhere;814}815.atlas-facts {816	display: grid;817	grid-template-columns: auto 1fr;818	gap: 3px 12px;819	margin: 0 0 12px;820	font-size: 0.625rem;821}822.atlas-facts dt {823	color: var(--text-faint);824}825.atlas-facts dd {826	margin: 0;827	color: var(--text);828}829.atlas-facts a {830	color: var(--accent);831}832.atlas-info-desc {833	font-size: 0.8125rem;834	color: var(--text-muted);835}836/* ----- README and rendered Markdown --------------------------------------- */837838.repo-details {839	margin: 36px 0 0;840	animation: fadeIn 320ms 80ms ease both;841}842.repo-details-toggle {843	border-bottom: 1px solid var(--border);844	padding-bottom: 24px;845}846.repo-details-head {847	display: flex;848	align-items: center;849	gap: 6px;850	padding: 8px 0;851	font-family: var(--mono);852	font-size: 0.6875rem;853	letter-spacing: 0.12em;854	color: var(--text-secondary);855	text-transform: uppercase;856}857.markdown {858	font-size: 1.05rem;859	line-height: 1.7;860	overflow-wrap: break-word;861}862.markdown h1,863.markdown h2,864.markdown h3,865.markdown h4 {866	font-weight: 400;867	margin: 1.4em 0 0.4em;868	color: var(--text-heading);869}870.markdown h1 {871	font-size: 1.5rem;872}873.markdown h2 {874	font-size: 1.3rem;875}876.markdown h3 {877	font-size: 1.15rem;878}879.markdown p {880	margin: 0.8em 0;881}882.markdown ul,883.markdown ol {884	margin: 0.8em 0 0.8em 1.5em;885	padding: 0;886}887.markdown a {888	color: var(--accent);889}890.markdown code {891	font-family: var(--mono);892	font-size: 0.82em;893	color: var(--accent);894	background: var(--bg-surface);895	padding: 0.15em 0.35em;896	border-radius: 3px;897}898.markdown pre {899	background: var(--bg-surface);900	border-radius: 4px;901	padding: 1em 1.2em;902	overflow-x: auto;903	margin: 1em 0;904}905.markdown pre code {906	background: none;907	padding: 0;908	color: var(--text);909	font-size: 0.85em;910}911.markdown blockquote {912	border-left: 3px solid var(--border);913	margin: 1em 0;914	padding: 0.1em 1em;915	color: var(--text-secondary);916}917.markdown hr {918	border: none;919	border-top: 1px solid var(--border);920	margin: 1.5em 0;921}922.markdown img {923	max-width: 100%;924}925.markdown table {926	border-collapse: collapse;927	display: block;928	overflow-x: auto;929}930.markdown th,931.markdown td {932	border: 1px solid var(--border);933	padding: 4px 10px;934}935936/* ----- file viewer -------------------------------------------------------- */937938.breadcrumb {939	margin: 0 0 4px;940	font-size: 0.75rem;941	overflow-wrap: anywhere;942}943.breadcrumb a:hover {944	color: var(--accent);945}946.file-page-title {947	font-size: 1.75rem;948	font-weight: 400;949	margin: 4px 0 12px;950	overflow-wrap: anywhere;951}952.file-meta,953.file-toggle {954	margin: 0 0 12px;955	font-size: 0.6875rem;956}957.file-meta a,958.file-toggle a.active {959	color: var(--accent);960}961.file-image img {962	max-width: 100%;963	background: var(--bg-surface);964	border: 1px solid var(--border);965}966.file-view {967	border: 1px solid var(--border);968	background: var(--bg-surface);969	overflow-x: auto;970}971.code {972	margin: 0;973	padding: 16px 0;974	font-family: var(--mono);975	font-size: 0.8125rem;976	line-height: 1.65;977	tab-size: 4;978}979/* A grid, so tab stops count from the start of the code rather than the line number. */980.code .line {981	display: grid;982	grid-template-columns: 6em 1fr;983	padding-right: 24px;984	scroll-margin-top: 40vh;985}986.code .line:target,987.code .line.hl {988	background: var(--accent-tint-12);989}990.code .lc {991	white-space: pre;992}993.code .ln {994	padding-right: 1.5em;995	text-align: right;996	color: var(--text-faint);997	user-select: none;998}999.code .ln:hover {1000	color: var(--accent);1001	text-decoration: none;1002}10031004/* Shiki's CSS-variables theme roles, in Kepr 2's highlight.js colours. */1005.tk-comment {1006	color: var(--text-muted);1007	font-style: italic;1008}1009.tk-keyword {1010	color: var(--accent);1011}1012.tk-string,1013.tk-string-expression {1014	color: var(--sage);1015}1016.tk-constant {1017	color: var(--accent-bright);1018}1019.tk-function {1020	color: var(--accent);1021}1022.tk-parameter {1023	color: var(--text);1024}1025.tk-punctuation {1026	color: var(--text-secondary);1027}1028.tk-link {1029	color: var(--accent);1030	text-decoration: underline;1031}1032.tk-inserted {1033	color: var(--sage);1034}1035.tk-deleted {1036	color: #c45c5c;1037}1038.tk-i {1039	font-style: italic;1040}10411042/* ----- save page ---------------------------------------------------------- */10431044.save-id {1045	margin: 12px 0 0;1046	font-size: 0.75rem;1047	color: var(--text-secondary);1048}1049.save-flag {1050	margin: 12px 0 0;1051	padding: 8px 12px;1052	border: 1px solid #6a3a2a;1053	border-left: 2px solid #c45c5c;1054	background: rgba(196, 92, 92, 0.08);1055	color: var(--text-heading);1056}1057.save-flag-label {1058	margin-right: 8px;1059	font-size: 0.625rem;1060	letter-spacing: 0.12em;1061	text-transform: uppercase;1062	color: #c45c5c;1063}1064.save-message-head {1065	font-size: 2.25rem;1066	font-weight: 400;1067	line-height: 1.3;1068	margin: 12px 0 8px;1069	color: var(--text-heading);1070	overflow-wrap: anywhere;1071	animation: fadeUp 280ms ease both;1072}1073.save-message-body {1074	margin: 0 0 12px;1075	white-space: pre-wrap;1076	color: var(--text-secondary);1077}1078.save-facts {1079	display: grid;1080	grid-template-columns: max-content 1fr;1081	gap: 2px 16px;1082	margin: 16px 0;1083	font-size: 0.75rem;1084}1085.save-facts dt {1086	color: var(--text-faint);1087}1088.save-facts dd {1089	margin: 0;1090	overflow-wrap: anywhere;1091}1092.save-facts a,1093.save-links a,1094.diff-view a {1095	color: var(--accent);1096}1097.save-links {1098	display: flex;1099	flex-wrap: wrap;1100	gap: 8px 20px;1101	margin: 0;1102	font-size: 0.75rem;1103}1104.save-empty {1105	font-size: 0.75rem;1106}1107.change-row,1108.diff-head {1109	display: grid;1110	grid-template-columns: 1fr auto;1111	gap: 12px;1112	padding: 7px 8px;1113	border-bottom: 1px solid var(--border);1114	font-family: var(--mono);1115	font-size: 0.8125rem;1116}1117.change-row:hover {1118	background: var(--accent-tint-04);1119	text-decoration: none;1120}1121.change-path {1122	min-width: 0;1123	overflow-wrap: anywhere;1124}1125.change-added .change-path {1126	color: var(--sage);1127}1128.change-removed .change-path {1129	color: var(--text-muted);1130	text-decoration: line-through;1131}1132.change-modified .change-path {1133	color: var(--accent-bright);1134}1135.change-stat {1136	font-size: 0.75rem;1137	white-space: nowrap;1138}1139.diff-add {1140	color: var(--sage);1141}1142.diff-del {1143	color: #c45c5c;1144}1145.diff-note {1146	color: var(--text-faint);1147	font-size: 0.6875rem;1148}1149.diff-file {1150	margin: 0 0 20px;1151}1152.diff-head {1153	cursor: pointer;1154	list-style: none;1155	border: 1px solid var(--border);1156	background: var(--bg-surface);1157}1158.diff-head::-webkit-details-marker {1159	display: none;1160}1161.diff-file > .file-view {1162	border-top: 0;1163}1164.diff-file > .diff-note,1165.diff-view {1166	margin: 8px 0 0;1167	font-size: 0.6875rem;1168}1169.code.diff {1170	padding: 4px 0;1171}1172.diff .dl {1173	display: grid;1174	grid-template-columns: 3.5em 3.5em 1.5em 1fr;1175	padding-right: 24px;1176}1177.diff .dh {1178	display: block;1179	padding: 4px 1em;1180	color: var(--text-faint);1181	background: var(--bg-elevated);1182}1183.diff .ln {1184	padding-right: 0.75em;1185	text-align: right;1186	color: var(--text-faint);1187	user-select: none;1188}1189.diff .ds {1190	text-align: center;1191	color: var(--text-faint);1192	user-select: none;1193}1194.diff .dl-add {1195	background: rgba(122, 154, 104, 0.1);1196}1197.diff .dl-add .ds {1198	color: var(--sage);1199}1200.diff .dl-del {1201	background: rgba(196, 92, 92, 0.08);1202}1203.diff .dl-del .ds {1204	color: #c45c5c;1205}12061207/* ----- archives ----------------------------------------------------------- */12081209.archive-row {1210	padding: 12px 8px;1211	border-bottom: 1px solid var(--border);1212}1213.archive-save {1214	display: flex;1215	flex-wrap: wrap;1216	align-items: baseline;1217	gap: 0 10px;1218	margin: 0;1219}1220.archive-save .history-id {1221	flex: 0 0 110px;1222}1223.archive-msg {1224	flex: 1;1225}1226.archive-head {1227	font-size: 0.625rem;1228	letter-spacing: 0.08em;1229	color: var(--accent);1230	border: 1px solid var(--accent-dim);1231	border-radius: 2px;1232	padding: 0 6px;1233}1234.archive-save .history-id:hover {1235	color: var(--accent);1236}1237.archive-links {1238	display: flex;1239	flex-wrap: wrap;1240	align-items: center;1241	gap: 12px;1242	margin: 6px 0;1243	font-size: 0.75rem;1244}1245.archive-links a {1246	color: var(--accent);1247}1248.archive-row .install-line {1249	justify-content: space-between;1250}1251.archive-row--head {1252	background: var(--accent-tint-04);1253	border-top: 1px solid var(--accent-dim);1254}12551256/* ----- phone -------------------------------------------------------------- */12571258@media (max-width: 768px) {1259	body > nav {1260		padding: 20px 16px;1261	}1262	.nav-links {1263		gap: 18px;1264	}1265	main {1266		padding: 16px 16px 80px;1267	}1268	.repo-name {1269		font-size: 2.75rem;1270	}1271	.install-lines {1272		align-items: stretch;1273		margin-left: 0;1274		width: 100%;1275	}1276	.history-row {1277		grid-template-columns: 1fr auto;1278	}1279	.history-id {1280		grid-column: 1 / -1;1281	}1282	.atlas-row {1283		grid-template-columns: 1fr auto;1284	}1285	.atlas-desc {1286		grid-column: 1 / -1;1287		grid-row: 2;1288	}1289	.atlas:has(> .atlas-panel:not([hidden])) {1290		grid-template-columns: minmax(0, 1fr);1291	}1292	.atlas-panel {1293		display: none;1294	}1295	.code .line {1296		grid-template-columns: 4.5em 1fr;1297	}1298	.save-message-head {1299		font-size: 1.625rem;1300	}1301	.archive-msg {1302		flex-basis: 100%;1303		order: 1;1304	}1305	.diff .dl {1306		grid-template-columns: 2.75em 2.75em 1.25em 1fr;1307	}1308	.code .ln {1309		padding-right: 1em;1310	}1311}13121313/* ----- builds ------------------------------------------------------------- */13141315.release {1316	padding: 20px 8px 24px;1317	border-bottom: 1px solid var(--border);1318}1319.release-head {1320	display: flex;1321	flex-wrap: wrap;1322	align-items: baseline;1323	gap: 0 14px;1324	margin: 0 0 8px;1325}1326.release-version {1327	font-family: "Martian Mono", monospace;1328	font-size: 1rem;1329	color: var(--accent);1330}1331.release-latest .release-version {1332	font-size: clamp(2rem, 5vw, 3.5rem);1333	letter-spacing: -0.06em;1334}1335.release-latest > p {1336	font-size: 0.6875rem;1337	margin: 16px 8px 0;1338}1339.release-older > summary {1340	padding: 16px 8px;1341	font-size: 0.75rem;1342	color: var(--text-muted);1343	cursor: pointer;1344	border-bottom: 1px solid var(--border);1345}1346.release-head .history-id:hover {1347	color: var(--accent);1348}1349.release-notes {1350	margin-bottom: 14px;1351}1352.release-file {1353	padding: 10px 0;1354	border-top: 1px solid var(--border);1355}1356.release-file-head {1357	display: flex;1358	flex-wrap: wrap;1359	align-items: baseline;1360	gap: 4px 14px;1361	margin: 0;1362}1363.release-platform {1364	flex: 0 0 180px;1365}1366.release-download {1367	flex: 1;1368	font-size: 0.75rem;1369	color: var(--accent);1370	overflow-wrap: anywhere;1371}1372.release-meta,1373.release-sha {1374	font-size: 0.6875rem;1375	color: var(--text-muted);1376}1377.release-sha {1378	margin: 4px 0 0;1379	overflow-wrap: anywhere;1380}1381.release-hint {1382	margin: 4px 0 0;1383	font-size: 0.8125rem;1384}13851386/* ----- issues ------------------------------------------------------------- */13871388.issues-bar {1389	display: flex;1390	flex-wrap: wrap;1391	align-items: center;1392	gap: 8px 12px;1393	font-size: 0.75rem;1394	padding-bottom: 14px;1395	border-bottom: 1px solid var(--bg-elevated);1396}1397.issues-tab {1398	color: var(--text-faint);1399	border: 1px solid transparent;1400	border-radius: 999px;1401	padding: 4px 10px;1402}1403button.issues-tab {1404	font: inherit;1405	background: none;1406	cursor: pointer;1407}1408.issues-tab.active {1409	color: var(--accent);1410	border-color: var(--accent-tint-12);1411}1412.issues-new {1413	margin-left: auto;1414	color: var(--text-muted);1415}1416.issue-row {1417	display: grid;1418	grid-template-columns: auto minmax(0, 1fr) auto;1419	align-items: baseline;1420	gap: 2px 10px;1421	padding: 16px 8px;1422	border-bottom: 1px solid var(--border);1423}1424.issue-row:hover {1425	text-decoration: none;1426	background: var(--accent-tint-04);1427}1428.issue-title {1429	grid-column: 2 / -1;1430	overflow-wrap: anywhere;1431	color: var(--text-heading);1432}1433.issues-new:hover,1434.issue-row:hover .issue-title {1435	color: var(--accent);1436}1437.issue-meta,1438.issue-post-head {1439	font-size: 0.6875rem;1440	color: var(--text-muted);1441}1442.issue-symbol--open {1443	color: var(--accent);1444}1445.issue-symbol--closed {1446	color: var(--text-faint);1447}1448.issue-row .issue-meta {1449	grid-column: 2;1450}1451.issue-reporter {1452	font-size: 0.6875rem;1453	color: var(--text-muted);1454	overflow-wrap: anywhere;1455}1456.issues-filter {1457	display: flex;1458	flex-wrap: wrap;1459	gap: 8px;1460	margin-bottom: 16px;1461}1462.issue-post {1463	margin: 18px 0;1464	padding: 14px 18px;1465	border: 1px solid var(--border);1466	border-radius: 6px;1467	background: var(--bg-surface);1468}1469.issue-post--operator {1470	border-color: var(--accent-dim);1471}1472.issue-post-head {1473	display: flex;1474	flex-wrap: wrap;1475	gap: 4px 12px;1476	margin: 0 0 8px;1477}1478.issue-author {1479	color: var(--text);1480}1481.issue-badge {1482	color: var(--accent);1483	text-transform: uppercase;1484	letter-spacing: 0.08em;1485}1486.issue-text {1487	white-space: pre-wrap;1488	overflow-wrap: anywhere;1489}1490.issue-link {1491	font-size: 0.75rem;1492	overflow-wrap: anywhere;1493	color: var(--accent);1494}1495.issues-form {1496	display: flex;1497	flex-direction: column;1498	gap: 6px;1499	max-width: 640px;1500	margin-top: 18px;1501}1502.issues-label {1503	font-family: var(--mono);1504	font-size: 0.6875rem;1505	margin-top: 6px;1506	opacity: 0.8;1507}1508.issues-input,1509.issues-textarea {1510	font-family: var(--mono);1511	font-size: 0.75rem;1512	width: 100%;1513	padding: 6px 8px;1514	color: var(--text);1515	background: var(--bg);1516	border: 1px solid var(--border);1517	border-radius: 4px;1518	resize: vertical;1519}1520.issues-input:focus,1521.issues-textarea:focus {1522	outline: none;1523	border-color: var(--accent);1524}1525.issues-filter .issues-input {1526	width: auto;1527	min-width: 0;1528	flex: 1 1 140px;1529}1530.issues-submit {1531	align-self: flex-start;1532	margin-top: 10px;1533	padding: 6px 14px;1534	font-family: var(--mono);1535	font-size: 0.75rem;1536	color: var(--bg);1537	background: var(--accent);1538	border: none;1539	border-radius: 4px;1540	cursor: pointer;1541}1542.issues-submit:hover {1543	opacity: 0.85;1544}1545.issues-actions {1546	display: flex;1547	align-items: baseline;1548	gap: 16px;1549	margin: 0;1550}1551.issues-cancel {1552	font-size: 0.75rem;1553	color: var(--text-muted);1554}1555.issues-cancel:hover {1556	color: var(--accent);1557}1558.issues-error {1559	font-size: 0.75rem;1560	color: #c86a5a;1561}1562/* The honeypot: off-screen for people, still in the form for bots. */1563.issues-hp {1564	position: absolute;1565	left: -9999px;1566	height: 0;1567	overflow: hidden;1568	opacity: 0;1569}15701571/* ----- front page --------------------------------------------------------- */15721573/* Kepr 2's hero band, full width, reaching up behind the nav (32px mark + 48px padding). */1574body > nav {1575	position: relative;1576	z-index: 1;1577}1578.ticker {1579	position: relative;1580	height: 304px;1581	margin: -104px calc(50% - 50vw) 0;1582	padding: 96px 0 20px;1583	display: flex;1584	flex-direction: column;1585	justify-content: space-evenly;1586	overflow: hidden;1587	pointer-events: none;1588	user-select: none;1589	border-bottom: 1px solid var(--border);1590	font-family: var(--mono);1591	color: var(--text-secondary);1592	mask-image: linear-gradient(1593		to right,1594		transparent,1595		#000 48px,1596		#000 calc(100% - 48px),1597		transparent1598	);1599}1600.ticker-row {1601	white-space: nowrap;1602	line-height: 1.2;1603	opacity: var(--o);1604	animation: ticker-glow 83s var(--glow-at) ease-in-out infinite;1605}1606/* The drift's duration is set by kepr.js from the track's width, so every row keeps Kepr 2's1607   pace in px/s (--speed) however long its messages are; this is the no-JavaScript fallback. */1608.ticker-track {1609	display: inline-flex;1610	gap: 64px;1611	padding-right: 64px;1612	animation: ticker-drift 1500s linear infinite;1613}1614/* Kepr 2's depth bands: nearer rows are larger, brighter and faster. Each row takes its turn at1615   the glow, a few seconds out of every 83, spaced so one or two glow at a time. */1616.ticker-row:nth-child(1) {1617	font-size: 9px;1618	--o: 0.05;1619	--speed: 12;1620	--glow-at: -5s;1621}1622.ticker-row:nth-child(2) {1623	font-size: 18px;1624	--o: 0.1;1625	--speed: 23;1626	--glow-at: -41s;1627}1628.ticker-row:nth-child(3) {1629	font-size: 7px;1630	--o: 0.04;1631	--speed: 9;1632	--glow-at: -77s;1633}1634.ticker-row:nth-child(4) {1635	font-size: 13px;1636	--o: 0.07;1637	--speed: 17;1638	--glow-at: -29s;1639}1640.ticker-row:nth-child(5) {1641	font-size: 22px;1642	--o: 0.12;1643	--speed: 29;1644	--glow-at: -65s;1645}1646.ticker-row:nth-child(6) {1647	font-size: 8px;1648	--o: 0.045;1649	--speed: 10;1650	--glow-at: -17s;1651}1652.ticker-row:nth-child(7) {1653	font-size: 15px;1654	--o: 0.08;1655	--speed: 20;1656	--glow-at: -53s;1657}1658@keyframes ticker-drift {1659	to {1660		transform: translateX(-50%);1661	}1662}1663@keyframes ticker-glow {1664	0%,1665	10%,1666	100% {1667		color: var(--text-secondary);1668		opacity: var(--o);1669		text-shadow: none;1670	}1671	5% {1672		color: var(--accent);1673		opacity: calc(var(--o) * 3.5);1674		text-shadow: 0 0 3px var(--accent-tint-12);1675	}1676}16771678.headline {1679	display: grid;1680	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);1681	gap: 48px;1682	align-items: center;1683	padding: 56px 0 40px;1684}1685.headline h1 {1686	font-size: clamp(2rem, 5vw, 3.5rem);1687	font-weight: 400;1688	line-height: 1.15;1689	color: var(--text-heading);1690	margin: 0 0 20px;1691	animation: fadeUp 480ms ease both;1692}1693.headline-tagline {1694	margin: 0;1695	font-size: 0.9375rem;1696	line-height: 1.7;1697	color: var(--text-secondary);1698	animation: fadeUp 480ms 80ms ease both;1699}1700.headline-cloud {1701	display: flex;1702	flex-wrap: wrap;1703	justify-content: center;1704	align-items: center;1705	gap: 10px 22px;1706	padding: 20px;1707	animation: fadeIn 600ms 160ms ease both;1708}1709.tc-tag {1710	font-family: var(--mono);1711	letter-spacing: 0.03em;1712	white-space: nowrap;1713	color: var(--accent-dim);1714	transition:1715		color 0.2s,1716		opacity 0.2s,1717		text-shadow 0.2s;1718}1719.tc-tag:hover {1720	color: var(--accent);1721	opacity: 1;1722	text-shadow: 0 0 14px var(--accent-tint-12);1723}1724.tc-1 {1725	font-size: 10px;1726	opacity: 0.42;1727}1728.tc-2 {1729	font-size: 12px;1730	opacity: 0.56;1731}1732.tc-3 {1733	font-size: 15px;1734	opacity: 0.7;1735}1736.tc-4 {1737	font-size: 18px;1738	opacity: 0.85;1739	font-weight: 500;1740}1741.tc-5 {1742	font-size: 23px;1743	opacity: 1;1744	font-weight: 500;1745}17461747.featured-label {1748	font-size: 0.6875rem;1749	font-weight: 400;1750	letter-spacing: 0.08em;1751	text-transform: uppercase;1752	color: var(--text-secondary);1753	margin: 0 0 12px;1754}1755.landing-self-host {1756	margin: 32px 0 0;1757	font-size: 0.75rem;1758}1759.landing-self-host a {1760	color: var(--text-secondary);1761}17621763/* ----- repo cards (front page, browse, profile) --------------------------- */17641765.card-grid {1766	display: grid;1767	grid-template-columns: repeat(2, minmax(0, 1fr));1768	gap: 16px;1769}1770.repo-card {1771	display: flex;1772	flex-direction: column;1773	padding: 20px 22px 16px;1774	border: 1px solid var(--bg-elevated);1775	border-radius: 4px;1776	background: var(--bg);1777	transition:1778		border-color 120ms,1779		background 120ms;1780	animation: fadeUp 350ms ease both;1781}1782.repo-card:hover {1783	text-decoration: none;1784	border-color: var(--text-faint);1785	background: var(--accent-tint-04);1786}1787.repo-card-head {1788	display: flex;1789	align-items: baseline;1790	justify-content: space-between;1791	gap: 12px;1792}1793.repo-card-name {1794	font-size: 1.375rem;1795	line-height: 1.1;1796	color: var(--accent);1797	overflow: hidden;1798	text-overflow: ellipsis;1799	white-space: nowrap;1800}1801.repo-card-saves {1802	font-size: 0.6875rem;1803	white-space: nowrap;1804}1805.repo-card-desc {1806	margin: 8px 0 0;1807	font-size: 0.8125rem;1808	line-height: 1.5;1809	color: var(--text-secondary);1810	display: -webkit-box;1811	-webkit-line-clamp: 2;1812	-webkit-box-orient: vertical;1813	overflow: hidden;1814}1815.repo-card-cat {1816	margin: 10px 0 0;1817	font-size: 0.9375rem;1818	color: var(--text);1819}18201821/* ----- profile ------------------------------------------------------------ */18221823/* The cover runs the full width of the window while the page keeps its column. */1824.profile-cover {1825	position: relative;1826	height: 380px;1827	margin: -24px calc(50% - 50vw) 0;1828	overflow: hidden;1829	border-bottom: 1px solid var(--bg-surface);1830}1831.hex-backdrop {1832	position: absolute;1833	inset: 0;1834	display: flex;1835	flex-direction: row-reverse;1836	justify-content: center;1837	align-items: center;1838	gap: 13px;1839	pointer-events: none;1840	user-select: none;1841	font-family: var(--mono);1842	font-size: 13px;1843	line-height: 16px;1844	color: var(--accent-dim);1845}1846/* Characters top to bottom, columns right to left, each breathing on its own clock. */1847.hex-col {1848	writing-mode: vertical-rl;1849	text-orientation: upright;1850	letter-spacing: 3px;1851	opacity: 0.05;1852	animation: hex-breathe 17s ease-in-out infinite;1853	transition:1854		color 1.6s ease,1855		text-shadow 1.6s ease;1856}1857.hex-col:nth-child(3n) {1858	color: var(--accent);1859	animation-duration: 23s;1860	animation-delay: -7s;1861}1862.hex-col:nth-child(4n + 1) {1863	animation-duration: 29s;1864	animation-delay: -13s;1865}1866.hex-col:nth-child(5n + 2) {1867	animation-duration: 19s;1868	animation-delay: -3s;1869}1870.hex-col:nth-child(7n) {1871	animation-delay: -21s;1872}1873.hex-col.glow {1874	color: var(--accent-bright);1875	text-shadow: 0 0 6px var(--accent-tint-12);1876}1877@keyframes hex-breathe {1878	0%,1879	100% {1880		opacity: 0.05;1881	}1882	50% {1883		opacity: 0.22;1884	}1885}1886.profile-cover-fade {1887	position: absolute;1888	left: 0;1889	right: 0;1890	bottom: 0;1891	height: 55%;1892	background: linear-gradient(to bottom, transparent, var(--bg));1893	pointer-events: none;1894}1895.profile-identity {1896	position: absolute;1897	bottom: 40px;1898	left: 0;1899	right: 0;1900	max-width: 980px;1901	margin: 0 auto;1902	padding: 0 48px;1903}1904.profile-username {1905	margin: 0 0 8px;1906	font-family: "Sacramento", cursive;1907	font-weight: 400;1908	font-size: 3.625rem;1909	line-height: 1;1910	letter-spacing: -0.02em;1911	text-transform: lowercase;1912	color: var(--text-heading);1913	user-select: none;1914	animation: fadeUp 500ms ease both;1915}1916.profile-signature {1917	display: block;1918	max-height: 96px;1919	max-width: min(360px, 100%);1920}1921.profile-tagline {1922	margin: 0 0 6px;1923	font-family: var(--mono);1924	font-size: 0.75rem;1925	letter-spacing: 0.15em;1926	color: var(--text-faint);1927}1928.profile-op-badge {1929	display: block;1930	font-size: 0.6875rem;1931	letter-spacing: 0.18em;1932	color: var(--accent);1933}19341935.profile-portrait-section {1936	display: grid;1937	grid-template-columns: 320px minmax(0, 1fr);1938	gap: 40px;1939	align-items: start;1940	padding-top: 40px;1941}1942.profile-left {1943	display: flex;1944	flex-direction: column;1945	gap: 16px;1946}1947.profile-identity-card,1948.profile-languages-bar {1949	padding: 20px 24px;1950	border: 1px solid var(--bg-elevated);1951	border-radius: 4px;1952}1953.profile-identity-bio {1954	margin: 0;1955	font-size: 0.875rem;1956	line-height: 1.5;1957	color: var(--text-muted);1958}1959.profile-identity-location {1960	margin: 6px 0 0;1961	font-family: var(--mono);1962	font-size: 0.8125rem;1963	color: var(--text-muted);1964}1965.profile-website-pill {1966	display: inline-block;1967	max-width: 100%;1968	margin-top: 10px;1969	padding: 3px 8px;1970	overflow: hidden;1971	text-overflow: ellipsis;1972	white-space: nowrap;1973	border: 1px solid var(--text-faint);1974	border-radius: 3px;1975	background: var(--bg-surface);1976	font-family: var(--mono);1977	font-size: 0.6875rem;1978	color: var(--accent);1979}1980.profile-website-pill:hover {1981	border-color: var(--accent);1982	text-decoration: none;1983}1984.profile-stats-grid {1985	display: grid;1986	grid-template-columns: 1fr 1fr;1987	border: 1px solid var(--bg-elevated);1988	border-radius: 4px;1989	overflow: hidden;1990}1991.profile-stat-tile {1992	padding: 16px;1993	border-right: 1px solid var(--bg-elevated);1994	border-bottom: 1px solid var(--bg-elevated);1995}1996.profile-stat-tile:nth-child(2n) {1997	border-right: none;1998}1999.profile-stat-tile:nth-last-child(-n + 2) {2000	border-bottom: none;2001}2002.profile-stat-number {2003	margin-bottom: 4px;2004	font-weight: 600;2005	font-size: 1.75rem;2006	line-height: 1;2007	color: var(--accent);2008}2009.profile-stat-label,2010.profile-section-label {2011	font-family: var(--mono);2012	font-size: 0.625rem;2013	text-transform: uppercase;2014	letter-spacing: 0.08em;2015	color: var(--text-faint);2016}2017.profile-lang-bar {2018	display: block;2019	width: 100%;2020	height: 6px;2021	margin-bottom: 8px;2022	border-radius: 3px;2023	background: var(--bg-surface);2024}2025.profile-lang-bar rect {2026	fill: var(--accent);2027	opacity: 0.6;2028}2029.profile-lang-bar rect:nth-child(2) {2030	fill: var(--sage);2031}2032.profile-lang-bar rect:nth-child(3) {2033	fill: var(--accent-flash);2034	opacity: 0.45;2035}2036.profile-lang-bar rect:nth-child(4) {2037	fill: var(--accent-dim);2038}2039.profile-lang-labels {2040	display: flex;2041	flex-wrap: wrap;2042	gap: 10px;2043	font-family: var(--mono);2044	font-size: 0.625rem;2045	color: var(--text-muted);2046}2047.profile-section-label {2048	margin-bottom: 16px;2049	letter-spacing: 0.2em;2050}2051.profile-event {2052	display: grid;2053	grid-template-columns: 96px 12px minmax(0, 1fr) auto;2054	gap: 10px;2055	align-items: baseline;2056	padding: 7px 0;2057	border-bottom: 1px solid var(--bg-surface);2058	font-family: var(--mono);2059	font-size: 0.6875rem;2060	animation: fadeUp 300ms ease both;2061}2062.profile-event-repo,2063.profile-event-message {2064	overflow: hidden;2065	text-overflow: ellipsis;2066	white-space: nowrap;2067}2068.profile-event-repo,2069.profile-event-glyph {2070	color: var(--accent);2071}2072.profile-event-glyph {2073	font-size: 0.625rem;2074}2075.profile-event-message {2076	color: var(--text-muted);2077}2078.profile-event-message:hover {2079	color: var(--text-heading);2080}2081.profile-event-time {2082	font-size: 0.625rem;2083	white-space: nowrap;2084	color: var(--text-faint);2085}2086.profile-empty-state {2087	font-style: italic;2088	font-size: 0.8125rem;2089	color: var(--text-faint);2090}2091.profile-repos-section {2092	margin-top: 40px;2093	padding-top: 40px;2094	border-top: 1px solid var(--bg-surface);2095}20962097/* ----- docs and support --------------------------------------------------- */20982099.admin-layout {2100	display: grid;2101	grid-template-columns: 160px minmax(0, 1fr);2102	gap: 48px;2103	min-height: 70vh;2104}2105.admin-sidebar {2106	position: sticky;2107	top: 24px;2108	align-self: start;2109	padding: 24px 0;2110	font-size: 0.75rem;2111}2112.admin-sidebar nav,2113.admin-sidebar-foot {2114	display: flex;2115	flex-direction: column;2116	gap: 16px;2117	margin-top: 20px;2118}2119.admin-sidebar a {2120	color: var(--text-secondary);2121}2122.admin-sidebar a[aria-current] {2123	color: var(--accent);2124	border-left: 2px solid var(--accent);2125	padding-left: 12px;2126}2127.admin-sidebar-foot {2128	border-top: 1px solid var(--border);2129	padding-top: 24px;2130	margin-top: 40px;2131}2132.admin-content {2133	min-width: 0;2134}2135.admin-heading {2136	border-bottom: 1px solid var(--border);2137	padding: 24px 0;2138	margin-bottom: 32px;2139}2140.admin-heading h1 {2141	font-size: 2rem;2142	font-weight: 400;2143	margin: 8px 0 0;2144	color: var(--text-heading);2145}2146.admin-intro {2147	color: var(--text-secondary);2148	margin-bottom: 24px;2149}2150.admin-notice {2151	color: var(--sage);2152	border-left: 2px solid var(--sage);2153	padding-left: 16px;2154}2155.admin-content .profile-signature {2156	max-width: 240px;2157	max-height: 120px;2158	object-fit: contain;2159}2160.admin-vitals {2161	display: flex;2162	flex-wrap: wrap;2163	gap: 24px 40px;2164	padding: 0 0 24px;2165	border-bottom: 1px solid var(--border);2166}2167.admin-vitals strong {2168	display: block;2169	font-size: 1.75rem;2170	font-weight: 400;2171	color: var(--accent);2172}2173.admin-repos {2174	display: grid;2175	grid-template-columns: minmax(120px, 0.7fr) minmax(0, 1.3fr);2176	gap: 24px;2177	margin-top: 24px;2178}2179.admin-repos .issue-row {2180	flex-wrap: wrap;2181}2182.admin-repos [aria-current] {2183	border-left: 2px solid var(--accent);2184	padding-left: 12px;2185}2186@media (max-width: 680px) {2187	.admin-repos {2188		grid-template-columns: minmax(0, 1fr);2189	}2190	.admin-layout {2191		grid-template-columns: minmax(0, 1fr);2192		gap: 0;2193	}2194	.admin-sidebar {2195		position: static;2196		padding: 8px 0;2197	}2198	.admin-sidebar nav,2199	.admin-sidebar-foot {2200		flex-flow: row wrap;2201		gap: 12px 20px;2202	}2203	.admin-sidebar-foot {2204		margin-top: 16px;2205		padding-top: 16px;2206	}2207}22082209.site-doc {2210	max-width: 72ch;2211	margin-top: 16px;2212}2213.site-doc h1 {2214	font-size: clamp(2rem, 5vw, 3rem);2215	font-weight: 400;2216	color: var(--text-heading);2217}2218.site-doc h2 {2219	margin-top: 2.4em;2220	scroll-margin-top: 24px;2221}2222.site-doc-layout {2223	display: grid;2224	grid-template-columns: 180px minmax(0, 72ch);2225	gap: 48px;2226}2227.site-doc-nav {2228	position: sticky;2229	top: 24px;2230	align-self: start;2231	display: flex;2232	flex-direction: column;2233	gap: 10px;2234	margin-top: 32px;2235	font-size: 0.8125rem;2236}2237.site-doc-nav a {2238	color: var(--text-secondary);2239	text-decoration: none;2240}2241.site-doc-nav a:hover {2242	color: var(--text-heading);2243}2244@media (max-width: 860px) {2245	.site-doc-layout {2246		grid-template-columns: minmax(0, 1fr);2247		gap: 0;2248	}2249	.site-doc-nav {2250		position: static;2251		flex-flow: row wrap;2252		gap: 8px 16px;2253		margin-top: 24px;2254	}2255}22562257@media (max-width: 860px) {2258	.headline,2259	.profile-portrait-section {2260		grid-template-columns: minmax(0, 1fr);2261	}2262	.headline {2263		gap: 8px;2264		padding-top: 48px;2265	}2266	.card-grid {2267		grid-template-columns: minmax(0, 1fr);2268	}2269}2270@media (max-width: 768px) {2271	.editor-panes {2272		grid-template-columns: minmax(0, 1fr);2273	}2274	.fv-header {2275		flex-wrap: wrap;2276		height: auto;2277		padding: 8px 12px;2278		gap: 8px 12px;2279	}2280	.fv-body {2281		grid-template-columns: minmax(0, 1fr);2282	}2283	.fv-detail {2284		display: none;2285	}2286	.ticker {2287		height: 226px;2288		margin-top: -88px;2289		padding-top: 80px;2290	}2291	.profile-cover {2292		height: 280px;2293		margin-top: -16px;2294	}2295	.profile-identity {2296		bottom: 24px;2297		padding: 0 16px;2298	}2299	.profile-username {2300		font-size: 2.5rem;2301	}2302	.profile-event {2303		grid-template-columns: 72px 12px minmax(0, 1fr);2304	}2305	.profile-event-time {2306		display: none;2307	}2308}23092310/* ----- media in Markdown and the signed-in editor ------------------------- */23112312/* Sizes and places from an image's options (markdown.ts); classes, as the policy allows no inline2313   style. */2314.markdown .media {2315	display: block;2316	max-width: 100%;2317	height: auto;2318	margin: 12px auto;2319	border-radius: 3px;2320}2321.markdown .media-left {2322	margin-left: 0;2323}2324.markdown .media-right {2325	margin-right: 0;2326}2327.markdown .media-w25 {2328	width: 25%;2329}2330.markdown .media-w33 {2331	width: 33%;2332}2333.markdown .media-w50 {2334	width: 50%;2335}2336.markdown .media-w66 {2337	width: 66%;2338}2339.markdown .media-w75 {2340	width: 75%;2341}2342.markdown .media-w100 {2343	width: 100%;2344}2345.edit-btn {2346	margin-left: 12px;2347	padding: 1px 7px;2348	background: transparent;2349	border: 1px solid rgba(200, 154, 90, 0.2);2350	border-radius: 2px;2351	font-size: 0.625rem;2352	color: var(--text-faint);2353	cursor: pointer;2354	vertical-align: middle;2355}2356.edit-btn:hover {2357	color: var(--accent);2358	border-color: var(--accent-dim);2359}2360.editor {2361	display: grid;2362	gap: 8px;2363	margin: 8px 0 16px;2364}2365.editor-toolbar,2366.editor-media,2367.editor-actions {2368	display: flex;2369	flex-wrap: wrap;2370	align-items: center;2371	gap: 4px;2372}2373.editor-media[hidden] {2374	display: none;2375}2376.editor-label,2377.editor-status {2378	margin: 0 6px;2379	font-size: 0.625rem;2380	color: var(--text-faint);2381}2382.editor-panes {2383	display: grid;2384	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);2385	gap: 12px;2386}2387.editor-input {2388	width: 100%;2389	min-height: 4lh;2390	max-height: 70vh;2391	field-sizing: content;2392	resize: vertical;2393	padding: 10px 12px;2394	background: var(--bg-surface);2395	border: 1px solid var(--border);2396	border-radius: 3px;2397	color: var(--text);2398	font-size: 0.75rem;2399	line-height: 1.6;2400}2401.editor-input:focus {2402	outline: none;2403	border-color: var(--accent-dim);2404}2405.editor-preview {2406	min-width: 0;2407	max-height: 70vh;2408	overflow-y: auto;2409	padding: 0 4px;2410}2411.editor-preview:empty::before {2412	content: attr(data-empty);2413	font-family: var(--mono);2414	font-size: 0.625rem;2415	color: var(--text-faint);2416}24172418/* ----- file viewer (Kepr 2's Atlas modal) -------------------------------- */24192420body:has(> .fv-overlay) {2421	overflow: hidden;2422}2423.fv-overlay {2424	position: fixed;2425	inset: 0;2426	z-index: 2000;2427	display: flex;2428	flex-direction: column;2429	background: rgba(8, 7, 5, 0.97);2430	outline: none;2431	animation: fv-in 200ms ease both;2432}2433@keyframes fv-in {2434	from {2435		opacity: 0;2436		transform: translateY(6px) scale(0.97);2437	}2438}2439.fv-header {2440	display: flex;2441	align-items: center;2442	gap: 16px;2443	flex-shrink: 0;2444	height: 48px;2445	padding: 0 20px;2446	background: var(--bg);2447	border-bottom: 1px solid var(--bg-elevated);2448}2449.fv-close {2450	background: none;2451	border: 0;2452	padding: 0 4px;2453	font-size: 1.375rem;2454	line-height: 1;2455	color: var(--text-faint);2456	cursor: pointer;2457}2458.fv-close:hover {2459	color: var(--accent);2460}2461.fv-title {2462	display: flex;2463	align-items: baseline;2464	gap: 8px;2465	flex: 1;2466	min-width: 0;2467}2468.fv-name {2469	font-size: 1.25rem;2470	color: var(--text-heading);2471	white-space: nowrap;2472}2473.fv-path {2474	font-size: 0.625rem;2475	color: var(--text-faint);2476	white-space: nowrap;2477	overflow: hidden;2478	text-overflow: ellipsis;2479}2480.fv-controls,2481.fv-nav {2482	display: flex;2483	align-items: center;2484	gap: 4px;2485	flex-shrink: 0;2486}2487.fv-ctrl-btn {2488	background: transparent;2489	border: 1px solid rgba(200, 154, 90, 0.2);2490	border-radius: 2px;2491	padding: 3px 7px;2492	font: inherit;2493	font-size: 0.625rem;2494	color: var(--text-faint);2495	cursor: pointer;2496	transition:2497		color 100ms,2498		border-color 100ms;2499}2500.fv-ctrl-btn:hover:not(:disabled),2501.fv-ctrl-btn.active {2502	color: var(--accent);2503	border-color: rgba(200, 154, 90, 0.5);2504	text-decoration: none;2505}2506.fv-ctrl-btn:disabled {2507	opacity: 0.3;2508	cursor: default;2509}2510.fv-pos {2511	min-width: 48px;2512	text-align: center;2513	font-size: 0.625rem;2514	color: var(--text-faint);2515}2516.fv-body {2517	flex: 1;2518	min-height: 0;2519	display: grid;2520	grid-template-columns: minmax(0, 1fr) 280px;2521}2522.fv-source {2523	min-height: 0;2524	overflow: auto;2525	padding: 16px 28px 32px;2526	font-family: var(--mono);2527	font-size: 0.6875rem;2528	color: var(--text-faint);2529}2530.fv-source .file-view {2531	margin: -16px -28px 0;2532	border: 0;2533	background: none;2534	overflow: visible;2535}2536.fv-source .code {2537	font-size: var(--fv-size);2538	color: var(--text);2539}2540.fv-wrap .fv-source .lc {2541	white-space: pre-wrap;2542	overflow-wrap: anywhere;2543}2544.fv-source .file-markdown {2545	font-family: var(--sans);2546	font-size: calc(var(--fv-size) + 2px);2547	color: var(--text);2548}2549.fv-detail .atlas-info-desc {2550	font-size: 0.8125rem;2551}2552.fv-detail {2553	overflow-y: auto;2554	padding: 18px 20px 24px;2555	background: var(--bg);2556	border-left: 1px solid var(--bg-elevated);2557}25582559/* Last in the file, after every animation it stops, so it wins without !important. */2560@media (prefers-reduced-motion: reduce) {2561	.tri-outer,2562	.tri-inner,2563	.repo-name,2564	.repo-contributor,2565	.repo-desc,2566	.repo-homepage,2567	.repo-meta,2568	.repo-tabs,2569	.install-lines,2570	.repo-section,2571	.repo-details,2572	.save-message-head,2573	.ticker-row,2574	.ticker-track,2575	.hex-col,2576	.headline h1,2577	.headline-tagline,2578	.headline-cloud,2579	.repo-card,2580	.profile-username,2581	.profile-event,2582	.fv-overlay,2583	.repo-panel {2584		animation: none;2585	}2586	.hex-col {2587		opacity: 0.12;2588	}2589}