MediaWiki:Mobile.css: Difference between revisions

From bg3.wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(38 intermediate revisions by the same user not shown)
Line 44: Line 44:
  * == Advertisement ==
  * == Advertisement ==
  *
  *
  * On Citizen, we show a thin fixed banner at the bottom. It's added through a
  * On Citizen, we show a fixed banner at the bottom. It's added through a hook
  * hook in LocalSettings.php and uses the id bg3wiki-footer-ad.
  * in LocalSettings.php and uses the id bg3wiki-footer-ad.
  */
  */


/* Hide the little "Privacy" widget (it's misplaced and should be elsewhere) */
/*
.qc-cmp2-container {
* === Control visibility ===
display: none;
*
}
* The ad only appears if the screen dimensions are at least 320x600, because:
*
* - Smallest ads are 320px in width, so no ads if the screen is narrower.
* - We shouldn't steal any vertical space if the screen isn't tall enough.
*
* Note that mobile browsers often use a height value for CSS media queries
* that's quite a bit smaller than the real height that will be available once
* UI elements of the browser are hidden, which usually happens as the user
* starts scrolling down on a page.
*
* At the time of this writing, this behavior doesn't seem standardized, and
* there's no way to query, in CSS, what the available height will be once the
* browser has hidden some of its UI elements. In JS, it's windnow.innerHeight,
* which gets dynamically updated as UI elements appear and disappear. But the
* height used for CSS media queries is static, and generally seems to be based
* on the initial value of window.innerHeight at first render.
*/


/* Disabled by default; enabled conditionally below. */
#bg3wiki-footer-ad {
#bg3wiki-footer-ad {
display: none;
display: none;
}
}


@media screen and (min-height: 720px) {
@media screen and (min-width: 320px) and (min-height: 600px) {
/* The container for the ad, added via a hook in LocalSettings. */
.mw-ads-enabled #bg3wiki-footer-ad {
.mw-ads-enabled #bg3wiki-footer-ad {
display: block;
display: block;
position: fixed;
bottom: 0;
height: 50px;
width: 100%;
background: var(--color-surface-3);
z-index: 999;
align-content: center;
overflow: hidden;
}
}
}
/* Placeholder text for when ad isn't shown yet / doesn't show up. */
 
#bg3wiki-footer-ad p {
/*
text-align: center;
* === Footer ad height config ===
font-size: 0.9em;
*
font-style: italic;
* Height is conditional, to fit various standard ad sizes:
color: var(--color-subtle);
*
* 320x50, 468x60, 728x90, 970x90
*
* The sizes with height 90px are only used if the screen is very tall.
*/
 
:root {
/* Make sure to use 'px' here or else calc() can break. */
--footer-ad-h: 0px;
}
 
@media screen and (min-width: 320px) and (min-height: 600px) {
:root {
--footer-ad-h: 50px;
}
}
}
/* The actual insertion point for the ad. */
 
#bg3wiki-footer-ad-fuse {
@media screen and (min-width: 468px) and (min-height: 600px) {
position: absolute;
:root {
top: 0;
--footer-ad-h: 60px;
left: 0;
right: 0;
bottom: 0;
/* Must set this for Fuse (ad provider). */
min-height: 50px;
}
}
}
/* Make sure we can scroll to the end, taking the ad into account. */
 
.mw-ads-enabled .citizen-page-container {
@media screen and (min-width: 728px) and (min-height: 800px) {
margin-bottom: 50px;
:root {
--footer-ad-h: 90px;
}
}
}
/*
* === Adjustments to Citizen skin elements ===
*
* Citizen switches its layout at the width limit of 1120px, and we have to
* apply different customizations to the layout based on that.
*/
/* Make sure we can scroll to the end, taking the ad into account. */
.mw-ads-enabled .citizen-page-container {
margin-bottom: var(--footer-ad-h);
}


/* The narrow layout where the Citizen "header" is at the bottom. We have to
  make sure that the "header" and everything tied to it is above the ad. */
@media screen and (max-width: 1119px) {
/* This one is visible even if the Citizen "header" is hidden. Make sure
  it's above the ad. Note that the weird .citizen-feature... class is on
  the <html> element so it's even before .mw-ads-enabled. */
.citizen-feature-autohide-navigation-clientpref-1
.mw-ads-enabled.citizen-scroll--down .citizen-toc {
bottom: calc(var(--footer-ad-h) + var(--space-xs));
}
/* The "header" is actually at the bottom; make sure it's above the ad. */
/* The "header" is actually at the bottom; make sure it's above the ad. */
.mw-ads-enabled .citizen-header {
.mw-ads-enabled .citizen-header {
bottom: 50px;
bottom: var(--footer-ad-h);
}
}
Line 104: Line 143:
.mw-ads-enabled .page-actions,
.mw-ads-enabled .page-actions,
.mw-ads-enabled .citizen-toc {
.mw-ads-enabled .citizen-toc {
bottom: calc(50px + var(--header-size) + var(--space-xs));
bottom: calc(var(--footer-ad-h) + var(--header-size) + var(--space-xs));
}
}
}
/* The wide layout where the Citizen "header" is on the left-side and the TOC
  floats on the right. */
