MediaWiki:Mobile.css: Difference between revisions

From bg3.wiki
Jump to navigation Jump to search
Willowisp (talk | contribs)
No edit summary
Undo revision 235389 by Taylan (talk)
Tag: Undo
 
(141 intermediate revisions by 3 users 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 {
  --color-primary__h: 20;
/* This should give us a nice dark orange / brown. */
  --color-surface-0: hsl(var(--color-primary__h) 20% 8%);
--color-primary__h: 15;
  --color-surface-1: hsl(var(--color-primary__h) 20% 10%);
 
  --color-surface-2: hsl(var(--color-primary__h) 20% 12%);
/* Make surfaces darker. */
  --background-color-overlay: hsla(var(--color-primary__h) 20% 8% / 95%);
--color-surface-0: hsl(var(--color-primary__h) 10% 8%);
  --background-color-overlay--lighter: hsl(var(--color-primary__h) 20% 8% / 60%);
--color-surface-1: hsl(var(--color-primary__h) 10% 10%);
  --bg3wiki-relative-location-bg: var(--color-surface-0);
--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);
}
 
/*
* == 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);
--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;
--bg3wiki-tooltip-border: #785000;
}
}


/*
/* MobileFrontend should strip elements with this class, but still */
* Fix for table widths; not sure why this is necessary.
.nomobile {
*/
display: none;
}
.citizen-table-wrapper {
 
/* 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%;
width: 100%;
}
}
Line 44: Line 444:


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


Line 77: Line 477:


/* Imitating in-game tooltips */
/* Imitating in-game tooltips */
.bg3wiki-tooltip-box {
overflow: hidden;
margin: 0.5em 0.2em 0 0.2em;
}


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


/* Spoilers */
/* ItemIcon stuff */
 
.bg3wiki-spoiler-blur {
    filter: blur(3px);
    opacity: 0.2;
    transition-property: filter, opacity;
    transition-duration: .4s;
}
 
.bg3wiki-spoiler-blur:hover, .bg3wiki-spoiler-blur:focus {
    filter: none;
    opacity: 1;
}
 


:root {
:root {
Line 142: Line 534:
--bg3wiki-itemicon-gradient-bot-opacity: 12.5%;
--bg3wiki-itemicon-gradient-bot-opacity: 12.5%;
--bg3wiki-itemicon-border-opacity: 60%;
--bg3wiki-itemicon-border-opacity: 60%;
/* Navbox colours */
--bg3wiki-navbox-bg: #1B1B1B;
--bg3wiki-navbox-header-bg: #281C14;
--bg3wiki-navbox-header-text: #C1A886;
--bg3wiki-navbox-header-secondary-bg: #28201B;
}
}


Line 189: Line 576:


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


Line 203: Line 591:


/* Damage Rider As Source (DRS) template */
/* Damage Rider As Source (DRS) template */
.bg3wiki-damage-rider-source {
.bg3wiki-damage-rider-source {
font-size:10px;
font-size:10px;
Line 210: Line 599:


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


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


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


Line 235: Line 626:
vertical-align: top;
vertical-align: top;
padding: 0.4rem 0 0.4rem 0.9rem;
padding: 0.4rem 0 0.4rem 0.9rem;
}
/* For desktop eyes only */
.nomobile {
display: none;
}
}


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


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


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


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


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


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


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


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


/* Yes this is dumb. Will allow us to populate navboxes wil style. Probably. Only use on NavModding and NavGuides for now. Seems to work on mobile. Remove if not. Note to self: don't go insane now, ok? hahahahahaha*/
/* Hack to display category trees as a navbox. Only used on NavModding and  
* NavGuides for now.
*/


.navcat div > .CategoryTreeSection::after {
.navcat div > .CategoryTreeSection::after {
Line 328: Line 716:
user-select: all;
user-select: all;
padding: 0 0.5rem;
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;
}
}

Latest revision as of 21:37, 23 January 2025

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

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