MediaWiki:Mobile.css

From bg3.wiki
Revision as of 03:45, 24 August 2024 by Taylan (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* 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.
 */

/* Annoying "Privacy" button on bottom-right; not needed. We link to our own
   privacy policy page at the bottom, which has this button as a link. */
#qc-cmp2-persistent-link {
	display: none;
}

/*
 * === Control visibility ===
 *
 * The ad only appears if the screen dimensions are at least 320x720, 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.
 */

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

@media screen and (min-width: 320px) and (min-height: 720px) {
	.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 {
	--footer-ad-h: 0;
}

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

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

@media screen and (min-width: 728px) and (min-height: 1024px) {
	: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. We have to make sure the TOC isn't too high. */
@media screen and (min-width: 1120px) {
	.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;
	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;
}

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

[aria-label]:hover, [aria-label]:focus {position: relative}

[aria-label]:hover::after,
[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. */
[aria-label].aria-label-top-rig:hover::after,
[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;
}