@media screen and (min-width: 1120px) {
/* Make sure "header" (left-side panel) isn't covered by ad. */
.mw-ads-enabled .citizen-header {
bottom: var(--footer-ad-h);
}
/* Make sure TOC isn't too high. */
.mw-ads-enabled .citizen-toc {
max-height: calc(
100vh - var(--footer-ad-h) - var(--height-sticky-header)
);
}
}
/*
* === Rest of the footer ad configuration ===
*/
/* Container */
.mw-ads-enabled #bg3wiki-footer-ad {
position: fixed;
bottom: 0;
left: 0;
height: var(--footer-ad-h);
width: 100%;
background: var(--color-surface-3);
z-index: 999;
align-content: center;
overflow: hidden;
}
/* Placeholder text for when ad isn't shown yet / doesn't show up. */
#bg3wiki-footer-ad p {
text-align: center;
font-size: 0.9em;
font-style: italic;
color: var(--color-subtle);
}
/* The actual insertion point for the ad. */
#bg3wiki-footer-ad-fuse {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
align-content: center;
}
/* The "Ads served by: xyz" text at the bottom. */
#bg3wiki-ad-provider-notice {
margin: 0 var(--padding-page);
color: var(--color-subtle);
}
/*
* == Template-specific CSS ==
*
* These are things that can't be done via Extension:TemplateStyles, because
* they respond to dark/light theme settings.
*/
/*
* === Template:DamageColor ===
*/
.skin-citizen-dark .bg3wiki-damage-type-physical,
.skin-citizen-dark .bg3wiki-damage-type-weapon,
.skin-citizen-dark .bg3wiki-damage-type-piercing,
.skin-citizen-dark .bg3wiki-damage-type-bludgeoning,
.skin-citizen-dark .bg3wiki-damage-type-slashing {
color: #8c8c8c;
}
.skin-citizen-dark .bg3wiki-damage-type-acid {
color: #80b000;
}
.skin-citizen-dark .bg3wiki-damage-type-cold {
color: #3399cc;
}
.skin-citizen-dark .bg3wiki-damage-type-fire {
color: #ee5500;
}
.skin-citizen-dark .bg3wiki-damage-type-force {
color: #cc3333;
}
.skin-citizen-dark .bg3wiki-damage-type-healing {
color: #30bbbb;
}
.skin-citizen-dark .bg3wiki-damage-type-lightning {
color: #3366cc;
}
.skin-citizen-dark .bg3wiki-damage-type-necrotic {
color: #40b050;
}
.skin-citizen-dark .bg3wiki-damage-type-poison {
color: #44bb00;
}
.skin-citizen-dark .bg3wiki-damage-type-radiant {
color: #ccaa00;
}
.skin-citizen-dark .bg3wiki-damage-type-thunder {
color: #8844bb;
}
.skin-citizen-dark .bg3wiki-damage-type-psychic {
color: #cc77aa;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-physical,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-weapon,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-piercing,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-bludgeoning,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-slashing {
color: #8c8c8c;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-acid {
color: #80b000;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-cold {
color: #3399cc;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-fire {
color: #ee5500;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-force {
color: #cc3333;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-healing {
color: #30bbbb;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-lightning {
color: #3366cc;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-necrotic {
color: #40b050;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-poison {
color: #44bb00;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-radiant {
color: #ccaa00;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-thunder {
color: #8844bb;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-psychic {
color: #cc77aa;
}
}


/*
/*
  * == PortableInfobox ==
  * == Extensions ==
*/
 
/*
* === PortableInfobox ===
  */
  */


