<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wikisp.org/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMainpage%2Fstyles.css</id>
	<title>Módulo:Mainpage/styles.css - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wikisp.org/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AMainpage%2Fstyles.css"/>
	<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mainpage/styles.css&amp;action=history"/>
	<updated>2026-09-14T06:04:56Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mainpage/styles.css&amp;diff=8126&amp;oldid=prev</id>
		<title>Luxbane: 1 revisión importada</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mainpage/styles.css&amp;diff=8126&amp;oldid=prev"/>
		<updated>2026-09-11T23:10:03Z</updated>

		<summary type="html">&lt;p&gt;1 revisión importada&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 23:10 11 sep 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Luxbane</name></author>
	</entry>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mainpage/styles.css&amp;diff=8125&amp;oldid=prev</id>
		<title>scw&gt;Alistar Bot: The third copy references Module:Countdown&#039;s named reservation instead of restating the arithmetic (via update-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:Mainpage/styles.css&amp;diff=8125&amp;oldid=prev"/>
		<updated>2026-08-27T21:59:53Z</updated>

		<summary type="html">&lt;p&gt;The third copy references Module:Countdown&amp;#039;s named reservation instead of restating the arithmetic (via update-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Main page — the hero, the bands, and the twelve-column grid they share.&lt;br /&gt;
   Rendered by Module:Mainpage; the component styles live in&lt;br /&gt;
   Module:Mainpage/cards.css and the ground in Module:Mainpage/ground.css.&lt;br /&gt;
   The artwork arrives via the mainpage gadget (data-gadget-mainpage-hero-src on the&lt;br /&gt;
   container), which fades it in by adding home-hero--loaded.&lt;br /&gt;
   Spacing, radii, and type ride Citizen tokens. Colors are deliberately HARD-CODED:&lt;br /&gt;
   the light-dark() color tokens flip per theme, but the hero commits to dark artwork&lt;br /&gt;
   in both themes, so its palette is fixed (values match the approved comp). */&lt;br /&gt;
&lt;br /&gt;
/* ---- Home page layout system --------------------------------------------&lt;br /&gt;
   The home page runs full bleed: MediaWiki:Citizen.css drops the body&lt;br /&gt;
   container&amp;#039;s gutter for this page, so every band paints edge to edge.&lt;br /&gt;
   Each band therefore has to constrain its own content, which is what these&lt;br /&gt;
   two classes do -- .home-band paints, .home-band__inner measures.&lt;br /&gt;
&lt;br /&gt;
   --home-measure is Citizen&amp;#039;s default --width-layout. Matching it keeps the&lt;br /&gt;
   home page column in line with article text, the sticky header and the&lt;br /&gt;
   footer, so the page reads as part of the wiki rather than a landing page&lt;br /&gt;
   bolted onto it. --home-gutter is the MINIMUM inset: once the viewport is&lt;br /&gt;
   narrower than the measure, the gutter is what remains -- so it is the&lt;br /&gt;
   skin&amp;#039;s own --padding-page (16/24/32 by breakpoint), which keeps the band&lt;br /&gt;
   aligned with the footer and page header at every width below the measure.&lt;br /&gt;
   Above the measure the gutter is inert and the column governs. */&lt;br /&gt;
