kepr.css

46.4 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) {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	margin: 6px 0;1239	font-size: 0.75rem;1240}1241.archive-links a {1242	color: var(--accent);1243}1244.archive-row .install-line {1245	justify-content: space-between;1246}12471248/* ----- phone -------------------------------------------------------------- */12491250@media (max-width: 768px) {1251	body > nav {1252		padding: 20px 16px;1253	}1254	.nav-links {1255		gap: 18px;1256	}1257	main {1258		padding: 16px 16px 80px;1259	}1260	.repo-name {1261		font-size: 2.75rem;1262	}1263	.install-lines {1264		align-items: stretch;1265		margin-left: 0;1266		width: 100%;1267	}1268	.history-row {1269		grid-template-columns: 1fr auto;1270	}1271	.history-id {1272		grid-column: 1 / -1;1273	}1274	.atlas-row {1275		grid-template-columns: 1fr auto;1276	}1277	.atlas-desc {1278		grid-column: 1 / -1;1279		grid-row: 2;1280	}1281	.atlas:has(> .atlas-panel:not([hidden])) {1282		grid-template-columns: minmax(0, 1fr);1283	}1284	.atlas-panel {1285		display: none;1286	}1287	.code .line {1288		grid-template-columns: 4.5em 1fr;1289	}1290	.save-message-head {1291		font-size: 1.625rem;1292	}1293	.archive-msg {1294		flex-basis: 100%;1295		order: 1;1296	}1297	.diff .dl {1298		grid-template-columns: 2.75em 2.75em 1.25em 1fr;1299	}1300	.code .ln {1301		padding-right: 1em;1302	}1303}13041305/* ----- builds ------------------------------------------------------------- */13061307.release {1308	padding: 20px 8px 24px;1309	border-bottom: 1px solid var(--border);1310}1311.release-head {1312	display: flex;1313	flex-wrap: wrap;1314	align-items: baseline;1315	gap: 0 14px;1316	margin: 0 0 8px;1317}1318.release-version {1319	font-family: "Martian Mono", monospace;1320	font-size: 1rem;1321	color: var(--accent);1322}1323.release-head .history-id:hover {1324	color: var(--accent);1325}1326.release-notes {1327	margin-bottom: 14px;1328}1329.release-file {1330	padding: 10px 0;1331	border-top: 1px dashed var(--border);1332}1333.release-file-head {1334	display: flex;1335	flex-wrap: wrap;1336	align-items: baseline;1337	gap: 4px 14px;1338	margin: 0;1339}1340.release-platform {1341	flex: 0 0 180px;1342}1343.release-download {1344	flex: 1;1345	font-size: 0.75rem;1346	color: var(--accent);1347	overflow-wrap: anywhere;1348}1349.release-meta,1350.release-sha {1351	font-size: 0.6875rem;1352	color: var(--text-muted);1353}1354.release-sha {1355	margin: 4px 0 0;1356	overflow-wrap: anywhere;1357}1358.release-hint {1359	margin: 4px 0 0;1360	font-size: 0.8125rem;1361}13621363/* ----- issues ------------------------------------------------------------- */13641365.issues-bar {1366	display: flex;1367	flex-wrap: wrap;1368	align-items: center;1369	gap: 8px 12px;1370	font-size: 0.75rem;1371	padding-bottom: 14px;1372	border-bottom: 1px solid var(--bg-elevated);1373}1374.issues-tab {1375	color: var(--text-faint);1376	border: 1px solid transparent;1377	border-radius: 999px;1378	padding: 4px 10px;1379}1380button.issues-tab {1381	font: inherit;1382	background: none;1383	cursor: pointer;1384}1385.issues-tab.active {1386	color: var(--accent);1387	border-color: var(--accent-tint-12);1388}1389.issues-new {1390	margin-left: auto;1391	color: var(--text-muted);1392}1393.issue-row {1394	display: flex;1395	flex-wrap: wrap;1396	align-items: baseline;1397	gap: 2px 10px;1398	padding: 10px 8px;1399	border-bottom: 1px solid var(--border);1400}1401.issue-row:hover {1402	text-decoration: none;1403	background: var(--accent-tint-04);1404}1405.issue-title {1406	flex: 1;1407	color: var(--text-heading);1408}1409.issues-new:hover,1410.issue-row:hover .issue-title {1411	color: var(--accent);1412}1413.issue-meta,1414.issue-post-head {1415	font-size: 0.6875rem;1416	color: var(--text-muted);1417}1418.issue-symbol--open {1419	color: var(--accent);1420}1421.issue-symbol--closed {1422	color: var(--text-faint);1423}1424.issue-post {1425	margin: 18px 0;1426	padding: 14px 18px;1427	border: 1px solid var(--border);1428	border-radius: 6px;1429	background: var(--bg-surface);1430}1431.issue-post--operator {1432	border-color: var(--accent-dim);1433}1434.issue-post-head {1435	display: flex;1436	flex-wrap: wrap;1437	gap: 4px 12px;1438	margin: 0 0 8px;1439}1440.issue-author {1441	color: var(--text);1442}1443.issue-badge {1444	color: var(--accent);1445	text-transform: uppercase;1446	letter-spacing: 0.08em;1447}1448.issue-text {1449	white-space: pre-wrap;1450	overflow-wrap: anywhere;1451}1452.issue-link {1453	font-size: 0.75rem;1454	overflow-wrap: anywhere;1455	color: var(--accent);1456}1457.issues-form {1458	display: flex;1459	flex-direction: column;1460	gap: 6px;1461	max-width: 640px;1462	margin-top: 18px;1463}1464.issues-label {1465	font-family: var(--mono);1466	font-size: 0.6875rem;1467	margin-top: 6px;1468	opacity: 0.8;1469}1470.issues-input,1471.issues-textarea {1472	font-family: var(--mono);1473	font-size: 0.75rem;1474	width: 100%;1475	padding: 6px 8px;1476	color: var(--text);1477	background: var(--bg);1478	border: 1px solid var(--border);1479	border-radius: 4px;1480	resize: vertical;1481}1482.issues-input:focus,1483.issues-textarea:focus {1484	outline: none;1485	border-color: var(--accent);1486}1487.issues-submit {1488	align-self: flex-start;1489	margin-top: 10px;1490	padding: 6px 14px;1491	font-family: var(--mono);1492	font-size: 0.75rem;1493	color: var(--bg);1494	background: var(--accent);1495	border: none;1496	border-radius: 4px;1497	cursor: pointer;1498}1499.issues-submit:hover {1500	opacity: 0.85;1501}1502.issues-actions {1503	display: flex;1504	align-items: baseline;1505	gap: 16px;1506	margin: 0;1507}1508.issues-cancel {1509	font-size: 0.75rem;1510	color: var(--text-muted);1511}1512.issues-cancel:hover {1513	color: var(--accent);1514}1515.issues-error {1516	font-size: 0.75rem;1517	color: #c86a5a;1518}1519/* The honeypot: off-screen for people, still in the form for bots. */1520.issues-hp {1521	position: absolute;1522	left: -9999px;1523	height: 0;1524	overflow: hidden;1525	opacity: 0;1526}15271528/* ----- front page --------------------------------------------------------- */15291530/* Kepr 2's hero band, full width, reaching up behind the nav (32px mark + 48px padding). */1531body > nav {1532	position: relative;1533	z-index: 1;1534}1535.ticker {1536	position: relative;1537	height: 304px;1538	margin: -104px calc(50% - 50vw) 0;1539	padding: 96px 0 20px;1540	display: flex;1541	flex-direction: column;1542	justify-content: space-evenly;1543	overflow: hidden;1544	pointer-events: none;1545	user-select: none;1546	border-bottom: 1px solid var(--border);1547	font-family: var(--mono);1548	color: var(--text-secondary);1549	mask-image: linear-gradient(1550		to right,1551		transparent,1552		#000 48px,1553		#000 calc(100% - 48px),1554		transparent1555	);1556}1557.ticker-row {1558	white-space: nowrap;1559	line-height: 1.2;1560	opacity: var(--o);1561	animation: ticker-glow 83s var(--glow-at) ease-in-out infinite;1562}1563/* The drift's duration is set by kepr.js from the track's width, so every row keeps Kepr 2's1564   pace in px/s (--speed) however long its messages are; this is the no-JavaScript fallback. */1565.ticker-track {1566	display: inline-flex;1567	gap: 64px;1568	padding-right: 64px;1569	animation: ticker-drift 1500s linear infinite;1570}1571/* Kepr 2's depth bands: nearer rows are larger, brighter and faster. Each row takes its turn at1572   the glow, a few seconds out of every 83, spaced so one or two glow at a time. */1573.ticker-row:nth-child(1) {1574	font-size: 9px;1575	--o: 0.05;1576	--speed: 12;1577	--glow-at: -5s;1578}1579.ticker-row:nth-child(2) {1580	font-size: 18px;1581	--o: 0.1;1582	--speed: 23;1583	--glow-at: -41s;1584}1585.ticker-row:nth-child(3) {1586	font-size: 7px;1587	--o: 0.04;1588	--speed: 9;1589	--glow-at: -77s;1590}1591.ticker-row:nth-child(4) {1592	font-size: 13px;1593	--o: 0.07;1594	--speed: 17;1595	--glow-at: -29s;1596}1597.ticker-row:nth-child(5) {1598	font-size: 22px;1599	--o: 0.12;1600	--speed: 29;1601	--glow-at: -65s;1602}1603.ticker-row:nth-child(6) {1604	font-size: 8px;1605	--o: 0.045;1606	--speed: 10;1607	--glow-at: -17s;1608}1609.ticker-row:nth-child(7) {1610	font-size: 15px;1611	--o: 0.08;1612	--speed: 20;1613	--glow-at: -53s;1614}1615@keyframes ticker-drift {1616	to {1617		transform: translateX(-50%);1618	}1619}1620@keyframes ticker-glow {1621	0%,1622	10%,1623	100% {1624		color: var(--text-secondary);1625		opacity: var(--o);1626		text-shadow: none;1627	}1628	5% {1629		color: var(--accent);1630		opacity: calc(var(--o) * 3.5);1631		text-shadow: 0 0 3px var(--accent-tint-12);1632	}1633}16341635.headline {1636	display: grid;1637	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);1638	gap: 48px;1639	align-items: center;1640	padding: 56px 0 40px;1641}1642.headline h1 {1643	font-size: clamp(2rem, 5vw, 3.5rem);1644	font-weight: 400;1645	line-height: 1.15;1646	color: var(--text-heading);1647	margin: 0 0 20px;1648	animation: fadeUp 480ms ease both;1649}1650.headline-tagline {1651	margin: 0;1652	font-size: 0.9375rem;1653	line-height: 1.7;1654	color: var(--text-secondary);1655	animation: fadeUp 480ms 80ms ease both;1656}1657.headline-cloud {1658	display: flex;1659	flex-wrap: wrap;1660	justify-content: center;1661	align-items: center;1662	gap: 10px 22px;1663	padding: 20px;1664	animation: fadeIn 600ms 160ms ease both;1665}1666.tc-tag {1667	font-family: var(--mono);1668	letter-spacing: 0.03em;1669	white-space: nowrap;1670	color: var(--accent-dim);1671	transition:1672		color 0.2s,1673		opacity 0.2s,1674		text-shadow 0.2s;1675}1676.tc-tag:hover {1677	color: var(--accent);1678	opacity: 1;1679	text-shadow: 0 0 14px var(--accent-tint-12);1680}1681.tc-1 {1682	font-size: 10px;1683	opacity: 0.42;1684}1685.tc-2 {1686	font-size: 12px;1687	opacity: 0.56;1688}1689.tc-3 {1690	font-size: 15px;1691	opacity: 0.7;1692}1693.tc-4 {1694	font-size: 18px;1695	opacity: 0.85;1696	font-weight: 500;1697}1698.tc-5 {1699	font-size: 23px;1700	opacity: 1;1701	font-weight: 500;1702}17031704.featured-label {1705	font-size: 0.6875rem;1706	font-weight: 400;1707	letter-spacing: 0.08em;1708	text-transform: uppercase;1709	color: var(--text-secondary);1710	margin: 0 0 12px;1711}1712.landing-self-host {1713	margin: 32px 0 0;1714	font-size: 0.75rem;1715}1716.landing-self-host a {1717	color: var(--text-secondary);1718}17191720/* ----- repo cards (front page, browse, profile) --------------------------- */17211722.card-grid {1723	display: grid;1724	grid-template-columns: repeat(2, minmax(0, 1fr));1725	gap: 16px;1726}1727.repo-card {1728	display: flex;1729	flex-direction: column;1730	padding: 20px 22px 16px;1731	border: 1px solid var(--bg-elevated);1732	border-radius: 4px;1733	background: var(--bg);1734	transition:1735		border-color 120ms,1736		background 120ms;1737	animation: fadeUp 350ms ease both;1738}1739.repo-card:hover {1740	text-decoration: none;1741	border-color: var(--text-faint);1742	background: var(--accent-tint-04);1743}1744.repo-card-head {1745	display: flex;1746	align-items: baseline;1747	justify-content: space-between;1748	gap: 12px;1749}1750.repo-card-name {1751	font-size: 1.375rem;1752	line-height: 1.1;1753	color: var(--accent);1754	overflow: hidden;1755	text-overflow: ellipsis;1756	white-space: nowrap;1757}1758.repo-card-saves {1759	font-size: 0.6875rem;1760	white-space: nowrap;1761}1762.repo-card-desc {1763	margin: 8px 0 0;1764	font-size: 0.8125rem;1765	line-height: 1.5;1766	color: var(--text-secondary);1767	display: -webkit-box;1768	-webkit-line-clamp: 2;1769	-webkit-box-orient: vertical;1770	overflow: hidden;1771}1772.repo-card-cat {1773	margin: 10px 0 0;1774	font-size: 0.9375rem;1775	color: var(--text);1776}17771778/* ----- profile ------------------------------------------------------------ */17791780/* The cover runs the full width of the window while the page keeps its column. */1781.profile-cover {1782	position: relative;1783	height: 380px;1784	margin: -24px calc(50% - 50vw) 0;1785	overflow: hidden;1786	border-bottom: 1px solid var(--bg-surface);1787}1788.hex-backdrop {1789	position: absolute;1790	inset: 0;1791	display: flex;1792	flex-direction: row-reverse;1793	justify-content: center;1794	align-items: center;1795	gap: 13px;1796	pointer-events: none;1797	user-select: none;1798	font-family: var(--mono);1799	font-size: 13px;1800	line-height: 16px;1801	color: var(--accent-dim);1802}1803/* Characters top to bottom, columns right to left, each breathing on its own clock. */1804.hex-col {1805	writing-mode: vertical-rl;1806	text-orientation: upright;1807	letter-spacing: 3px;1808	opacity: 0.05;1809	animation: hex-breathe 17s ease-in-out infinite;1810	transition:1811		color 1.6s ease,1812		text-shadow 1.6s ease;1813}1814.hex-col:nth-child(3n) {1815	color: var(--accent);1816	animation-duration: 23s;1817	animation-delay: -7s;1818}1819.hex-col:nth-child(4n + 1) {1820	animation-duration: 29s;1821	animation-delay: -13s;1822}1823.hex-col:nth-child(5n + 2) {1824	animation-duration: 19s;1825	animation-delay: -3s;1826}1827.hex-col:nth-child(7n) {1828	animation-delay: -21s;1829}1830.hex-col.glow {1831	color: var(--accent-bright);1832	text-shadow: 0 0 6px var(--accent-tint-12);1833}1834@keyframes hex-breathe {1835	0%,1836	100% {1837		opacity: 0.05;1838	}1839	50% {1840		opacity: 0.22;1841	}1842}1843.profile-cover-fade {1844	position: absolute;1845	left: 0;1846	right: 0;1847	bottom: 0;1848	height: 55%;1849	background: linear-gradient(to bottom, transparent, var(--bg));1850	pointer-events: none;1851}1852.profile-identity {1853	position: absolute;1854	bottom: 40px;1855	left: 0;1856	right: 0;1857	max-width: 980px;1858	margin: 0 auto;1859	padding: 0 48px;1860}1861.profile-username {1862	margin: 0 0 8px;1863	font-family: "Sacramento", cursive;1864	font-weight: 400;1865	font-size: 3.625rem;1866	line-height: 1;1867	letter-spacing: -0.02em;1868	text-transform: lowercase;1869	color: var(--text-heading);1870	user-select: none;1871	animation: fadeUp 500ms ease both;1872}1873.profile-signature {1874	display: block;1875	max-height: 96px;1876	max-width: min(360px, 100%);1877}1878.profile-tagline {1879	margin: 0 0 6px;1880	font-family: var(--mono);1881	font-size: 0.75rem;1882	letter-spacing: 0.15em;1883	color: var(--text-faint);1884}1885.profile-op-badge {1886	display: block;1887	font-size: 0.6875rem;1888	letter-spacing: 0.18em;1889	color: var(--accent);1890}18911892.profile-portrait-section {1893	display: grid;1894	grid-template-columns: 320px minmax(0, 1fr);1895	gap: 40px;1896	align-items: start;1897	padding-top: 40px;1898}1899.profile-left {1900	display: flex;1901	flex-direction: column;1902	gap: 16px;1903}1904.profile-identity-card,1905.profile-languages-bar {1906	padding: 20px 24px;1907	border: 1px solid var(--bg-elevated);1908	border-radius: 4px;1909}1910.profile-identity-bio {1911	margin: 0;1912	font-size: 0.875rem;1913	line-height: 1.5;1914	color: var(--text-muted);1915}1916.profile-identity-location {1917	margin: 6px 0 0;1918	font-family: var(--mono);1919	font-size: 0.8125rem;1920	color: var(--text-muted);1921}1922.profile-website-pill {1923	display: inline-block;1924	max-width: 100%;1925	margin-top: 10px;1926	padding: 3px 8px;1927	overflow: hidden;1928	text-overflow: ellipsis;1929	white-space: nowrap;1930	border: 1px solid var(--text-faint);1931	border-radius: 3px;1932	background: var(--bg-surface);1933	font-family: var(--mono);1934	font-size: 0.6875rem;1935	color: var(--accent);1936}1937.profile-website-pill:hover {1938	border-color: var(--accent);1939	text-decoration: none;1940}1941.profile-stats-grid {1942	display: grid;1943	grid-template-columns: 1fr 1fr;1944	border: 1px solid var(--bg-elevated);1945	border-radius: 4px;1946	overflow: hidden;1947}1948.profile-stat-tile {1949	padding: 16px;1950	border-right: 1px solid var(--bg-elevated);1951	border-bottom: 1px solid var(--bg-elevated);1952}1953.profile-stat-tile:nth-child(2n) {1954	border-right: none;1955}1956.profile-stat-tile:nth-last-child(-n + 2) {1957	border-bottom: none;1958}1959.profile-stat-number {1960	margin-bottom: 4px;1961	font-weight: 600;1962	font-size: 1.75rem;1963	line-height: 1;1964	color: var(--accent);1965}1966.profile-stat-label,1967.profile-section-label {1968	font-family: var(--mono);1969	font-size: 0.625rem;1970	text-transform: uppercase;1971	letter-spacing: 0.08em;1972	color: var(--text-faint);1973}1974.profile-lang-bar {1975	display: block;1976	width: 100%;1977	height: 6px;1978	margin-bottom: 8px;1979	border-radius: 3px;1980	background: var(--bg-surface);1981}1982.profile-lang-bar rect {1983	fill: var(--accent);1984	opacity: 0.6;1985}1986.profile-lang-bar rect:nth-child(2) {1987	fill: var(--sage);1988}1989.profile-lang-bar rect:nth-child(3) {1990	fill: var(--accent-flash);1991	opacity: 0.45;1992}1993.profile-lang-bar rect:nth-child(4) {1994	fill: var(--accent-dim);1995}1996.profile-lang-labels {1997	display: flex;1998	flex-wrap: wrap;1999	gap: 10px;2000	font-family: var(--mono);2001	font-size: 0.625rem;2002	color: var(--text-muted);2003}2004.profile-section-label {2005	margin-bottom: 16px;2006	letter-spacing: 0.2em;2007}2008.profile-event {2009	display: grid;2010	grid-template-columns: 96px 12px minmax(0, 1fr) auto;2011	gap: 10px;2012	align-items: baseline;2013	padding: 7px 0;2014	border-bottom: 1px solid var(--bg-surface);2015	font-family: var(--mono);2016	font-size: 0.6875rem;2017	animation: fadeUp 300ms ease both;2018}2019.profile-event-repo,2020.profile-event-message {2021	overflow: hidden;2022	text-overflow: ellipsis;2023	white-space: nowrap;2024}2025.profile-event-repo,2026.profile-event-glyph {2027	color: var(--accent);2028}2029.profile-event-glyph {2030	font-size: 0.625rem;2031}2032.profile-event-message {2033	color: var(--text-muted);2034}2035.profile-event-message:hover {2036	color: var(--text-heading);2037}2038.profile-event-time {2039	font-size: 0.625rem;2040	white-space: nowrap;2041	color: var(--text-faint);2042}2043.profile-empty-state {2044	font-style: italic;2045	font-size: 0.8125rem;2046	color: var(--text-faint);2047}2048.profile-repos-section {2049	margin-top: 40px;2050	padding-top: 40px;2051	border-top: 1px solid var(--bg-surface);2052}20532054/* ----- docs and support --------------------------------------------------- */20552056.admin-layout {2057	display: grid;2058	grid-template-columns: 160px minmax(0, 1fr);2059	gap: 48px;2060	min-height: 70vh;2061}2062.admin-sidebar {2063	position: sticky;2064	top: 24px;2065	align-self: start;2066	padding: 24px 0;2067	font-size: 0.75rem;2068}2069.admin-sidebar nav,2070.admin-sidebar-foot {2071	display: flex;2072	flex-direction: column;2073	gap: 16px;2074	margin-top: 20px;2075}2076.admin-sidebar a {2077	color: var(--text-secondary);2078}2079.admin-sidebar a[aria-current] {2080	color: var(--accent);2081	border-left: 2px solid var(--accent);2082	padding-left: 12px;2083}2084.admin-sidebar-foot {2085	border-top: 1px solid var(--border);2086	padding-top: 24px;2087	margin-top: 40px;2088}2089.admin-content {2090	min-width: 0;2091}2092.admin-heading {2093	border-bottom: 1px solid var(--border);2094	padding: 24px 0;2095	margin-bottom: 32px;2096}2097.admin-heading h1 {2098	font-size: 2rem;2099	font-weight: 400;2100	margin: 8px 0 0;2101	color: var(--text-heading);2102}2103.admin-intro {2104	color: var(--text-secondary);2105	margin-bottom: 24px;2106}2107.admin-notice {2108	color: var(--sage);2109	border-left: 2px solid var(--sage);2110	padding-left: 16px;2111}2112.admin-content .profile-signature {2113	max-width: 240px;2114	max-height: 120px;2115	object-fit: contain;2116}2117.admin-vitals {2118	display: flex;2119	flex-wrap: wrap;2120	gap: 24px 40px;2121	padding: 0 0 24px;2122	border-bottom: 1px solid var(--border);2123}2124.admin-vitals strong {2125	display: block;2126	font-size: 1.75rem;2127	font-weight: 400;2128	color: var(--accent);2129}2130.admin-repos {2131	display: grid;2132	grid-template-columns: minmax(120px, 0.7fr) minmax(0, 1.3fr);2133	gap: 24px;2134	margin-top: 24px;2135}2136.admin-repos .issue-row {2137	flex-wrap: wrap;2138}2139.admin-repos [aria-current] {2140	border-left: 2px solid var(--accent);2141	padding-left: 12px;2142}2143@media (max-width: 680px) {2144	.admin-repos {2145		grid-template-columns: minmax(0, 1fr);2146	}2147	.admin-layout {2148		grid-template-columns: minmax(0, 1fr);2149		gap: 0;2150	}2151	.admin-sidebar {2152		position: static;2153		padding: 8px 0;2154	}2155	.admin-sidebar nav,2156	.admin-sidebar-foot {2157		flex-flow: row wrap;2158		gap: 12px 20px;2159	}2160	.admin-sidebar-foot {2161		margin-top: 16px;2162		padding-top: 16px;2163	}2164}21652166.site-doc {2167	max-width: 72ch;2168	margin-top: 16px;2169}2170.site-doc h1 {2171	font-size: clamp(2rem, 5vw, 3rem);2172	font-weight: 400;2173	color: var(--text-heading);2174}2175.site-doc h2 {2176	margin-top: 2.4em;2177	scroll-margin-top: 24px;2178}2179.site-doc-layout {2180	display: grid;2181	grid-template-columns: 180px minmax(0, 72ch);2182	gap: 48px;2183}2184.site-doc-nav {2185	position: sticky;2186	top: 24px;2187	align-self: start;2188	display: flex;2189	flex-direction: column;2190	gap: 10px;2191	margin-top: 32px;2192	font-size: 0.8125rem;2193}2194.site-doc-nav a {2195	color: var(--text-secondary);2196	text-decoration: none;2197}2198.site-doc-nav a:hover {2199	color: var(--text-heading);2200}2201@media (max-width: 860px) {2202	.site-doc-layout {2203		grid-template-columns: minmax(0, 1fr);2204		gap: 0;2205	}2206	.site-doc-nav {2207		position: static;2208		flex-flow: row wrap;2209		gap: 8px 16px;2210		margin-top: 24px;2211	}2212}22132214@media (max-width: 860px) {2215	.headline,2216	.profile-portrait-section {2217		grid-template-columns: minmax(0, 1fr);2218	}2219	.headline {2220		gap: 8px;2221		padding-top: 48px;2222	}2223	.card-grid {2224		grid-template-columns: minmax(0, 1fr);2225	}2226}2227@media (max-width: 768px) {2228	.editor-panes {2229		grid-template-columns: minmax(0, 1fr);2230	}2231	.fv-header {2232		flex-wrap: wrap;2233		height: auto;2234		padding: 8px 12px;2235		gap: 8px 12px;2236	}2237	.fv-body {2238		grid-template-columns: minmax(0, 1fr);2239	}2240	.fv-detail {2241		display: none;2242	}2243	.ticker {2244		height: 226px;2245		margin-top: -88px;2246		padding-top: 80px;2247	}2248	.profile-cover {2249		height: 280px;2250		margin-top: -16px;2251	}2252	.profile-identity {2253		bottom: 24px;2254		padding: 0 16px;2255	}2256	.profile-username {2257		font-size: 2.5rem;2258	}2259	.profile-event {2260		grid-template-columns: 72px 12px minmax(0, 1fr);2261	}2262	.profile-event-time {2263		display: none;2264	}2265}22662267/* ----- media in Markdown and the signed-in editor ------------------------- */22682269/* Sizes and places from an image's options (markdown.ts); classes, as the policy allows no inline2270   style. */2271.markdown .media {2272	display: block;2273	max-width: 100%;2274	height: auto;2275	margin: 12px auto;2276	border-radius: 3px;2277}2278.markdown .media-left {2279	margin-left: 0;2280}2281.markdown .media-right {2282	margin-right: 0;2283}2284.markdown .media-w25 {2285	width: 25%;2286}2287.markdown .media-w33 {2288	width: 33%;2289}2290.markdown .media-w50 {2291	width: 50%;2292}2293.markdown .media-w66 {2294	width: 66%;2295}2296.markdown .media-w75 {2297	width: 75%;2298}2299.markdown .media-w100 {2300	width: 100%;2301}2302.edit-btn {2303	margin-left: 12px;2304	padding: 1px 7px;2305	background: transparent;2306	border: 1px solid rgba(200, 154, 90, 0.2);2307	border-radius: 2px;2308	font-size: 0.625rem;2309	color: var(--text-faint);2310	cursor: pointer;2311	vertical-align: middle;2312}2313.edit-btn:hover {2314	color: var(--accent);2315	border-color: var(--accent-dim);2316}2317.editor {2318	display: grid;2319	gap: 8px;2320	margin: 8px 0 16px;2321}2322.editor-toolbar,2323.editor-media,2324.editor-actions {2325	display: flex;2326	flex-wrap: wrap;2327	align-items: center;2328	gap: 4px;2329}2330.editor-media[hidden] {2331	display: none;2332}2333.editor-label,2334.editor-status {2335	margin: 0 6px;2336	font-size: 0.625rem;2337	color: var(--text-faint);2338}2339.editor-panes {2340	display: grid;2341	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);2342	gap: 12px;2343}2344.editor-input {2345	width: 100%;2346	min-height: 4lh;2347	max-height: 70vh;2348	field-sizing: content;2349	resize: vertical;2350	padding: 10px 12px;2351	background: var(--bg-surface);2352	border: 1px solid var(--border);2353	border-radius: 3px;2354	color: var(--text);2355	font-size: 0.75rem;2356	line-height: 1.6;2357}2358.editor-input:focus {2359	outline: none;2360	border-color: var(--accent-dim);2361}2362.editor-preview {2363	min-width: 0;2364	max-height: 70vh;2365	overflow-y: auto;2366	padding: 0 4px;2367}2368.editor-preview:empty::before {2369	content: attr(data-empty);2370	font-family: var(--mono);2371	font-size: 0.625rem;2372	color: var(--text-faint);2373}23742375/* ----- file viewer (Kepr 2's Atlas modal) -------------------------------- */23762377body:has(> .fv-overlay) {2378	overflow: hidden;2379}2380.fv-overlay {2381	position: fixed;2382	inset: 0;2383	z-index: 2000;2384	display: flex;2385	flex-direction: column;2386	background: rgba(8, 7, 5, 0.97);2387	outline: none;2388	animation: fv-in 200ms ease both;2389}2390@keyframes fv-in {2391	from {2392		opacity: 0;2393		transform: translateY(6px) scale(0.97);2394	}2395}2396.fv-header {2397	display: flex;2398	align-items: center;2399	gap: 16px;2400	flex-shrink: 0;2401	height: 48px;2402	padding: 0 20px;2403	background: var(--bg);2404	border-bottom: 1px solid var(--bg-elevated);2405}2406.fv-close {2407	background: none;2408	border: 0;2409	padding: 0 4px;2410	font-size: 1.375rem;2411	line-height: 1;2412	color: var(--text-faint);2413	cursor: pointer;2414}2415.fv-close:hover {2416	color: var(--accent);2417}2418.fv-title {2419	display: flex;2420	align-items: baseline;2421	gap: 8px;2422	flex: 1;2423	min-width: 0;2424}2425.fv-name {2426	font-size: 1.25rem;2427	color: var(--text-heading);2428	white-space: nowrap;2429}2430.fv-path {2431	font-size: 0.625rem;2432	color: var(--text-faint);2433	white-space: nowrap;2434	overflow: hidden;2435	text-overflow: ellipsis;2436}2437.fv-controls,2438.fv-nav {2439	display: flex;2440	align-items: center;2441	gap: 4px;2442	flex-shrink: 0;2443}2444.fv-ctrl-btn {2445	background: transparent;2446	border: 1px solid rgba(200, 154, 90, 0.2);2447	border-radius: 2px;2448	padding: 3px 7px;2449	font: inherit;2450	font-size: 0.625rem;2451	color: var(--text-faint);2452	cursor: pointer;2453	transition:2454		color 100ms,2455		border-color 100ms;2456}2457.fv-ctrl-btn:hover:not(:disabled),2458.fv-ctrl-btn.active {2459	color: var(--accent);2460	border-color: rgba(200, 154, 90, 0.5);2461	text-decoration: none;2462}2463.fv-ctrl-btn:disabled {2464	opacity: 0.3;2465	cursor: default;2466}2467.fv-pos {2468	min-width: 48px;2469	text-align: center;2470	font-size: 0.625rem;2471	color: var(--text-faint);2472}2473.fv-body {2474	flex: 1;2475	min-height: 0;2476	display: grid;2477	grid-template-columns: minmax(0, 1fr) 280px;2478}2479.fv-source {2480	min-height: 0;2481	overflow: auto;2482	padding: 16px 28px 32px;2483	font-family: var(--mono);2484	font-size: 0.6875rem;2485	color: var(--text-faint);2486}2487.fv-source .file-view {2488	margin: -16px -28px 0;2489	border: 0;2490	background: none;2491	overflow: visible;2492}2493.fv-source .code {2494	font-size: var(--fv-size);2495	color: var(--text);2496}2497.fv-wrap .fv-source .lc {2498	white-space: pre-wrap;2499	overflow-wrap: anywhere;2500}2501.fv-source .file-markdown {2502	font-family: var(--sans);2503	font-size: calc(var(--fv-size) + 2px);2504	color: var(--text);2505}2506.fv-detail .atlas-info-desc {2507	font-size: 0.8125rem;2508}2509.fv-detail {2510	overflow-y: auto;2511	padding: 18px 20px 24px;2512	background: var(--bg);2513	border-left: 1px solid var(--bg-elevated);2514}25152516/* Last in the file, after every animation it stops, so it wins without !important. */2517@media (prefers-reduced-motion: reduce) {2518	.tri-outer,2519	.tri-inner,2520	.repo-name,2521	.repo-contributor,2522	.repo-desc,2523	.repo-homepage,2524	.repo-meta,2525	.repo-tabs,2526	.install-lines,2527	.repo-section,2528	.repo-details,2529	.save-message-head,2530	.ticker-row,2531	.ticker-track,2532	.hex-col,2533	.headline h1,2534	.headline-tagline,2535	.headline-cloud,2536	.repo-card,2537	.profile-username,2538	.profile-event,2539	.fv-overlay,2540	.repo-panel {2541		animation: none;2542	}2543	.hex-col {2544		opacity: 0.12;2545	}2546}