Line 125: Line 318:
flex-wrap: wrap;
flex-wrap: wrap;
}
}
/*
* === AudioButton ===
*/
a.ext-audiobutton[data-state="play"]::before {
content: ' ';
background-image: url('data:image/svg+xml,
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 64 64">
<circle fill="none" cx="32" cy="32" r="29" stroke-width="3" stroke="%23ffa03c"/>
<polygon fill="%23ffa03c" points="24,18 24,46 48,32 "/>
</svg>');
width: 20px;
height: 20px;
display: inline-block;
background-repeat: no-repeat;
vertical-align: -12%;
background-position: bottom;
}
a.ext-audiobutton[data-state="pause"]::before {
content: ' ';
background-image: url('data:image/svg+xml,
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 64 64">
<circle fill="none" cx="32" cy="32" r="29" stroke-width="3" stroke="%23ffa03c"/>
<line x1="26" y1="20" x2="26" y2="44" stroke="%23ffa03c" stroke-width="4"/>
<line x1="38" y1="20" x2="38" y2="44" stroke="%23ffa03c" stroke-width="4"/>
</svg>');
width: 20px;
height: 20px;
display: inline-block;
background-repeat: no-repeat;
vertical-align: -12%;
background-position: bottom;
}
/*
* == Miscellaneous ==
*/
/* Citizen wraps tables in a pair of divs, and the outer one's width isn't set.
  For some reason, it ends up being narrower than the available width if this
  isn't set. */
/* Not needed as of Citizen v2.27.0 */
/*
.citizen-overflow-wrapper {
width: 100%;
}
*/


/*****************************************************************************
/*****************************************************************************
Line 498: Line 740:
*/
*/


[aria-label]:hover, [aria-label]:focus {position: relative}
.mw-body [aria-label]:hover,
.mw-body [aria-label]:focus {
position: relative;
}


[aria-label]:hover::after,
.mw-body [aria-label]:hover::after,
[aria-label]:focus::after {
.mw-body [aria-label]:focus::after {
position: absolute;
position: absolute;
white-space: pre;
white-space: pre;
Line 518: Line 763:


/* Changes the tooltip position. */
/* Changes the tooltip position. */
[aria-label].aria-label-top-rig:hover::after,
.mw-body [aria-label].aria-label-top-rig:hover::after,
[aria-label].aria-label-top-rig:focus::after {
.mw-body [aria-label].aria-label-top-rig:focus::after {
bottom: 100%;
bottom: 100%;
left: unset;
left: unset;

Latest revision as of 04:01, 5 November 2024

/* All CSS here will be loaded for users of the mobile site */

/*****************************************************************************
 *
 * = START CLEANED UP SECTION =
 *
 * Everything here has to be documented properly, explaining what it does if
 * not obvious, and especially, explaining where the CSS classes/ids/etc. are
 * actually used. Things should be transitioned to use TemplateStyles as much
 * as possible; otherwise list ALL templates / pages that rely on the CSS
 * found in here.
 *
 * Also, the CSS here should be divided into sections and sub-sections just as
 * you would do with headers in a regular page. Use the following format for
 * these "headers" below:
 *
 *  /*
 *   * == This is a section of cleaned-up CSS ==
 *   * /
 *
 *  /*
 *   * === This is a sub-section of the above ===
 *   * /
 *
 *****************************************************************************/

/*
 * == Modify Citizen's dark theme ==
 */

/* The Citizen skin defines some variables based on which the entire color
   palette is defined. It's blue by default for the dark theme. */
:root.skin-citizen-dark {
	/* This should give us a nice dark orange / brown. */
	--color-primary__h: 15;

	/* Make surfaces darker. */
	--color-surface-0: hsl(var(--color-primary__h) 10% 8%);
	--color-surface-1: hsl(var(--color-primary__h) 10% 10%);
	--color-surface-2: hsl(var(--color-primary__h) 10% 12%);
}

/*
 * == Advertisement ==
 *
 * On Citizen, we show a fixed banner at the bottom. It's added through a hook
 * in LocalSettings.php and uses the id bg3wiki-footer-ad.
 */

/*
 * === Control visibility ===
 *
 * The ad only appears if the screen dimensions are at least 320x600, because:
 *
 * - Smallest ads are 320px in width, so no ads if the screen is narrower.
 * - We shouldn't steal any vertical space if the screen isn't tall enough.
 *
 * Note that mobile browsers often use a height value for CSS media queries
 * that's quite a bit smaller than the real height that will be available once
 * UI elements of the browser are hidden, which usually happens as the user
 * starts scrolling down on a page.
 *
 * At the time of this writing, this behavior doesn't seem standardized, and
 * there's no way to query, in CSS, what the available height will be once the
 * browser has hidden some of its UI elements. In JS, it's windnow.innerHeight,
 * which gets dynamically updated as UI elements appear and disappear. But the
 * height used for CSS media queries is static, and generally seems to be based
 * on the initial value of window.innerHeight at first render.
 */

#bg3wiki-footer-ad {
	display: none;
}

@media screen and (min-width: 320px) and (min-height: 600px) {
	.mw-ads-enabled #bg3wiki-footer-ad {
		display: block;
	}
}

/*
 * === Footer ad height config ===
 *
 * Height is conditional, to fit various standard ad sizes:
 *
 * 320x50, 468x60, 728x90, 970x90
 *
 * The sizes with height 90px are only used if the screen is very tall.
 */

:root {
	/* Make sure to use 'px' here or else calc() can break. */
	--footer-ad-h: 0px;
}

@media screen and (min-width: 320px) and (min-height: 600px) {
	:root {
		--footer-ad-h: 50px;
	}
}

@media screen and (min-width: 468px) and (min-height: 600px) {
	:root {
		--footer-ad-h: 60px;
	}
}

@media screen and (min-width: 728px) and (min-height: 800px) {
	:root {
		--footer-ad-h: 90px;
	}
}

/*
 * === Adjustments to Citizen skin elements ===
 *
 * Citizen switches its layout at the width limit of 1120px, and we have to
 * apply different customizations to the layout based on that.
 */

/* Make sure we can scroll to the end, taking the ad into account. */
.mw-ads-enabled .citizen-page-container {
	margin-bottom: var(--footer-ad-h);
}

/* The narrow layout where the Citizen "header" is at the bottom. We have to
   make sure that the "header" and everything tied to it is above the ad. */
@media screen and (max-width: 1119px) {
	/* This one is visible even if the Citizen "header" is hidden. Make sure
	   it's above the ad. Note that the weird .citizen-feature... class is on
	   the <html> element so it's even before .mw-ads-enabled. */
	.citizen-feature-autohide-navigation-clientpref-1
	.mw-ads-enabled.citizen-scroll--down .citizen-toc {
		bottom: calc(var(--footer-ad-h) + var(--space-xs));
	}
	
	/* The "header" is actually at the bottom; make sure it's above the ad. */
	.mw-ads-enabled .citizen-header {
		bottom: var(--footer-ad-h);
	}
	
	/* These float above the header. */
	.mw-ads-enabled .page-actions,
	.mw-ads-enabled .citizen-toc {
		bottom: calc(var(--footer-ad-h) + var(--header-size) + var(--space-xs));
	}
}

/* The wide layout where the Citizen "header" is on the left-side and the TOC
   floats on the right. */
@media screen and (min-width: 1120px) {
	/* Make sure "header" (left-side panel) isn't covered by ad. */
	.mw-ads-enabled .citizen-header {
		bottom: var(--footer-ad-h);
	}
	
	/* Make sure TOC isn't too high. */
	.mw-ads-enabled .citizen-toc {
		max-height: calc(
			100vh - var(--footer-ad-h) - var(--height-sticky-header)
		);
	}
}

/*
 * === Rest of the footer ad configuration ===
 */

/* Container */
.mw-ads-enabled #bg3wiki-footer-ad {
	position: fixed;
	bottom: 0;
	left: 0;
	height: var(--footer-ad-h);
	width: 100%;
	background: var(--color-surface-3);
	z-index: 999;
	align-content: center;
	overflow: hidden;
}

/* Placeholder text for when ad isn't shown yet / doesn't show up. */
#bg3wiki-footer-ad p {
	text-align: center;
	font-size: 0.9em;
	font-style: italic;
	color: var(--color-subtle);
}

/* The actual insertion point for the ad. */
#bg3wiki-footer-ad-fuse {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	align-content: center;
}

/* The "Ads served by: xyz" text at the bottom. */
#bg3wiki-ad-provider-notice {
	margin: 0 var(--padding-page);
	color: var(--color-subtle);
}

