MediaWiki:Mobile.css: Difference between revisions

From bg3.wiki
Jump to navigation Jump to search
(Add list style none hack from Common.css, and rearrange some stuff.)
(Add damage color classes.)
(50 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* All CSS here will be loaded for users of the mobile site */
/* 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 {
:root.skin-citizen-dark {
/* This should give us a nice dark orange / brown. */
--color-primary__h: 15;
--color-primary__h: 15;
--color-secondary__h: 255;


--color-surface-0: hsl(var(--color-primary__h) 10% 10%);
/* 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-1: hsl(var(--color-primary__h) 10% 10%);
--color-surface-2: hsl(var(--color-primary__h) 5% 12%);
--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,
#bg3wiki-footer-ad-ramp {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
align-content: center;
/* So the two divs (fuse & ramp) don't block each other. */
/* Set pointer-events back on their child nodes. */
pointer-events: none;
}
/* See comment about pointer-events above. */
#bg3wiki-footer-ad-fuse div,
#bg3wiki-footer-ad-ramp div {
pointer-events: auto;
}
/* The "Ads served by: xyz" text at the bottom. */
#bg3wiki-ad-provider-notice {
margin: 0 var(--padding-page);
color: var(--color-subtle);
}
/*
* == 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;
}
/*
* == 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;
}
/*
* == 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: hsla(var(--color-primary__h) 20% 20% / 60%);
--background-color-overlay--lighter: hsl(var(--color-primary__h)  20% 20% / 80%);
--background-color-overlay--lighter: hsl(var(--color-primary__h)  20% 20% / 80%);
Line 369: Line 711:
*/
*/


[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 389: Line 734:


/* 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;
Line 508: Line 853:


.bg3wiki-blockquote-marks {
.bg3wiki-blockquote-marks {
color: var(--bg3wiki-blockquote-marks);
font-size: 120%;
font-size: 120%;
font-family: serif;
font-family: serif;
Line 633: Line 977:
.wraplinks a {
.wraplinks a {
white-space: normal;
white-space: normal;
}
/* Template:WeaponsTableHeader / Template:WeaponsTableRow */
.bg3wiki-weapons-table td:not(:last-child) {
text-align: center;
}
}

Revision as of 18:38, 10 September 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,
#bg3wiki-footer-ad-ramp {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	align-content: center;
	/* So the two divs (fuse & ramp) don't block each other. */
	/* Set pointer-events back on their child nodes. */
	pointer-events: none;
}

/* See comment about pointer-events above. */
#bg3wiki-footer-ad-fuse div,
#bg3wiki-footer-ad-ramp div {
	pointer-events: auto;
}

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

/*
 * == 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;
}

/*
 * == 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;
}

/*
 * == 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;
}