kepr.css

47.5 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: center;1548	gap: 16px;1549	margin: 10px 0 0;1550}1551.issues-actions .issues-submit {1552	align-self: auto;1553	margin-top: 0;1554}1555.issues-cancel {1556	font-size: 0.75rem;1557	color: var(--text-muted);1558}1559.issues-cancel:hover {1560	color: var(--accent);1561}1562.issues-error {1563	font-size: 0.75rem;1564	color: #c86a5a;1565}1566/* The honeypot: off-screen for people, still in the form for bots. */1567.issues-hp {1568	position: absolute;1569	left: -9999px;1570	height: 0;1571	overflow: hidden;1572	opacity: 0;1573}15741575/* ----- front page --------------------------------------------------------- */15761577/* Kepr 2's hero band, full width, reaching up behind the nav (32px mark + 48px padding). */1578body > nav {1579	position: relative;1580	z-index: 1;1581}1582.ticker {1583	position: relative;1584	height: 304px;1585	margin: -104px calc(50% - 50vw) 0;1586	padding: 96px 0 20px;1587	display: flex;1588	flex-direction: column;1589	justify-content: space-evenly;1590	overflow: hidden;1591	pointer-events: none;1592	user-select: none;1593	border-bottom: 1px solid var(--border);1594	font-family: var(--mono);1595	color: var(--text-secondary);1596	mask-image: linear-gradient(1597		to right,1598		transparent,1599		#000 48px,1600		#000 calc(100% - 48px),1601		transparent1602	);1603}1604.ticker-row {1605	white-space: nowrap;1606	line-height: 1.2;1607	opacity: var(--o);1608	animation: ticker-glow 83s var(--glow-at) ease-in-out infinite;1609}1610/* The drift's duration is set by kepr.js from the track's width, so every row keeps Kepr 2's1611   pace in px/s (--speed) however long its messages are; this is the no-JavaScript fallback. */1612.ticker-track {1613	display: inline-flex;1614	gap: 64px;1615	padding-right: 64px;1616	animation: ticker-drift 1500s linear infinite;1617}1618/* Kepr 2's depth bands: nearer rows are larger, brighter and faster. Each row takes its turn at1619   the glow, a few seconds out of every 83, spaced so one or two glow at a time. */1620.ticker-row:nth-child(1) {1621	font-size: 9px;1622	--o: 0.05;1623	--speed: 12;1624	--glow-at: -5s;1625}1626.ticker-row:nth-child(2) {1627	font-size: 18px;1628	--o: 0.1;1629	--speed: 23;1630	--glow-at: -41s;1631}1632.ticker-row:nth-child(3) {1633	font-size: 7px;1634	--o: 0.04;1635	--speed: 9;1636	--glow-at: -77s;1637}1638.ticker-row:nth-child(4) {1639	font-size: 13px;1640	--o: 0.07;1641	--speed: 17;1642	--glow-at: -29s;1643}1644.ticker-row:nth-child(5) {1645	font-size: 22px;1646	--o: 0.12;1647	--speed: 29;1648	--glow-at: -65s;1649}1650.ticker-row:nth-child(6) {1651	font-size: 8px;1652	--o: 0.045;1653	--speed: 10;1654	--glow-at: -17s;1655}1656.ticker-row:nth-child(7) {1657	font-size: 15px;1658	--o: 0.08;1659	--speed: 20;1660	--glow-at: -53s;1661}1662@keyframes ticker-drift {1663	to {1664		transform: translateX(-50%);1665	}1666}1667@keyframes ticker-glow {1668	0%,1669	10%,1670	100% {1671		color: var(--text-secondary);1672		opacity: var(--o);1673		text-shadow: none;1674	}1675	5% {1676		color: var(--accent);1677		opacity: calc(var(--o) * 3.5);1678		text-shadow: 0 0 3px var(--accent-tint-12);1679	}1680}16811682.headline {1683	display: grid;1684	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);1685	gap: 48px;1686	align-items: center;1687	padding: 56px 0 40px;1688}1689.headline h1 {1690	font-size: clamp(2rem, 5vw, 3.5rem);1691	font-weight: 400;1692	line-height: 1.15;1693	color: var(--text-heading);1694	margin: 0 0 20px;1695	animation: fadeUp 480ms ease both;1696}1697.headline-tagline {1698	margin: 0;1699	font-size: 0.9375rem;1700	line-height: 1.7;1701	color: var(--text-secondary);1702	animation: fadeUp 480ms 80ms ease both;1703}1704.headline-cloud {1705	display: flex;1706	flex-wrap: wrap;1707	justify-content: center;1708	align-items: center;1709	gap: 10px 22px;1710	padding: 20px;1711	animation: fadeIn 600ms 160ms ease both;1712}1713.tc-tag {1714	font-family: var(--mono);1715	letter-spacing: 0.03em;1716	white-space: nowrap;1717	color: var(--accent-dim);1718	transition:1719		color 0.2s,1720		opacity 0.2s,1721		text-shadow 0.2s;1722}1723.tc-tag:hover {1724	color: var(--accent);1725	opacity: 1;1726	text-shadow: 0 0 14px var(--accent-tint-12);1727}1728.tc-1 {1729	font-size: 10px;1730	opacity: 0.42;1731}1732.tc-2 {1733	font-size: 12px;1734	opacity: 0.56;1735}1736.tc-3 {1737	font-size: 15px;1738	opacity: 0.7;1739}1740.tc-4 {1741	font-size: 18px;1742	opacity: 0.85;1743	font-weight: 500;1744}1745.tc-5 {1746	font-size: 23px;1747	opacity: 1;1748	font-weight: 500;1749}17501751.featured-label {1752	font-size: 0.6875rem;1753	font-weight: 400;1754	letter-spacing: 0.08em;1755	text-transform: uppercase;1756	color: var(--text-secondary);1757	margin: 0 0 12px;1758}1759.landing-self-host {1760	margin: 32px 0 0;1761	font-size: 0.75rem;1762}1763.landing-self-host a {1764	color: var(--text-secondary);1765}17661767/* ----- repo cards (front page, browse, profile) --------------------------- */17681769.card-grid {1770	display: grid;1771	grid-template-columns: repeat(2, minmax(0, 1fr));1772	gap: 16px;1773}1774.repo-card {1775	display: flex;1776	flex-direction: column;1777	padding: 20px 22px 16px;1778	border: 1px solid var(--bg-elevated);1779	border-radius: 4px;1780	background: var(--bg);1781	transition:1782		border-color 120ms,1783		background 120ms;1784	animation: fadeUp 350ms ease both;1785}1786.repo-card:hover {1787	text-decoration: none;1788	border-color: var(--text-faint);1789	background: var(--accent-tint-04);1790}1791.repo-card-head {1792	display: flex;1793	align-items: baseline;1794	justify-content: space-between;1795	gap: 12px;1796}1797.repo-card-name {1798	font-size: 1.375rem;1799	line-height: 1.1;1800	color: var(--accent);1801	overflow: hidden;1802	text-overflow: ellipsis;1803	white-space: nowrap;1804}1805.repo-card-saves {1806	font-size: 0.6875rem;1807	white-space: nowrap;1808}1809.repo-card-desc {1810	margin: 8px 0 0;1811	font-size: 0.8125rem;1812	line-height: 1.5;1813	color: var(--text-secondary);1814	display: -webkit-box;1815	-webkit-line-clamp: 2;1816	-webkit-box-orient: vertical;1817	overflow: hidden;1818}1819.repo-card-cat {1820	margin: 10px 0 0;1821	font-size: 0.9375rem;1822	color: var(--text);1823}18241825/* ----- profile ------------------------------------------------------------ */18261827/* The cover runs the full width of the window while the page keeps its column. */1828.profile-cover {1829	position: relative;1830	height: 380px;1831	margin: -24px calc(50% - 50vw) 0;1832	overflow: hidden;1833	border-bottom: 1px solid var(--bg-surface);1834}1835.hex-backdrop {1836	position: absolute;1837	inset: 0;1838	display: flex;1839	flex-direction: row-reverse;1840	justify-content: center;1841	align-items: center;1842	gap: 13px;1843	pointer-events: none;1844	user-select: none;1845	font-family: var(--mono);1846	font-size: 13px;1847	line-height: 16px;1848	color: var(--accent-dim);1849}1850/* Characters top to bottom, columns right to left, each breathing on its own clock. */1851.hex-col {1852	writing-mode: vertical-rl;1853	text-orientation: upright;1854	letter-spacing: 3px;1855	opacity: 0.05;1856	animation: hex-breathe 17s ease-in-out infinite;1857	transition:1858		color 1.6s ease,1859		text-shadow 1.6s ease;1860}1861.hex-col:nth-child(3n) {1862	color: var(--accent);1863	animation-duration: 23s;1864	animation-delay: -7s;1865}1866.hex-col:nth-child(4n + 1) {1867	animation-duration: 29s;1868	animation-delay: -13s;1869}1870.hex-col:nth-child(5n + 2) {1871	animation-duration: 19s;1872	animation-delay: -3s;1873}1874.hex-col:nth-child(7n) {1875	animation-delay: -21s;1876}1877.hex-col.glow {1878	color: var(--accent-bright);1879	text-shadow: 0 0 6px var(--accent-tint-12);1880}1881@keyframes hex-breathe {1882	0%,1883	100% {1884		opacity: 0.05;1885	}1886	50% {1887		opacity: 0.22;1888	}1889}1890.profile-cover-fade {1891	position: absolute;1892	left: 0;1893	right: 0;1894	bottom: 0;1895	height: 55%;1896	background: linear-gradient(to bottom, transparent, var(--bg));1897	pointer-events: none;1898}1899.profile-identity {1900	position: absolute;1901	bottom: 40px;1902	left: 0;1903	right: 0;1904	max-width: 980px;1905	margin: 0 auto;1906	padding: 0 48px;1907}1908.profile-username {1909	margin: 0 0 8px;1910	font-family: "Sacramento", cursive;1911	font-weight: 400;1912	font-size: 3.625rem;1913	line-height: 1;1914	letter-spacing: -0.02em;1915	text-transform: lowercase;1916	color: var(--text-heading);1917	user-select: none;1918	animation: fadeUp 500ms ease both;1919}1920.profile-signature {1921	display: block;1922	max-height: 96px;1923	max-width: min(360px, 100%);1924}1925.profile-tagline {1926	margin: 0 0 6px;1927	font-family: var(--mono);1928	font-size: 0.75rem;1929	letter-spacing: 0.15em;1930	color: var(--text-faint);1931}1932.profile-op-badge {1933	display: block;1934	font-size: 0.6875rem;1935	letter-spacing: 0.18em;1936	color: var(--accent);1937}19381939.profile-portrait-section {1940	display: grid;1941	grid-template-columns: 320px minmax(0, 1fr);1942	gap: 40px;1943	align-items: start;1944	padding-top: 40px;1945}1946.profile-left {1947	display: flex;1948	flex-direction: column;1949	gap: 16px;1950}1951.profile-identity-card,1952.profile-languages-bar {1953	padding: 20px 24px;1954	border: 1px solid var(--bg-elevated);1955	border-radius: 4px;1956}1957.profile-identity-bio {1958	margin: 0;1959	font-size: 0.875rem;1960	line-height: 1.5;1961	color: var(--text-muted);1962}1963.profile-identity-location {1964	margin: 6px 0 0;1965	font-family: var(--mono);1966	font-size: 0.8125rem;1967	color: var(--text-muted);1968}1969.profile-website-pill {1970	display: inline-block;1971	max-width: 100%;1972	margin-top: 10px;1973	padding: 3px 8px;1974	overflow: hidden;1975	text-overflow: ellipsis;1976	white-space: nowrap;1977	border: 1px solid var(--text-faint);1978	border-radius: 3px;1979	background: var(--bg-surface);1980	font-family: var(--mono);1981	font-size: 0.6875rem;1982	color: var(--accent);1983}1984.profile-website-pill:hover {1985	border-color: var(--accent);1986	text-decoration: none;1987}1988.profile-stats-grid {1989	display: grid;1990	grid-template-columns: 1fr 1fr;1991	border: 1px solid var(--bg-elevated);1992	border-radius: 4px;1993	overflow: hidden;1994}1995.profile-stat-tile {1996	padding: 16px;1997	border-right: 1px solid var(--bg-elevated);1998	border-bottom: 1px solid var(--bg-elevated);1999}2000.profile-stat-tile:nth-child(2n) {2001	border-right: none;2002}2003.profile-stat-tile:nth-last-child(-n + 2) {2004	border-bottom: none;2005}2006.profile-stat-number {2007	margin-bottom: 4px;2008	font-weight: 600;2009	font-size: 1.75rem;2010	line-height: 1;2011	color: var(--accent);2012}2013.profile-stat-label,2014.profile-section-label {2015	font-family: var(--mono);2016	font-size: 0.625rem;2017	text-transform: uppercase;2018	letter-spacing: 0.08em;2019	color: var(--text-faint);2020}2021.profile-lang-bar {2022	display: block;2023	width: 100%;2024	height: 6px;2025	margin-bottom: 8px;2026	border-radius: 3px;2027	background: var(--bg-surface);2028}2029.profile-lang-bar rect {2030	fill: var(--accent);2031	opacity: 0.6;2032}2033.profile-lang-bar rect:nth-child(2) {2034	fill: var(--sage);2035}2036.profile-lang-bar rect:nth-child(3) {2037	fill: var(--accent-flash);2038	opacity: 0.45;2039}2040.profile-lang-bar rect:nth-child(4) {2041	fill: var(--accent-dim);2042}2043.profile-lang-labels {2044	display: flex;2045	flex-wrap: wrap;2046	gap: 10px;2047	font-family: var(--mono);2048	font-size: 0.625rem;2049	color: var(--text-muted);2050}2051.profile-section-label {2052	margin-bottom: 16px;2053	letter-spacing: 0.2em;2054}2055.profile-timeline {2056	display: grid;2057	grid-auto-rows: 2.25rem;2058	max-height: 13.5rem;2059	overflow-y: auto;2060	scrollbar-width: thin;2061}2062.profile-event {2063	display: grid;2064	grid-template-columns: 96px 12px minmax(0, 1fr) auto;2065	gap: 10px;2066	align-items: baseline;2067	padding: 7px 0;2068	border-bottom: 1px solid var(--bg-surface);2069	font-family: var(--mono);2070	font-size: 0.6875rem;2071	animation: fadeUp 300ms ease both;2072}2073.profile-event-repo,2074.profile-event-message {2075	overflow: hidden;2076	text-overflow: ellipsis;2077	white-space: nowrap;2078}2079.profile-event-repo,2080.profile-event-glyph {2081	color: var(--accent);2082}2083.profile-event-glyph {2084	font-size: 0.625rem;2085}2086.profile-event-message {2087	color: var(--text-muted);2088}2089.profile-event-message:hover {2090	color: var(--text-heading);2091}2092.profile-event-time {2093	font-size: 0.625rem;2094	white-space: nowrap;2095	color: var(--text-faint);2096}2097.profile-empty-state {2098	font-style: italic;2099	font-size: 0.8125rem;2100	color: var(--text-faint);2101}2102.profile-repos-section {2103	margin-top: 40px;2104	padding-top: 40px;2105	border-top: 1px solid var(--bg-surface);2106}21072108/* ----- docs and support --------------------------------------------------- */21092110.admin-layout {2111	display: grid;2112	grid-template-columns: 160px minmax(0, 1fr);2113	gap: 48px;2114	min-height: 70vh;2115}2116.admin-sidebar {2117	position: sticky;2118	top: 24px;2119	align-self: start;2120	padding: 24px 0;2121	font-size: 0.75rem;2122}2123.admin-sidebar nav,2124.admin-sidebar-foot {2125	display: flex;2126	flex-direction: column;2127	gap: 16px;2128	margin-top: 20px;2129}2130.admin-sidebar a {2131	color: var(--text-secondary);2132}2133.admin-sidebar a[aria-current] {2134	color: var(--accent);2135	border-left: 2px solid var(--accent);2136	padding-left: 12px;2137}2138.admin-sidebar-foot {2139	border-top: 1px solid var(--border);2140	padding-top: 24px;2141	margin-top: 40px;2142}2143.admin-content {2144	min-width: 0;2145}2146.admin-heading {2147	border-bottom: 1px solid var(--border);2148	padding: 24px 0;2149	margin-bottom: 32px;2150}2151.admin-heading h1 {2152	font-size: 2rem;2153	font-weight: 400;2154	margin: 8px 0 0;2155	color: var(--text-heading);2156}2157.admin-intro {2158	color: var(--text-secondary);2159	margin-bottom: 24px;2160}2161.admin-notice {2162	color: var(--sage);2163	border-left: 2px solid var(--sage);2164	padding-left: 16px;2165}2166.admin-content .profile-signature {2167	max-width: 240px;2168	max-height: 120px;2169	object-fit: contain;2170}2171.admin-vitals {2172	display: flex;2173	flex-wrap: wrap;2174	gap: 24px 40px;2175	padding: 0 0 24px;2176	border-bottom: 1px solid var(--border);2177}2178.admin-vitals strong {2179	display: block;2180	font-size: 1.75rem;2181	font-weight: 400;2182	color: var(--accent);2183}2184.admin-repos {2185	display: grid;2186	grid-template-columns: minmax(120px, 0.7fr) minmax(0, 1.3fr);2187	gap: 24px;2188	margin-top: 24px;2189}2190.admin-repos .issue-row {2191	flex-wrap: wrap;2192}2193.admin-repos [aria-current] {2194	border-left: 2px solid var(--accent);2195	padding-left: 12px;2196}2197@media (max-width: 680px) {2198	.admin-repos {2199		grid-template-columns: minmax(0, 1fr);2200	}2201	.admin-layout {2202		grid-template-columns: minmax(0, 1fr);2203		gap: 0;2204	}2205	.admin-sidebar {2206		position: static;2207		padding: 8px 0;2208	}2209	.admin-sidebar nav,2210	.admin-sidebar-foot {2211		flex-flow: row wrap;2212		gap: 12px 20px;2213	}2214	.admin-sidebar-foot {2215		margin-top: 16px;2216		padding-top: 16px;2217	}2218}22192220.site-doc {2221	max-width: 72ch;2222	margin-top: 16px;2223}2224.site-doc h1 {2225	font-size: clamp(2rem, 5vw, 3rem);2226	font-weight: 400;2227	color: var(--text-heading);2228}2229.site-doc h2 {2230	margin-top: 2.4em;2231	scroll-margin-top: 24px;2232}2233.site-doc-layout {2234	display: grid;2235	grid-template-columns: 180px minmax(0, 72ch);2236	gap: 48px;2237}2238.site-doc-nav {2239	position: sticky;2240	top: 24px;2241	align-self: start;2242	display: flex;2243	flex-direction: column;2244	gap: 10px;2245	margin-top: 32px;2246	font-size: 0.8125rem;2247}2248.site-doc-nav a {2249	color: var(--text-secondary);2250	text-decoration: none;2251}2252.site-doc-nav a:hover {2253	color: var(--text-heading);2254}2255@media (max-width: 860px) {2256	.site-doc-layout {2257		grid-template-columns: minmax(0, 1fr);2258		gap: 0;2259	}2260	.site-doc-nav {2261		position: static;2262		flex-flow: row wrap;2263		gap: 8px 16px;2264		margin-top: 24px;2265	}2266}22672268@media (max-width: 860px) {2269	.headline,2270	.profile-portrait-section {2271		grid-template-columns: minmax(0, 1fr);2272	}2273	.headline {2274		gap: 8px;2275		padding-top: 48px;2276	}2277	.card-grid {2278		grid-template-columns: minmax(0, 1fr);2279	}2280}2281@media (max-width: 768px) {2282	.editor-panes {2283		grid-template-columns: minmax(0, 1fr);2284	}2285	.fv-header {2286		flex-wrap: wrap;2287		height: auto;2288		padding: 8px 12px;2289		gap: 8px 12px;2290	}2291	.fv-body {2292		grid-template-columns: minmax(0, 1fr);2293	}2294	.fv-detail {2295		display: none;2296	}2297	.ticker {2298		height: 226px;2299		margin-top: -88px;2300		padding-top: 80px;2301	}2302	.profile-cover {2303		height: 280px;2304		margin-top: -16px;2305	}2306	.profile-identity {2307		bottom: 24px;2308		padding: 0 16px;2309	}2310	.profile-username {2311		font-size: 2.5rem;2312	}2313	.profile-event {2314		grid-template-columns: 72px 12px minmax(0, 1fr);2315	}2316	.profile-event-time {2317		display: none;2318	}2319}23202321/* ----- media in Markdown and the signed-in editor ------------------------- */23222323/* Sizes and places from an image's options (markdown.ts); classes, as the policy allows no inline2324   style. */2325.markdown .media {2326	display: block;2327	max-width: 100%;2328	height: auto;2329	margin: 12px auto;2330	border-radius: 3px;2331}2332.markdown .media-left {2333	margin-left: 0;2334}2335.markdown .media-right {2336	margin-right: 0;2337}2338.markdown .media-w25 {2339	width: 25%;2340}2341.markdown .media-w33 {2342	width: 33%;2343}2344.markdown .media-w50 {2345	width: 50%;2346}2347.markdown .media-w66 {2348	width: 66%;2349}2350.markdown .media-w75 {2351	width: 75%;2352}2353.markdown .media-w100 {2354	width: 100%;2355}2356.edit-btn {2357	margin-left: 12px;2358	padding: 1px 7px;2359	background: transparent;2360	border: 1px solid rgba(200, 154, 90, 0.2);2361	border-radius: 2px;2362	font-size: 0.625rem;2363	color: var(--text-faint);2364	cursor: pointer;2365	vertical-align: middle;2366}2367.edit-btn:hover {2368	color: var(--accent);2369	border-color: var(--accent-dim);2370}2371.editor {2372	display: grid;2373	gap: 8px;2374	margin: 8px 0 16px;2375}2376.editor-toolbar,2377.editor-media,2378.editor-actions {2379	display: flex;2380	flex-wrap: wrap;2381	align-items: center;2382	gap: 4px;2383}2384.editor-media[hidden] {2385	display: none;2386}2387.editor-label,2388.editor-status {2389	margin: 0 6px;2390	font-size: 0.625rem;2391	color: var(--text-faint);2392}2393.editor-panes {2394	display: grid;2395	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);2396	gap: 12px;2397}2398.editor-input {2399	width: 100%;2400	min-height: 4lh;2401	max-height: 70vh;2402	field-sizing: content;2403	resize: vertical;2404	padding: 10px 12px;2405	background: var(--bg-surface);2406	border: 1px solid var(--border);2407	border-radius: 3px;2408	color: var(--text);2409	font-size: 0.75rem;2410	line-height: 1.6;2411}2412.editor-input:focus {2413	outline: none;2414	border-color: var(--accent-dim);2415}2416.editor-preview {2417	min-width: 0;2418	max-height: 70vh;2419	overflow-y: auto;2420	padding: 0 4px;2421}2422.editor-preview:empty::before {2423	content: attr(data-empty);2424	font-family: var(--mono);2425	font-size: 0.625rem;2426	color: var(--text-faint);2427}24282429/* ----- file viewer (Kepr 2's Atlas modal) -------------------------------- */24302431body:has(> .fv-overlay) {2432	overflow: hidden;2433}2434.fv-overlay {2435	position: fixed;2436	inset: 0;2437	z-index: 2000;2438	display: flex;2439	flex-direction: column;2440	background: rgba(8, 7, 5, 0.97);2441	outline: none;2442	animation: fv-in 200ms ease both;2443}2444@keyframes fv-in {2445	from {2446		opacity: 0;2447		transform: translateY(6px) scale(0.97);2448	}2449}2450.fv-header {2451	display: flex;2452	align-items: center;2453	gap: 16px;2454	flex-shrink: 0;2455	height: 48px;2456	padding: 0 20px;2457	background: var(--bg);2458	border-bottom: 1px solid var(--bg-elevated);2459}2460.fv-close {2461	background: none;2462	border: 0;2463	padding: 0 4px;2464	font-size: 1.375rem;2465	line-height: 1;2466	color: var(--text-faint);2467	cursor: pointer;2468}2469.fv-close:hover {2470	color: var(--accent);2471}2472.fv-title {2473	display: flex;2474	align-items: baseline;2475	gap: 8px;2476	flex: 1;2477	min-width: 0;2478}2479.fv-name {2480	font-size: 1.25rem;2481	color: var(--text-heading);2482	white-space: nowrap;2483}2484.fv-path {2485	font-size: 0.625rem;2486	color: var(--text-faint);2487	white-space: nowrap;2488	overflow: hidden;2489	text-overflow: ellipsis;2490}2491.fv-controls,2492.fv-nav {2493	display: flex;2494	align-items: center;2495	gap: 4px;2496	flex-shrink: 0;2497}2498.fv-ctrl-btn {2499	background: transparent;2500	border: 1px solid rgba(200, 154, 90, 0.2);2501	border-radius: 2px;2502	padding: 3px 7px;2503	font: inherit;2504	font-size: 0.625rem;2505	color: var(--text-faint);2506	cursor: pointer;2507	transition:2508		color 100ms,2509		border-color 100ms;2510}2511.fv-ctrl-btn:hover:not(:disabled),2512.fv-ctrl-btn.active {2513	color: var(--accent);2514	border-color: rgba(200, 154, 90, 0.5);2515	text-decoration: none;2516}2517.fv-ctrl-btn:disabled {2518	opacity: 0.3;2519	cursor: default;2520}2521.fv-pos {2522	min-width: 48px;2523	text-align: center;2524	font-size: 0.625rem;2525	color: var(--text-faint);2526}2527.fv-body {2528	flex: 1;2529	min-height: 0;2530	display: grid;2531	grid-template-columns: minmax(0, 1fr) 280px;2532}2533.fv-source {2534	min-height: 0;2535	overflow: auto;2536	padding: 16px 28px 32px;2537	font-family: var(--mono);2538	font-size: 0.6875rem;2539	color: var(--text-faint);2540}2541.fv-source .file-view {2542	margin: -16px -28px 0;2543	border: 0;2544	background: none;2545	overflow: visible;2546}2547.fv-source .code {2548	font-size: var(--fv-size);2549	color: var(--text);2550}2551.fv-wrap .fv-source .lc {2552	white-space: pre-wrap;2553	overflow-wrap: anywhere;2554}2555.fv-source .file-markdown {2556	font-family: var(--sans);2557	font-size: calc(var(--fv-size) + 2px);2558	color: var(--text);2559}2560.fv-detail .atlas-info-desc {2561	font-size: 0.8125rem;2562}2563.fv-detail {2564	overflow-y: auto;2565	padding: 18px 20px 24px;2566	background: var(--bg);2567	border-left: 1px solid var(--bg-elevated);2568}25692570/* Last in the file, after every animation it stops, so it wins without !important. */2571@media (prefers-reduced-motion: reduce) {2572	.tri-outer,2573	.tri-inner,2574	.repo-name,2575	.repo-contributor,2576	.repo-desc,2577	.repo-homepage,2578	.repo-meta,2579	.repo-tabs,2580	.install-lines,2581	.repo-section,2582	.repo-details,2583	.save-message-head,2584	.ticker-row,2585	.ticker-track,2586	.hex-col,2587	.headline h1,2588	.headline-tagline,2589	.headline-cloud,2590	.repo-card,2591	.profile-username,2592	.profile-event,2593	.fv-overlay,2594	.repo-panel {2595		animation: none;2596	}2597	.hex-col {2598		opacity: 0.12;2599	}2600}