/*
 * == Template-specific CSS ==
 *
 * These are things that can't be done via Extension:TemplateStyles, because
 * they respond to dark/light theme settings.
 */

/*
 * === Template:DamageColor ===
 */

.skin-citizen-dark .bg3wiki-damage-type-physical,
.skin-citizen-dark .bg3wiki-damage-type-weapon,
.skin-citizen-dark .bg3wiki-damage-type-piercing,
.skin-citizen-dark .bg3wiki-damage-type-bludgeoning,
.skin-citizen-dark .bg3wiki-damage-type-slashing {
	color: #8c8c8c;
}
.skin-citizen-dark .bg3wiki-damage-type-acid {
	color: #80b000;
}
.skin-citizen-dark .bg3wiki-damage-type-cold {
	color: #3399cc;
}
.skin-citizen-dark .bg3wiki-damage-type-fire {
	color: #ee5500;
}
.skin-citizen-dark .bg3wiki-damage-type-force {
	color: #cc3333;
}
.skin-citizen-dark .bg3wiki-damage-type-healing {
	color: #30bbbb;
}
.skin-citizen-dark .bg3wiki-damage-type-lightning {
	color: #3366cc;
}
.skin-citizen-dark .bg3wiki-damage-type-necrotic {
	color: #40b050;
}
.skin-citizen-dark .bg3wiki-damage-type-poison {
	color: #44bb00;
}
.skin-citizen-dark .bg3wiki-damage-type-radiant {
	color: #ccaa00;
}
.skin-citizen-dark .bg3wiki-damage-type-thunder {
	color: #8844bb;
}
.skin-citizen-dark .bg3wiki-damage-type-psychic {
	color: #cc77aa;
}

