<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://deadlock.wiki/MediaWiki:Gadget-blame.css?action=history&amp;feed=atom</id>
	<title>MediaWiki:Gadget-blame.css - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://deadlock.wiki/MediaWiki:Gadget-blame.css?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://deadlock.wiki/MediaWiki:Gadget-blame.css?action=history"/>
	<updated>2026-09-13T16:58:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://deadlock.wiki/MediaWiki:Gadget-blame.css?diff=126545&amp;oldid=prev</id>
		<title>Kai: Created page with &quot;/* Blame gadget. Codex is not loaded, so the button, progress bar, notice and  * popover shell are all here rather than imported.  * --&gt; https://starcitizen.tools/index.php?title=MediaWiki:Gadget-blame.css&amp;action=edit &lt;--  * Codex design tokens only, never Citizen&#039;s, because the gadget must run on  * other skins; every var() carries the Codex fallback for skins that do not  * expose them. Spacing is literal px because no skin exposes --spacing-*. */  .gadget-blame-legend...&quot;</title>
		<link rel="alternate" type="text/html" href="https://deadlock.wiki/MediaWiki:Gadget-blame.css?diff=126545&amp;oldid=prev"/>
		<updated>2026-09-05T10:04:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;Blame gadget. Codex is not loaded, so the button, progress bar, notice and  * popover shell are all here rather than imported.  * --&amp;gt; https://starcitizen.tools/index.php?title=MediaWiki:Gadget-blame.css&amp;amp;action=edit &amp;lt;--  * Codex design tokens only, never Citizen&amp;#039;s, because the gadget must run on  * other skins; every var() carries the Codex fallback for skins that do not  * expose them. Spacing is literal px because no skin exposes --spacing-*.: &lt;/span&gt;  .gadget-blame-legend...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Blame gadget. Codex is not loaded, so the button, progress bar, notice and&lt;br /&gt;
 * popover shell are all here rather than imported.&lt;br /&gt;
 * --&amp;gt; https://starcitizen.tools/index.php?title=MediaWiki:Gadget-blame.css&amp;amp;action=edit &amp;lt;--&lt;br /&gt;
 * Codex design tokens only, never Citizen&amp;#039;s, because the gadget must run on&lt;br /&gt;
 * other skins; every var() carries the Codex fallback for skins that do not&lt;br /&gt;
 * expose them. Spacing is literal px because no skin exposes --spacing-*. */&lt;br /&gt;