&lt;br /&gt;
.home-band {&lt;br /&gt;
	--home-measure: 1080px;&lt;br /&gt;
	--home-gutter: var( --padding-page );&lt;br /&gt;
	position: relative;&lt;br /&gt;
	padding-inline: var( --home-gutter );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The measured column. Anything that must line up across bands goes in one&lt;br /&gt;
   of these -- including absolutely positioned overlays, which cannot be&lt;br /&gt;
   children of it and instead re-derive the same column (see&lt;br /&gt;
   .home-hero__status). */&lt;br /&gt;
.home-band__inner {&lt;br /&gt;
	/* width is explicit because auto inline margins suppress the cross-axis&lt;br /&gt;
	   stretch of a flex item -- without it the column collapses to its content&lt;br /&gt;
	   and stops lining up with the rest of the page. */&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	max-width: var( --home-measure );&lt;br /&gt;
	margin-inline: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero {&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	min-height: 560px;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	justify-content: center;&lt;br /&gt;
	padding-block: calc( var( --space-xxl ) * 2 );&lt;br /&gt;
	background-color: #101418;&lt;br /&gt;
	color: #f4f8fb;&lt;br /&gt;
	border-bottom: 1px solid #1c242e;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__media,&lt;br /&gt;
.home-hero__scrim {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	right: 0;&lt;br /&gt;
	bottom: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__media img {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	left: 0;&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	height: 100%;&lt;br /&gt;
	object-fit: cover;&lt;br /&gt;
	object-position: center 35%;&lt;br /&gt;
	opacity: 0;&lt;br /&gt;
	transition: opacity 0.6s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero--loaded .home-hero__media img {&lt;br /&gt;
	opacity: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	.home-hero__media img {&lt;br /&gt;
		transition: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__scrim {&lt;br /&gt;
	background: linear-gradient( to bottom, rgba( 13, 17, 23, 0.7 ) 0%, rgba( 13, 17, 23, 0.3 ) 35%, rgba( 13, 17, 23, 0.45 ) 100% );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Pinned to the top of the band, but aligned to the measured column rather&lt;br /&gt;
   than the hero edge -- left+right insets with max-width and auto margins&lt;br /&gt;
   reproduce .home-band__inner for an absolutely positioned box, so the chips&lt;br /&gt;
   stay level with the content instead of drifting to the far edge on a wide&lt;br /&gt;
   display. */&lt;br /&gt;
.home-hero__status {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	top: var( --space-xl );&lt;br /&gt;
	right: var( --home-gutter );&lt;br /&gt;
	left: var( --home-gutter );&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
	display: flex;&lt;br /&gt;
	justify-content: flex-end;&lt;br /&gt;
	gap: var( --space-xl );&lt;br /&gt;
	max-width: var( --home-measure );&lt;br /&gt;
	margin-inline: auto;&lt;br /&gt;
	font-family: var( --font-family-monospace );&lt;br /&gt;
	font-weight: var( --font-weight-semi-bold );&lt;br /&gt;
	font-size: var( --font-size-x-small );&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
	text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__status-live {&lt;br /&gt;
	color: #5fe0a1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__status-ptu {&lt;br /&gt;
	color: #f0bd68;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__status a {&lt;br /&gt;
	color: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__content {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__statline {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: var( --space-lg );&lt;br /&gt;
	margin: 0 0 var( --space-xl );&lt;br /&gt;
	font-family: var( --font-family-monospace );&lt;br /&gt;
	font-size: var( --font-size-x-small );&lt;br /&gt;
	letter-spacing: 0.1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__stat {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: var( --space-xs );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__stat-label,&lt;br /&gt;
.home-hero__stat-value {&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__stat-value {&lt;br /&gt;
	font-weight: var( --font-weight-medium );&lt;br /&gt;
	font-size: var( --font-size-small );&lt;br /&gt;
	letter-spacing: -0.025em;&lt;br /&gt;
	color: #e9eef4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The odometer&amp;#039;s rules live in MediaWiki:Gadget-mainpage.css, not here: nothing&lt;br /&gt;
   on this page emits that markup — the gadget builds it — and the event&lt;br /&gt;
   countdown needs the same reels, so they belong with the script that creates&lt;br /&gt;
   them rather than duplicated across two component stylesheets. .home-hero__sr&lt;br /&gt;
   stays because server-rendered markup uses it and it must keep working with&lt;br /&gt;
   the script switched off. */&lt;br /&gt;
.home-hero__sr {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	width: 1px;&lt;br /&gt;
	height: 1px;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
	clip-path: inset( 50% );&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__statline .citizen-ui-icon {&lt;br /&gt;
	width: 1rem;&lt;br /&gt;
	height: 1rem;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
	min-height: 0;&lt;br /&gt;
	color: #9db0c0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__title {&lt;br /&gt;
	max-width: 960px;&lt;br /&gt;
	font-weight: 500;&lt;br /&gt;
	font-optical-sizing: none;&lt;br /&gt;
	font-size: 3rem;&lt;br /&gt;
	letter-spacing: -0.025em;&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	color: #f4f8fb;&lt;br /&gt;
	text-shadow: 0 2px 24px rgba( 0, 0, 0, 0.55 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__title-dim {&lt;br /&gt;
	color: #b8c6d3;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
	width: 100%;&lt;br /&gt;
	max-width: 820px;&lt;br /&gt;
	height: 4rem;&lt;br /&gt;
	margin-top: var( --space-xxl );&lt;br /&gt;
	padding: 0 var( --space-xl );&lt;br /&gt;
	font-size: var( --font-size-large );&lt;br /&gt;
	color: #9fb0bf;&lt;br /&gt;
	background-color: #12181f;&lt;br /&gt;
	border: 1px solid #2b3846;&lt;br /&gt;
	border-radius: var( --border-radius-large );&lt;br /&gt;
	cursor: pointer;&lt;br /&gt;
	transition: border-color 0.25s ease, box-shadow 0.25s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The rolling tail of the search label (mainpage gadget, searchReel).&lt;br /&gt;
   The label is a flex row so the tail&amp;#039;s window can be centred against the&lt;br /&gt;
   &amp;quot;Search&amp;quot; text without relying on vertical-align; the cells centre their glyph&lt;br /&gt;
   with flex rather than line-height, because a reader may force&lt;br /&gt;
   `line-height: 1.5 !important` (WCAG 1.4.12) and an author cannot outrank it,&lt;br /&gt;
   which would push each string out of its window and clip it.&lt;br /&gt;
   Everything here is inert until the gadget builds the reel -- with no JS the&lt;br /&gt;
   tail is just the label&amp;#039;s last words. */&lt;br /&gt;
&lt;br /&gt;
/* COUPLING: because this is a flex container, the bare &amp;quot;Search&amp;quot; text becomes an&lt;br /&gt;
   anonymous flex item and its TRAILING SPACE IS COLLAPSED AWAY -- the words run&lt;br /&gt;
   together as &amp;quot;Searchthe Star Citizen Wiki&amp;quot;. The wikitext therefore separates&lt;br /&gt;
   them with &amp;amp;nbsp;, which is not collapsible. Keep it there. It matters with or&lt;br /&gt;
   without the gadget: the label is flex in the no-JS and reduced-motion states&lt;br /&gt;
   too. */&lt;br /&gt;
.home-hero__search-label {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search-tail {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	height: 1.5em;&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search-reel {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex-direction: column;&lt;br /&gt;
	transition: transform 520ms cubic-bezier( 0.22, 1, 0.36, 1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search-reel &amp;gt; span {&lt;br /&gt;
	display: flex;&lt;br /&gt;
	flex: none;&lt;br /&gt;
	align-items: center;&lt;br /&gt;
	height: 1.5em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( prefers-reduced-motion: reduce ) {&lt;br /&gt;
	.home-hero__search-reel {&lt;br /&gt;
		transition: none;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search:hover {&lt;br /&gt;
	border-color: #6fb1e8;&lt;br /&gt;
	box-shadow: 0 0 0 3px rgba( 111, 177, 232, 0.16 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__search img {&lt;br /&gt;
	filter: invert( 0.85 );&lt;br /&gt;
	opacity: 0.9;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* {{Key press}} ships a key cap with balanced padding; this rule only restyles&lt;br /&gt;
   it for the dark field. The block padding is a real step on the scale rather&lt;br /&gt;
   than a hairline, or the cap flattens into a pill, and line-height is pinned&lt;br /&gt;
   here rather than inherited from the template so the cap&amp;#039;s height is owned by&lt;br /&gt;
   this rule. */&lt;br /&gt;
.home-hero__search kbd {&lt;br /&gt;
	margin-left: auto;&lt;br /&gt;
	font-family: var( --font-family-monospace );&lt;br /&gt;
	font-size: var( --font-size-x-small );&lt;br /&gt;
	line-height: 1;&lt;br /&gt;
	color: #8d9dab;&lt;br /&gt;
	background: none;&lt;br /&gt;
	border: 1px solid rgba( 159, 176, 191, 0.4 );&lt;br /&gt;
	border-radius: var( --border-radius-base );&lt;br /&gt;
	padding: var( --space-xxs ) var( --space-xs );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__tabs {&lt;br /&gt;
	position: relative;&lt;br /&gt;
	z-index: 1;&lt;br /&gt;
	display: inline-flex;&lt;br /&gt;
	align-self: flex-start;&lt;br /&gt;
	margin-left: var( --space-xxl );&lt;br /&gt;
	background-color: rgba( 13, 17, 23, 0.85 );&lt;br /&gt;
	border: 1px solid #2b3846;&lt;br /&gt;
	border-top: 0;&lt;br /&gt;
	border-radius: 0 0 var( --border-radius-large ) var( --border-radius-large );&lt;br /&gt;
	overflow: hidden;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The click area is the line box, not padding around it: one 36px line-height&lt;br /&gt;
   sets the tab&amp;#039;s height directly, so the row is the same height whether a tab&lt;br /&gt;
   wraps to a second line or not, and the inline padding is left to do only what&lt;br /&gt;
   it is for. */&lt;br /&gt;
.home-hero__tabs a {&lt;br /&gt;
	padding-inline: var( --space-md );&lt;br /&gt;
	font-size: var( --font-size-x-small );&lt;br /&gt;
	line-height: 36px;&lt;br /&gt;
	font-weight: var( --font-weight-medium );&lt;br /&gt;
	color: #c2cdd8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__tabs a:hover {&lt;br /&gt;
	color: #fff;&lt;br /&gt;
	background-color: rgba( 111, 177, 232, 0.1 );&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-hero__tabs a + a {&lt;br /&gt;
	border-left: 1px solid #232c36;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 639px ) {&lt;br /&gt;
	.home-hero {&lt;br /&gt;
		min-height: 480px;&lt;br /&gt;
		padding-block: calc( var( --space-xxl ) * 2 ) var( --space-xxl );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__status {&lt;br /&gt;
		top: var( --space-lg );&lt;br /&gt;
		justify-content: flex-start;&lt;br /&gt;
		gap: var( --space-md );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__statline {&lt;br /&gt;
		gap: var( --space-md );&lt;br /&gt;
		margin-bottom: var( --space-md );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__statline .citizen-ui-icon {&lt;br /&gt;
		width: 0.875rem;&lt;br /&gt;
		height: 0.875rem;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__title {&lt;br /&gt;
		font-size: 2rem;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__title-dim {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__search {&lt;br /&gt;
		height: 3rem;&lt;br /&gt;
		margin-top: var( --space-lg );&lt;br /&gt;
		padding: 0 var( --space-md );&lt;br /&gt;
		font-size: var( --font-size-small );&lt;br /&gt;
		border-radius: var( --border-radius-medium );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__search kbd {&lt;br /&gt;
		display: none;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__tabs {&lt;br /&gt;
		display: grid;&lt;br /&gt;
		grid-template-columns: 1fr 1fr 1fr;&lt;br /&gt;
		align-self: stretch;&lt;br /&gt;
		margin: 0 var( --space-sm );&lt;br /&gt;
		border-radius: 0 0 var( --border-radius-medium ) var( --border-radius-medium );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__tabs a {&lt;br /&gt;
		padding-inline: 0;&lt;br /&gt;
		text-align: center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__tabs a:nth-child( 4 ) {&lt;br /&gt;
		border-left: 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-hero__tabs a:nth-child( n+4 ) {&lt;br /&gt;
		border-top: 1px solid #232c36;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---- The card band ---------------------------------------------------------&lt;br /&gt;
   Rides var( --home-overlap ) up over the hero. The negative margin belongs to&lt;br /&gt;
   the BAND, never the hero: the hero has `overflow: hidden` to clip its artwork,&lt;br /&gt;
   so anything overlapping upward has to be a sibling that follows it. Both are&lt;br /&gt;
   positioned, so the later sibling paints on top; the z-index is belt-and-&lt;br /&gt;
   braces against anything the skin positions between them.&lt;br /&gt;
&lt;br /&gt;
   The overlap reads from --home-overlap, falling back to --space-xxl, so the&lt;br /&gt;
   amount can be retuned from a single custom property. */&lt;br /&gt;
.home-cards {&lt;br /&gt;
	z-index: 2;&lt;br /&gt;
	margin-top: calc( -1 * var( --home-overlap, var( --space-xxl ) ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---- The column grid ------------------------------------------------------&lt;br /&gt;
   ONE grid for every band on the page, so a card edge in the game row lands on&lt;br /&gt;
   the same line as a card edge in the wiki rows. Every band must therefore use&lt;br /&gt;
   this grid and these span classes; a band that sets its own `fr` ratios lands&lt;br /&gt;
   on different lines and the rows visibly fail to align.&lt;br /&gt;
&lt;br /&gt;
   Twelve is the granularity that carries every split the page needs: 8/4 for&lt;br /&gt;
   the game row and the support column, and a tall 8 spanning two rows beside&lt;br /&gt;
   a stacked 4. Six would only offer 4/2, then 2/2/2 or 2/3/1.&lt;br /&gt;
&lt;br /&gt;
   Module:CardLua gives every card `margin-block` for article flow. In a grid&lt;br /&gt;
   that spacing is the gap&amp;#039;s job, and in the card band it would also cancel the&lt;br /&gt;
   overlap over the hero. */&lt;br /&gt;
.home-grid {&lt;br /&gt;
	display: grid;&lt;br /&gt;
	grid-template-columns: repeat( 12, 1fr );&lt;br /&gt;
	gap: var( --space-md );&lt;br /&gt;
	align-items: stretch;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-grid .t-card {&lt;br /&gt;
	margin-block: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* The three spans the page uses. They go on the card itself: grid-column is a&lt;br /&gt;
   placement property, so unlike a class that sets `display` it cannot collide&lt;br /&gt;
   with CardLua&amp;#039;s own `.t-card { display: flex }`. */&lt;br /&gt;
.home-card--read {&lt;br /&gt;
	grid-column: span 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.home-card--aside {&lt;br /&gt;
	grid-column: span 4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Spans both rows so its band still resolves to a single height while the two&lt;br /&gt;
   cards beside it size to their own content. */&lt;br /&gt;
.home-card--tall {&lt;br /&gt;
	grid-column: span 8;&lt;br /&gt;
	grid-row: span 2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A band carries its own bottom gap, the same value as the grid gap inside it,&lt;br /&gt;
   so a boundary BETWEEN bands never reads as a bigger break than one between&lt;br /&gt;
   cards. */&lt;br /&gt;
.home-cards,&lt;br /&gt;
.home-wiki {&lt;br /&gt;
	padding-block-end: var( --space-md );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media ( max-width: 639px ) {&lt;br /&gt;
	.home-grid {&lt;br /&gt;
		grid-template-columns: 1fr;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-card--read,&lt;br /&gt;
	.home-card--aside,&lt;br /&gt;
	.home-card--tall {&lt;br /&gt;
		grid-column: auto;&lt;br /&gt;
		grid-row: auto;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---- responsive: the middle stage ------------------------------------------&lt;br /&gt;
   The four-column card carries Patreon and Ko-fi side by side, so it cannot go&lt;br /&gt;
   under about 260px, which 8/4 reaches at a viewport of 860. Holding 8/4 from&lt;br /&gt;
   there down to the single-column breakpoint spends 220px of viewport on a&lt;br /&gt;
   layout that no longer fits, and then jumps the same card from 185px to 605 in&lt;br /&gt;
   one pixel of viewport.&lt;br /&gt;
&lt;br /&gt;
   Every card becoming `span 6` settles it without changing the arrangement.&lt;br /&gt;
   grid-row is deliberately NOT touched, so the tall editing card still stands&lt;br /&gt;
   two rows high beside the stacked pair and band three keeps its shape the&lt;br /&gt;
   whole way down. At 640 this stage gives two 288px cards.&lt;br /&gt;
&lt;br /&gt;
   The range is explicit at both ends rather than open-ended, so this block and&lt;br /&gt;
   the single-column one above it are disjoint and neither depends on the&lt;br /&gt;
   other&amp;#039;s position in the file. */&lt;br /&gt;
@media ( min-width: 640px ) and ( max-width: 899.98px ) {&lt;br /&gt;
	.home-card--read,&lt;br /&gt;
	.home-card--tall,&lt;br /&gt;
	.home-card--aside {&lt;br /&gt;
		grid-column: span 6;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* A grid item defaults to `min-width: auto`, which refuses to shrink below its&lt;br /&gt;
   content&amp;#039;s own minimum -- so a card whose content has a large intrinsic width&lt;br /&gt;
   pushes its column wider instead of the content adapting, and hangs out of the&lt;br /&gt;
   band. The featured card is the live case: `min-block-size: 220px` against&lt;br /&gt;
   `aspect-ratio: 16 / 9` implies 391px of minimum WIDTH, which is wider than&lt;br /&gt;
   the column on any phone.&lt;br /&gt;
&lt;br /&gt;
   The height floor is still honoured; it just can no longer dictate the width.&lt;br /&gt;
   The ratio yields to the column instead. */&lt;br /&gt;
.home-grid .t-card {&lt;br /&gt;
	min-width: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---- responsive: the cards inside the middle stage --------------------------&lt;br /&gt;
   Deliberately a second block against the same range as the one above, because&lt;br /&gt;
   it is a different concern: that one is the grid&amp;#039;s own spans, this one is an&lt;br /&gt;
   override of a child component the grid does not own.&lt;br /&gt;
&lt;br /&gt;
   Module:CardLua&amp;#039;s split layout pins its media column at a fixed 13rem and&lt;br /&gt;
   swaps to a stacked, banner-shaped one below 639. That breakpoint is a proxy&lt;br /&gt;
   for a question about CARD width asked in terms of VIEWPORT width, which only&lt;br /&gt;
   holds while the card is roughly as wide as the window -- and in the 6/6 stage&lt;br /&gt;
   it is not: the card is 288-418px while the viewport is still 640-899. Without&lt;br /&gt;
   this rule the card keeps the side-by-side layout and spends 208 of its 288px&lt;br /&gt;
   on the image, leaving a body too narrow to set a word on one line.&lt;br /&gt;
&lt;br /&gt;
   The page is what knows its own grid, so the page is where this belongs;&lt;br /&gt;
   CardLua cannot know how wide the column it was dropped into is. A container&lt;br /&gt;
   query would express it properly and TemplateStyles rejects those. 21 / 8 is&lt;br /&gt;
   CardLua&amp;#039;s own stacked ratio, kept rather than invented so the card looks the&lt;br /&gt;
   same here as it does on a phone.&lt;br /&gt;
&lt;br /&gt;
   Scoped to the card that needs it rather than to every split card in the&lt;br /&gt;
   grid. Module:Mainpage/Event, the banner design, is a single column at every&lt;br /&gt;
   width and would be re-stacking something already stacked. */&lt;br /&gt;
@media ( min-width: 640px ) and ( max-width: 899.98px ) {&lt;br /&gt;
	.home-event-split .t-card__media-layout--split {&lt;br /&gt;
		flex-direction: column;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-event-split .t-card__media-layout--split &amp;gt; .t-card__media {&lt;br /&gt;
		inline-size: auto;&lt;br /&gt;
		aspect-ratio: 21 / 8;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---- responsive: the clock inside the middle stage --------------------------&lt;br /&gt;
   Third block against the same range, one per component it overrides, for the&lt;br /&gt;
   reason given above: the grid owns its spans, and each child component it&lt;br /&gt;
   dropped a breakpoint of its own into has to be corrected separately.&lt;br /&gt;
&lt;br /&gt;
   Module:Countdown lies its clock down two ways: on its own below 639px, where&lt;br /&gt;
   every card is stacked, and on request for a card that carries&lt;br /&gt;
   `t-countdown--flat`. NEITHER covers this. The split event card is stacked&lt;br /&gt;
   here and side by side above 900, so what it needs is a clock that lies down&lt;br /&gt;
   for one range of viewport widths — and a class cannot be conditional on the&lt;br /&gt;
   viewport, which is why this is a media query holding a copy of the&lt;br /&gt;
   declarations rather than the modifier the banner card uses. Keep it in step&lt;br /&gt;
   with Module:Countdown/styles.css.&lt;br /&gt;
&lt;br /&gt;
   The card class raises this to 0,2,0 because it has to: Module:Countdown&amp;#039;s&lt;br /&gt;
   stylesheet is inlined at its #invoke, which is further down the page than&lt;br /&gt;
   these three, so at equal specificity the module would win on source order.&lt;br /&gt;
   It also scopes the rule to the card that needs it. */&lt;br /&gt;
@media ( min-width: 640px ) and ( max-width: 899.98px ) {&lt;br /&gt;
	.home-event-split .t-countdown,&lt;br /&gt;
	.home-event-split .t-countdown--live {&lt;br /&gt;
		display: flex;&lt;br /&gt;
		flex-direction: row;&lt;br /&gt;
		/* Held together at the end of the row rather than spread across it: the&lt;br /&gt;
		   label belongs to the units, and space-between reads as four unrelated&lt;br /&gt;
		   things sharing a line. */&lt;br /&gt;
		justify-content: flex-end;&lt;br /&gt;
		align-items: flex-end;&lt;br /&gt;
		gap: var( --space-md );&lt;br /&gt;
		inline-size: 100%;&lt;br /&gt;
		/* The card stacks here, so the rule that divided two columns becomes&lt;br /&gt;
		   the one that divides two rows. */&lt;br /&gt;
		border-inline-start: 0;&lt;br /&gt;
		border-block-start: var( --border-subtle );&lt;br /&gt;
		/* Three units abreast rather than stacked down a column: at 3rem the&lt;br /&gt;
		   strip dominates the card it is attached to. */&lt;br /&gt;
		--countdown-size: 2.5rem;&lt;br /&gt;
		/* One row now, not four. The third copy of the reservation, for the&lt;br /&gt;
		   same reason as the declarations around it — and the value itself is&lt;br /&gt;
		   Module:Countdown&amp;#039;s, so only the reference is duplicated. */&lt;br /&gt;
		min-block-size: var( --countdown-reserve-flat );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* The label holds the start of the row and the auto margin pushes the units&lt;br /&gt;
	   to the end, so the strip reads left-to-right as &amp;quot;what this is&amp;quot; then &amp;quot;how&lt;br /&gt;
	   long&amp;quot;: justify-content alone would bunch the label up against the days. */&lt;br /&gt;
	.home-event-split .t-countdown__label,&lt;br /&gt;
	.home-event-split .t-countdown__fallback {&lt;br /&gt;
		margin-inline-end: auto;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-event-split .t-countdown--live .t-countdown__label {&lt;br /&gt;
		align-self: center;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-event-split .t-countdown--running {&lt;br /&gt;
		border-block-start-color: var( --border-color-success );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	.home-event-split .t-countdown--upcoming {&lt;br /&gt;
		border-block-start-color: var( --border-color-warning );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>scw&gt;Alistar Bot</name></author>
	</entry>
</feed>