.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-physical,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-weapon,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-piercing,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-bludgeoning,
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-slashing {
	color: #8c8c8c;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-acid {
	color: #80b000;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-cold {
	color: #3399cc;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-fire {
	color: #ee5500;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-force {
	color: #cc3333;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-healing {
	color: #30bbbb;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-lightning {
	color: #3366cc;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-necrotic {
	color: #40b050;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-poison {
	color: #44bb00;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-radiant {
	color: #ccaa00;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-thunder {
	color: #8844bb;
}
.skin-citizen-dark .bg3wiki-info-blob .bg3wiki-damage-type-psychic {
	color: #cc77aa;
}

/*
 * == Extensions ==
 */

/*
 * === PortableInfobox ===
 */

.portable-infobox {
	margin-bottom: 2em;
}

/* Style the resistances part of the creature infobox. */
.pi-type-creature [data-item-name="resistances"] ul {
	margin: 0;
	list-style: none;
	display: flex;
	justify-content: center;
	gap: 5px;
	flex-wrap: wrap;
}

/*
 * === AudioButton ===
 */

a.ext-audiobutton[data-state="play"]::before {
	content: ' ';
	background-image: url('data:image/svg+xml,
	<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 64 64">
	<circle fill="none" cx="32" cy="32" r="29" stroke-width="3" stroke="%23ffa03c"/>
	<polygon fill="%23ffa03c" points="24,18 24,46 48,32 "/>
	</svg>');
	width: 20px;
	height: 20px;
	display: inline-block;
	background-repeat: no-repeat;
	vertical-align: -12%;
	background-position: bottom;
}

a.ext-audiobutton[data-state="pause"]::before {
	content: ' ';
	background-image: url('data:image/svg+xml,
	<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 64 64">
	<circle fill="none" cx="32" cy="32" r="29" stroke-width="3" stroke="%23ffa03c"/>
	<line x1="26" y1="20" x2="26" y2="44" stroke="%23ffa03c" stroke-width="4"/>
	<line x1="38" y1="20" x2="38" y2="44" stroke="%23ffa03c" stroke-width="4"/>
	</svg>');
	width: 20px;
	height: 20px;
	display: inline-block;
	background-repeat: no-repeat;
	vertical-align: -12%;
	background-position: bottom;
}

/*
 * == Miscellaneous ==
 */

/* Citizen wraps tables in a pair of divs, and the outer one's width isn't set.
   For some reason, it ends up being narrower than the available width if this
   isn't set. */
/* Not needed as of Citizen v2.27.0 */
/*
.citizen-overflow-wrapper {
	width: 100%;
}
*/

/*****************************************************************************
 *
 * = START LEGACY CSS =
 *
 * This is CSS that was added in the past and wasn't always documented well.
 * Some of it may be unnecessary and should perhaps be cautiously deleted,
 * other parts should be moved either to TemplateStyles or to the cleaned up
 * section above.
 *
 *****************************************************************************/

:root.skin-citizen-dark {
	--background-color-overlay: hsla(var(--color-primary__h) 20% 20% / 60%);
	--background-color-overlay--lighter: hsl(var(--color-primary__h)  20% 20% / 80%);
	
	--bg3wiki-relative-location-bg: var(--color-surface-0);
	--bg3wiki-relative-location-header-bg-dark: var(--color-surface-1);
	
	/* CSS tooltip colours */
	--aria-label-tooltip-bg: hsl(200deg 5% 10%);
	--aria-label-tooltip-fg: hsl(0deg 0% 90%);
	--aria-label-tooltip-border: none;
	
	--bg3wiki-tooltip-border: #785000;
}

/* MobileFrontend should strip elements with this class, but still */
.nomobile {
	display: none;
}

/* Trick to easily make lists with list-style: none */
/* Wrap a list in <div class="bg3wiki-list-style-none"> */
.bg3wiki-list-style-none > ul {
	list-style: none;
}

/* Table styling */

.wikitable {
	width: 100%;
}

/*
 * Various elements used across the wiki
 */

/* Info blob */

div.bg3wiki-info-blob {
	display: inline-block;
	padding: 0 1em 0 1em;
	border-radius: 20px;
}
span.bg3wiki-info-blob {
	padding: 0 0.5em 0 0.5em;
	border-radius: 10px;
}
.bg3wiki-info-blob {
	background-color: var(--color-surface-1);
	font-family: monospace;
}

/* D20 background image for numbers */

.bg3wiki-d20-bg {
	background-image: url('/static/d20-bg.png');
	background-position: center;
	background-repeat: no-repeat;
	background-size: 35px;
}

/* Coordinates */

.skin-citizen-dark .bg3wiki-coordinates {
	font-family: 'Linux Libertine', 'Georgia', serif;
	text-shadow: 1px 1px 2px #000, -1px -1px 2px #000;
	color: #AB9F89;
	background: #34323285;
	border-radius: 5px;
	padding: 3px 5px;
	box-shadow: 1px 1px 5px #00000030;
}

/* Item, spell, etc. properties */

.bg3wiki-property-list dt {
	font-weight: normal;
}
.bg3wiki-property-list dd {
	margin-left: 0;
}

.mw-content-ltr ul.bg3wiki-property-list {
	margin-left: 0;
	list-style: none;
}

/* Imitating in-game tooltips */

.bg3wiki-tooltip-box {
	overflow: hidden;
	margin: 0.5em 0.2em 0 0.2em;
}

.skin-citizen-dark .bg3wiki-tooltip-box {
	background: #1B1A19;
	box-shadow:
		rgba(0, 0, 0, 0.14) 3px 3px 6px 0px inset,
		rgba(0, 0, 0, 0.14) -3px -3px 6px 1px inset;
	border: 0.15rem solid var(--bg3wiki-tooltip-border);
	border-radius: 10px;
	padding: 15px;
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-common {
	background: linear-gradient(to bottom, #1B1A1999, #1B1A1999, #1B1A1999, #40295199);
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-uncommon {
	background: linear-gradient(to bottom, #00491599, #1B1A1999, #1B1A1999, #40295199);
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-rare {
	background: linear-gradient(to bottom, #00374999, #1B1A1999, #1B1A1999, #40295199);
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-veryrare {
	background: linear-gradient(to bottom, #54003299, #1B1A1999, #1B1A1999, #40295199);
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-legendary {
	background: linear-gradient(to bottom, #563E0D99, #1B1A1999, #1B1A1999, #40295199);
}

.skin-citizen-dark .bg3wiki-tooltip-gradient-story {
	background: linear-gradient(to bottom, #561D0099, #1B1A1999, #1B1A1999, #40295199);
}

.bg3wiki-book-text p {
	font-family: 'Linux Libertine', 'Georgia', serif;
}

/* ItemIcon stuff */

:root {
	/* ItemIcon rarity colors */
	--bg3wiki-itemicon-common: 72, 72, 72;
	--bg3wiki-itemicon-uncommon: 1, 189, 57;
	--bg3wiki-itemicon-rare: 1, 191, 255;
	--bg3wiki-itemicon-very-rare: 209, 1, 123;
	--bg3wiki-itemicon-legendary: 183, 134, 29;
	--bg3wiki-itemicon-story: 255, 89, 1;
	--bg3wiki-itemicon-gradient-top-opacity: 0%;
	--bg3wiki-itemicon-gradient-bot-opacity: 12.5%;
	--bg3wiki-itemicon-border-opacity: 60%;
}

.bg3wiki-itemicon-wrapper {
	text-align: center;
	white-space: nowrap;
}

/* The value of --bg3wiki-rarity-color will be set per rarity class. */
.bg3wiki-itemicon {
	display: inline-block;
	background: linear-gradient(
		rgba(var(--bg3wiki-rarity-color), var(--bg3wiki-itemicon-gradient-top-opacity)),
		rgba(var(--bg3wiki-rarity-color), var(--bg3wiki-itemicon-gradient-bot-opacity))
	);
	border: solid 1px rgba(var(--bg3wiki-rarity-color), var(--bg3wiki-itemicon-border-opacity));
}

.bg3wiki-itemicon-common {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-common);
}

.bg3wiki-itemicon-uncommon {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-uncommon);
}

.bg3wiki-itemicon-rare {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-rare);
}

.bg3wiki-itemicon-very-rare {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-very-rare);
}

.bg3wiki-itemicon-legendary {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-legendary);
}

.bg3wiki-itemicon-story {
	--bg3wiki-rarity-color: var(--bg3wiki-itemicon-story);
}

/* Relative Location stuff */

.relative-location {
	background: var(--bg3wiki-relative-location-bg);
	border: 1px solid var(--bg3wiki-tooltip-border);
	border-spacing: 0;
	box-shadow: 0 0.25rem 0.35rem -0.25rem rgba(0, 0, 0, 0.1);
	margin: 5px;
	text-align: center;
}

.relative-location-header {
	background: var(--bg3wiki-relative-location-header-bg-dark);
}

/* Damage Rider As Source (DRS) template */

.bg3wiki-damage-rider-source {
	font-size:10px;
	vertical-align: top;
	font-style: italic;
}

/* License box */

#mw-license-preview .bg3wiki-license-box-container {
	/* Don't want margin in the preview box because that breaks things */
	margin: auto auto auto 0;
}

.bg3wiki-license-box-container {
	margin: 4px 0 4px 10%;
}

.bg3wiki-license-box {
	border: 2px solid #785000;
	border-collapse: collapse;
	background: #1B1A19;
	color: rgb(210,210,210);
	width: 100%;
}

.bg3wiki-license-box-image {
	border-right: none;
	padding: 0.4rem 0 0.4rem 0.9rem;
}

.bg3wiki-license-box-text {
	border-left: none;
	vertical-align: top;
	padding: 0.4rem 0 0.4rem 0.9rem;
}

/* Hat note */
.hatnote {
	font-style: italic;
	padding-left: 1.6em;
	margin-bottom: 0.5em;
}

/* Price calculator */ 
#bg3wiki-price-calculator {
	border: 1px solid var(--bg3wiki-tooltip-border);
}

#bg3wiki-price-calculator-form {
	padding: 0.5em;
}

#bg3wiki-price-calculator-form input[type="number"] {
	width: 100%;
}

#bg3wiki-price-calculator-form td {
	padding-right: 0.5em;
}

#bg3wiki-price-calculator-form th {
	text-align: right;
	padding-right: 0.5em;
}

#bg3wiki-price-calculator-form label {
	margin-left: 0.2em;
}

#bg3wiki-price-calculator-result {
	margin: 1em;
}