&lt;br /&gt;
.gadget-blame-legend {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	right: 16px;&lt;br /&gt;
	bottom: 16px;&lt;br /&gt;
	/* Scoped to the overlay container, so this only orders the legend against&lt;br /&gt;
	 * other overlays there; the popover and dialog backdrops still cover it. */&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
	width: min( 18rem, calc( 100vw - 32px ) );&lt;br /&gt;
	background-color: var( --background-color-base, #fff );&lt;br /&gt;
	color: var( --color-base, #202122 );&lt;br /&gt;
	border: 1px solid var( --border-color-base, #a2a9b1 );&lt;br /&gt;
	border-radius: var( --border-radius-base, 2px );&lt;br /&gt;
	box-shadow: var( --box-shadow-drop-xx-large, 0 20px 48px 0 rgba( 0, 0, 0, 0.2 ) );&lt;br /&gt;
	font-size: var( --font-size-small, 0.875rem );&lt;br /&gt;
	line-height: var( --line-height-small, 1.375rem );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Several skins put a fixed navigation bar along the bottom edge when narrow. */&lt;br /&gt;
@media ( max-width: 640px ) {&lt;br /&gt;
	.gadget-blame-legend {&lt;br /&gt;
		bottom: 76px;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__header {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: space-between;&lt;br /&gt;
	gap: 8px;&lt;br /&gt;
	padding: 4px 4px 4px 16px;&lt;br /&gt;
	border-bottom: 1px solid var( --border-color-subtle, #c8ccd1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__title {&lt;br /&gt;
	font-weight: var( --font-weight-semi-bold, 600 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__body {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 8px;&lt;br /&gt;
	padding: 16px;&lt;br /&gt;
	max-height: min( 60vh, 32rem );&lt;br /&gt;
	overflow: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__card {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	gap: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__date {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: var( --font-size-small, 0.875rem );&lt;br /&gt;
	line-height: var( --line-height-small, 1.375rem );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__row {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: 4px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__label {&lt;br /&gt;
	flex-grow: 1;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__meta {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__links {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-wrap: wrap;&lt;br /&gt;
	gap: 8px;&lt;br /&gt;
	font-size: var( --font-size-small, 0.875rem );&lt;br /&gt;
	line-height: var( --line-height-small, 1.375rem );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__summary {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	overflow-wrap: break-word;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__footer {&lt;br /&gt;
	margin-top: 8px;&lt;br /&gt;
	padding-top: 8px;&lt;br /&gt;
	border-top: 1px solid var( --border-color-subtle, #c8ccd1 );&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	font-size: var( --font-size-x-small, 0.75rem );&lt;br /&gt;
	line-height: var( --line-height-x-small, 1.25rem );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* No Codex, so every interactive state is spelled out. */&lt;br /&gt;
.gadget-blame__button {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	min-width: 32px;&lt;br /&gt;
	min-height: 32px;&lt;br /&gt;
	padding: 0;&lt;br /&gt;
	background-color: transparent;&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
	border: 1px solid transparent;&lt;br /&gt;
	border-radius: var( --border-radius-base, 2px );&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__button:hover {&lt;br /&gt;
	background-color: var( --background-color-interactive-subtle, rgba( 0, 0, 0, 0.07 ) );&lt;br /&gt;
	color: var( --color-base, #202122 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__button:focus-visible {&lt;br /&gt;
	outline: var( --outline-base--focus, 1px solid transparent );&lt;br /&gt;
	box-shadow: var( --box-shadow-inset-medium, inset 0 0 0 2px ) var( --box-shadow-color-progressive--focus, #36c );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__button svg {&lt;br /&gt;
	fill: currentcolor;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Indeterminate: the revision count is unknown until the history lands. */&lt;br /&gt;
.gadget-blame__bar {&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	height: 2px;&lt;br /&gt;
	background-color: var( --background-color-interactive, rgba( 0, 0, 0, 0.1 ) );&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__bar::after {&lt;br /&gt;
	content: &amp;#039;&amp;#039;;&lt;br /&gt;
	display: block;&lt;br /&gt;
	width: 40%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	background-color: var( --color-progressive, #36c );&lt;br /&gt;
	animation: gadget-blame-bar 1.6s ease-in-out infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes gadget-blame-bar {&lt;br /&gt;
	from {&lt;br /&gt;
		transform: translateX( -100% );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	to {&lt;br /&gt;
		transform: translateX( 350% );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	.gadget-blame__bar::after {&lt;br /&gt;
		width: 100%;&lt;br /&gt;
		animation: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__notice {&lt;br /&gt;
	color: var( --color-subtle, #54595d );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__notice--error {&lt;br /&gt;
	color: var( --color-error, #bf3c2c );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame__notice--warning {&lt;br /&gt;
	color: var( --color-warning, #886425 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Revision popover. The platform puts it in the top layer and dismisses it; the&lt;br /&gt;
 * position is set from script because CSS anchor positioning is Chromium-only. */&lt;br /&gt;
.gadget-blame-popover {&lt;br /&gt;
	position: fixed;&lt;br /&gt;
	inset: auto;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
	max-width: min( 20rem, calc( 100vw - 32px ) );&lt;br /&gt;
	padding: 12px;&lt;br /&gt;
	background-color: var( --background-color-base, #fff );&lt;br /&gt;
	color: var( --color-base, #202122 );&lt;br /&gt;
	border: 1px solid var( --border-color-base, #a2a9b1 );&lt;br /&gt;
	border-radius: var( --border-radius-base, 2px );&lt;br /&gt;
	box-shadow: var( --box-shadow-drop-medium, 0 2px 8px rgba( 0, 0, 0, 0.25 ) );&lt;br /&gt;
	font-size: var( --font-size-small, 0.875rem );&lt;br /&gt;
	line-height: var( --line-height-small, 1.375rem );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Without native popover support it is an ordinary box this gadget shows and&lt;br /&gt;
 * hides; with it, the user agent stylesheet already handles display. */&lt;br /&gt;
.gadget-blame-popover:not( [ popover ] ) {&lt;br /&gt;
	display: none;&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame-popover:not( [ popover ] ).gadget-blame-popover--open {&lt;br /&gt;
	display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Translucent tints keep the page&amp;#039;s own text colour, so they work on either&lt;br /&gt;
 * ground. Lightness alternates so neighbouring hues stay distinguishable to a&lt;br /&gt;
 * red-green colour-blind reader; the ninth-plus editor shares a neutral. */&lt;br /&gt;
.gadget-blame-w {&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
	/* Tint and focus ring drawn per line fragment, not once around a wrapped run. */&lt;br /&gt;
	-webkit-box-decoration-break: clone;&lt;br /&gt;
	box-decoration-break: clone;&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame-w:hover {&lt;br /&gt;
	outline: 1px solid var( --color-progressive, #36c );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The open run and the keyboard tab stop share one treatment. */&lt;br /&gt;
.gadget-blame-w:focus-visible,&lt;br /&gt;
.gadget-blame-w--active {&lt;br /&gt;
	outline: var( --outline-base--focus, 1px solid transparent );&lt;br /&gt;
	box-shadow: var( --box-shadow-inset-medium, inset 0 0 0 2px ) var( --box-shadow-color-progressive--focus, #36c );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame-a0 { background-color: oklch( 0.85 0.13 25 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a1 { background-color: oklch( 0.72 0.13 70 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a2 { background-color: oklch( 0.88 0.13 120 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a3 { background-color: oklch( 0.75 0.13 165 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a4 { background-color: oklch( 0.85 0.13 210 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a5 { background-color: oklch( 0.7 0.13 255 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a6 { background-color: oklch( 0.86 0.13 300 / 0.45 ); }&lt;br /&gt;
.gadget-blame-a7 { background-color: oklch( 0.74 0.13 340 / 0.45 ); }&lt;br /&gt;
.gadget-blame-ax { background-color: oklch( 0.7 0 0 / 0.3 ); }&lt;br /&gt;
&lt;br /&gt;
/* No counterpart in the article source, so it is never tinted. */&lt;br /&gt;
.gadget-blame-w--template {&lt;br /&gt;
	background-image: repeating-linear-gradient( 45deg, transparent 0 3px, oklch( 0.6 0 0 / 0.35 ) 3px 4px );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.gadget-blame-swatch {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	width: 0.9em;&lt;br /&gt;
	height: 0.9em;&lt;br /&gt;
	border-radius: 2px;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Kai</name></author>
	</entry>
</feed>