kepr.css

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