#bg3wiki-price-calculator-result td, #bg3wiki-price-calculator-result th {
	text-align: right;
}

/* Hack to display category trees as a navbox. Only used on NavModding and 
 * NavGuides for now.
 */

.navcat div > .CategoryTreeSection::after {
	content: " · ";
	font-weight: bold;
}

.navcat div > .CategoryTreeSection:last-child::after {
	content: none;
}

.navcat div > .CategoryTreeTag,
.navcat div > .CategoryTreePageBullet {
	display: none;
	margin: 0;
	padding: 0;
}

.navcat div {
	display: inline;
	margin: 0;
	padding: 0;
	padding-left: 0;
}

/* UID widget styling. */
.bg3wiki-uid {
	display: inline-block;
}

.bg3wiki-uid summary {
	display: inline-block;
	list-style: none;
	margin: 2px 0;
}

.bg3wiki-uid summary span {
	text-decoration: underline dotted;
	cursor: pointer;
}

.bg3wiki-uid tt {
	border: 1px dashed var(--bg3wiki-tooltip-border);
	user-select: all;
	padding: 0 0.5rem;
}

/* number inside AC shield */
.bg3wiki-ac-value {
	display: grid;
	justify-items:start;
	align-items: start
}

.bg3wiki-ac-value > div {
	grid-column-start: 1;
	grid-row-start: 1;
}

.bg3wiki-ac-value .ac-value {
	text-align:center;
	width: 40px;
	align-self: center;
	padding-bottom: 0.5ch
}

.bg3wiki-ac-value .ac-value-comment {
	grid-column-start: 2;
	grid-row-start: 1;
	align-self: center
}

/* CSS tooltip implementation. Usage in markup:

	<some-element aria-label="tooltip text here">
		normal text
	</some-element>
*/

.mw-body [aria-label]:hover,
.mw-body [aria-label]:focus {
	position: relative;
}

.mw-body [aria-label]:hover::after,
.mw-body [aria-label]:focus::after {
	position: absolute;
	white-space: pre;
	line-height: 1;
	padding: 0.3rem;
	content: attr(aria-label);
	background-color: var(--aria-label-tooltip-bg);
	color: var(--aria-label-tooltip-fg);
	border: var(--aria-label-tooltip-border);
	text-decoration: unset;

	/* See optional override below. */
	bottom: 100%;
	left: 0;
}

/* Changes the tooltip position. */
.mw-body [aria-label].aria-label-top-rig:hover::after,
.mw-body [aria-label].aria-label-top-rig:focus::after {
	bottom: 100%;
	left: unset;
	right: 0;
}

/* Optional class for indicating tooltip presence via underline. */
.bg3wiki-help-tooltip[aria-label] {
	cursor: help;
	text-decoration-line: underline;
	text-decoration-style: dotted;
	text-decoration-thickness: 1px;
	text-underline-offset: calc(1ex / 2);
}

/* Tab bar */
.bg3wiki-tabbar {
	background-color: #1B1A19;
	margin: 0.5em 0 0 0;
}

.bg3wiki-tabbar .bg3wiki-tab {
	padding:0 10px;
	display: inline-block;
}

.bg3wiki-tabbar .bg3wiki-tab-active {
	background-color: #281c14;
	color: #cfbca9;
}

/* Unbulleted lists */
.bg3wiki-ublist ul,
.bg3wiki-ublist ol {
	margin: 0;
	padding: 0;
	line-height: inherit;
	list-style: none;
}

/* Horizontal lists */

.bg3wiki-horizontlist dl,
.bg3wiki-horizontlist ul {
	margin: 0;
	padding: 0;
}

.bg3wiki-horizontlist dl ul,
.bg3wiki-horizontlist dl dl,
.bg3wiki-horizontlist ul dl,
.bg3wiki-horizontlist ul ul {
	display: inline;
}

.bg3wiki-horizontlist dd,
.bg3wiki-horizontlist dt,
.bg3wiki-horizontlist li {
	margin: 0;
	display: inline;
}

.bg3wiki-horizontlist dd::after,
.bg3wiki-horizontlist li::after {
	content: " · ";
	font-weight: bold;
}

.bg3wiki-horizontlist dd:last-child::after,
.bg3wiki-horizontlist dt:last-child::after,
.bg3wiki-horizontlist li:last-child::after {
	content: none;
}

.bg3wiki-horizontlist dt::after {
	content: ":";
	font-weight: normal;
	font-size: 100%;
}

.bg3wiki-horizontlist dd dd:first-child::before,
.bg3wiki-horizontlist dd dt:first-child::before,
.bg3wiki-horizontlist dd li:first-child::before,
.bg3wiki-horizontlist dt dd:first-child::before,
.bg3wiki-horizontlist dt dt:first-child::before,
.bg3wiki-horizontlist dt li:first-child::before,
.bg3wiki-horizontlist li dd:first-child::before,
.bg3wiki-horizontlist li dt:first-child::before,
.bg3wiki-horizontlist li li:first-child::before {
	content: " (";
	font-weight: normal;
}

.bg3wiki-horizontlist dd dd:last-child::after,
.bg3wiki-horizontlist dd dt:last-child::after,
.bg3wiki-horizontlist dd li:last-child::after,
.bg3wiki-horizontlist dt dd:last-child::after,
.bg3wiki-horizontlist dt dt:last-child::after,
.bg3wiki-horizontlist dt li:last-child::after,
.bg3wiki-horizontlist li dd:last-child::after,
.bg3wiki-horizontlist li dt:last-child::after,
.bg3wiki-horizontlist li li:last-child::after {
	content: ")";
	font-weight: normal;
}

.bg3wiki-bquote {
	overflow: hidden;
	margin: 1em 0;
}

.bg3wiki-quotesource {
	line-height: 1.5em;
	padding-left: 1.5em;
	margin-top: 0;
}

.bg3wiki-blockquote-marks {
	font-size: 120%;
	font-family: serif;
	font-weight: bold;
}

/* Shortcut */
.bg3wiki-template-shortcut {
	display: inline-block;
	background-color: var(--color-surface-2);
	text-align: center;
	margin: 1em;
	padding: 0 0.33em 0 0.33em;
	vertical-align: top;
	width: fit-content;
	font-size: 85%;
}

.bg3wiki-template-shortcut-top {
	text-align: center;
	margin: 0;
	padding: 0 0 0.16em 0;
	border-bottom: 2px solid #3d3d3d;
	font-size: 90%;
}

/* Amboxes */
.ambox {
	background-color: var(--color-surface-2);
}
.ambox-speedy {
	/* Pink */
	background-color: #400805;
}
.ambox .mbox-image,
.ambox .mbox-imageright {
	/* These are hidden since the screen may be too narrow. */
	display: none;
}

/* Character info template styling */
.infobox {
	display: table;
	width: 100%;
	font-size: 90%;
	margin-left: auto;
	margin-right: auto;
	background-color: var(--color-surface-0);
}

.infobox-above {
	font-size: 130%;
	text-align: center;
	background: var(--color-surface-1);
}

.infobox-subheader {
	text-align: center;
	background-color: var(--color-surface-0);
}

.infobox-header {
	text-align: center;
	font-size: 130%;
	text-align: center;
	background: var(--color-surface-1);
}

.infobox-title {
	text-align: center;
}

.infobox-label {
	background-color: var(--color-surface-1);
	margin-right: 5em;
	padding: 5px;
}

th.infobox-label {
	text-align: right;
}

th.infobox-label:has(.bg3wiki-icontext-block),
th.infobox-label:has(.bg3wiki-condition) {
	text-align: left;
}

td.infobox-label {
	text-align: center;
}

.infobox-data {
	text-align: center;
	background-color: var(--color-surface-1);
	padding: 5px;
}

.infobox-below {
	text-align: center;
	background: var(--color-surface-1);
}

.infobox-image {
	text-align: center;
	background-color: var(--color-surface-0);
}

.infobox table {
	display: table;
}

.infobox caption {
	display: table-caption;
	background-color: var(--color-surface-0);
}

/* Remove nowrap when undesired in infoboxes  */
.mw-parser-output .infobox .nowrap {
	white-space: normal !important;
}

/* When we want wrapping */
.wrap,
.wraplinks a {
	white-space: normal;
}

/* Template:WeaponsTableHeader / Template:WeaponsTableRow */

.bg3wiki-weapons-table td:not(:last-child) {
	text-align: center;
}