/* Gargoyle.css */
/* version 0.9.4 */

/* Yu Shiyang <yu.shiyang@gnayihs.uy> */

/*
	Usage:
		- Include in HTML document with
			<link rel="stylesheet" type="text/css" href="./gargoyle.css" />
		- Add the class "g-default-media" to the <body> element

	Customising:
		- Override the CSS variables in :root, paying attention to any compatibility variables and media query breakpoints that need to be updated as well
		- To override the media query breakpoints,
			- Copy out the media query block into a new stylesheet
			- Remove "body.g-default-media" from the start of each selector
			- Update the px values as appropriate
			- Remove the class "g-default-media" from the <body> element
*/


/*
	Contents
	- Section elements
	- Text elements
	- Numbered sections
	- List elements
	- Figure elements
	- Table elements
	- Inline elements
	- Inline lists
	- Inline classes
	- Action buttons
	- Unhide content after CSS is loaded
*/



/*
	Legacy support
	Only browsers with >0.1% market share are noted

	Optional features (unsupported browsers):
		text-rendering (IE –11)
		overflow-wrap (IE –11) fallback on deprecated alias word-wrap
		hyphens -ms- for IE –11, -webkit- for Safari –16.6 & iOS –16.7
		hyphens: auto (IE –11) So no need for -ms- if the only values used are auto and none
		tab-size (IE –11) Must be integer for iOS –12.5
		width: max-content (IE –11)
		align-items: baseline (for Flexbox) (IE –11, possibly Edge –18)
		gap (for Flexbox) (IE –11)
		object-fit: cover or scale-down (IE –11)
		display: contents (IE –11)
		text-wrap-mode (Chrome –126, Safari –17.1, Firefox –118, IE –11, iOS Safari –16.7, Opera mobile –80)
		text-wrap-style: pretty (Chrome –126, Safari –18.6, Firefox –146–, IE –11, iOS Safari –18.6, Opera mobile –80)
		white-space-collapse (Chrome –112, Safari –17.1, Firefox –118, IE –11, iOS Safari –16.7)
		text-decoration-thickness (IE –11, iOS Safari –11.2)
		text-underline-position -webkit- for iOS Safari –11.2

	Features with fallback mechanisms (unsupported browsers):
		initial value (IE –11)
		calc() (IE –11)
			! Various known issues for IE11: https://caniuse.com/#feat=calc
		:has() (Firefox –118, IE –11, iOS Safari –11.2, UC Browser –15.5, QQ Browser –14.9)
		:not() (IE –11, QQ –14.9)
		text-align: start or end (IE –11)
		text-decoration-line (IE –11) -webkit- for iOS Safari 11.2
		text-decoration-style (IE –11, Safari –26.1–, iOS Safari –26.1–)
		::first-letter (Firefox –128, see ffbug workaround)
		user-select -webkit- for Safari –26.6–, -ms- for IE –11
		content-visibility (IE –11, Safari –17.6, Firefox –118 by default, iOS Safari –17.7, QQ –14.9)
		Grid Layout for thumbnail list:
			grid-template-columns use -ms-grid-columns for IE –11
			grid-template-areas (IE –11)
			grid-auto-flow: row (IE –11)
			gap (for Grid Layout) (IE –11) use grid-gap for iOS –11.2
			align-items: baseline (for Grid Layout) (IE –11, possibly Edge –18)
			grid-column (IE –11)

	Dependent features for action buttons and link annotations, which will fallback to plain hyperlinks (unsupported browsers):
		mask-image (IE –11), -webkit- for Chrome –119, iOS –15.3, Opera –117
		mask-image SVG (IE –11)
		mask-image multiple (IE –11)
		mask-size (IE –11), -webkit- for Chrome –119, iOS –15.3
		mask-repeat (IE –11), -webkit- for Chrome –119, iOS –15.3
		mask-position (IE –11), -webkit- for Chrome –119, iOS –15.3

	Features with no implemented fallback mechanisms (and browsers with no support):
		@supports (IE –11)
		@supports: selector() (IE –11, iOS Safari –11.2, Opera Mobile –80)
		unset (IE –11)
*/


:root {
	/*
		Layout grid: 1.5rem rows, calc(100vw / 12) columns

		When changing or overriding the following variables, take note:
		1) Check for any pre-calculated compatibility variables (ending with -compat) that depend on it and update them; the formula for the pre-calculated value should be given in the accompanying comments
		2) Check for any media queries that depend on it and update them; the display size breakpoints given in px units have to be pre-calculated, and their formula should be given in the accompanying comments
		3) If the media query breakpoints need to be overridden,
	*/

	--g-font-size: 16px;  /* NOTE: affects all media queries */
	--g-line-height: 1.5rem;
	--g-skip: var(--g-line-height);
	--g-span: 1rem;

	--g-main-color: darkslategrey;
	--g-background-color: snow;
	--g-quiet-color: slategrey;
	--g-highlight-color: lavenderblush;
	--g-link-color: maroon;
	--g-visited-color: #600000;
	--g-code-color: seashell;
	--g-samp-color: ghostwhite;
	--g-frame-color: darkslategrey;
	--g-frame-link-color: maroon;
	--g-frame-visited-color: #600000;
	--g-quote-border-color: var(--g-samp-color);
	--g-aside-bound-color: ghostwhite;
	--g-table-border-color: lightgrey;
	--g-kbd-frame-color: lightgrey;
	--g-kbd-background-color-compat: #e3e3e3;  /* lightgrey is #d3d3d3 */
	--g-spoiler-color: var(--g-main-color);
	--g-spoiler-highlight-color: #4f5f5f;  /* darkslategrey is #2f4f4f */
	--g-inline-list-separator-color: var(--g-quiet-color);

	--g-large-v: 2.25rem;  /* compat */
	--g-large-v: calc(1.5 * var(--g-skip));
	--g-medium-v: var(--g-skip);
	--g-small-v: 0.75rem;  /* compat */
	--g-small-v: calc(0.5 * var(--g-skip));
	--g-tiny-v: 0.375rem;  /* compat */
	--g-tiny-v: calc(0.25 * var(--g-skip));
	--g-large-h: 2rem;  /* compat */
	--g-large-h: calc(2 * var(--g-span));
	--g-medium-h: var(--g-span);
	--g-small-h: 0.5rem;  /* compat */
	--g-small-h: calc(0.5 * var(--g-span));

	--g-small-font-size: 0.833333rem;  /* 5/6 of base font size */
	--g-small-line-height: 1.125rem;

	--g-demi-relative-font-size: 0.9375em;  /* 15/16 */
	--g-inverse-demi-relative-font-size: 1.066667em;  /* 16/15 of demi */
	--g-demi-font-weight: 500;
	--g-demi-bold-font-weight: 700;

	--g-monospace-font-size: var(--g-font-size);
	--g-monospace-line-height: var(--g-line-height);

	--g-h1-font-size: 2rem;
	--g-h1-line-height: var(--g-large-v);
	--g-h1-demi-relative-font-size: var(--g-demi-relative-font-size);
	--g-h1-inverse-demi-relative-font-size: var(--g-inverse-demi-relative-font-size);
	--g-h1-demi-font-weight: var(--g-demi-bold-font-weight);

	--g-heading-demi-relative-font-size: var(--g-demi-relative-font-size);
	--g-heading-inverse-demi-relative-font-size: var(--g-inverse-demi-relative-font-size);
	--g-heading-demi-font-weight: var(--g-demi-bold-font-weight);
	--g-h2-font-size: 1.666667rem;  /* 5/6 of h1 == 5/3 */
	--g-h2-line-height: var(--g-line-height);
	--g-h3-font-size: 1.333333rem;  /* 4/5 of h2 == 4/3 */
	--g-h3-line-height: var(--g-line-height);
	--g-h4-font-size: 1.111111rem;  /* 5/6 of h3 == 10/9 */
	--g-h4-line-height: var(--g-line-height);
	--g-h5-font-size: var(--g-h4-font-size);
	--g-h5-line-height: var(--g-line-height);
	--g-h6-font-size: var(--g-h4-font-size);
	--g-h6-line-height: var(--g-line-height);

	--g-link-annotation-size: 0.666667rem;
	--g-link-annotation-offset: 0rem;
	--g-sublink-border-width: 0.075rem;
	--g-sublink-double-border-width: 0.225rem;
	--g-sublink-baseline-offset: -0.15rem;
	--g-underline-thickness: from-font;
	/* divide by 4 as a hieuristic, no need for compat and allow it to be ignored if not supported */
	--g-h1-abbr-capital-underline-offset: calc((var(--g-h1-inverse-demi-relative-font-size) - 1em) / 4);
	--g-heading-abbr-capital-underline-offset: calc((var(--g-heading-inverse-demi-relative-font-size) - 1em) / 4);
	--g-abbr-capital-underline-offset: calc((var(--g-inverse-demi-relative-font-size) - 1em) / 4);

	--g-aside-hover-opacity: 0.96;
	--g-aside-blur-radius: var(--g-border-radius);
	--g-aside-spread-radius: var(--g-aside-blur-radius);
	--g-figure-blur-radius: var(--g-border-radius);
	--g-figure-spread-radius: 12px;  /* compat */
	--g-figure-spread-radius: calc(var(--g-figure-blur-radius) * 2);


	--g-inline-height: 1.25rem;
	--g-inline-padding-h: 0.2em;
	--g-inline-border-radius: 0.2em;
	--g-inline-border-radius-line-height-compat: 1.3rem;  /* compat; (--g-line-height) - var(--g-inline-border-radius) */
	--g-inline-border-radius-monospace-line-height-compat: 1.3rem;  /* compat; (--g-monospace-line-height) - var(--g-inline-border-radius) */

	--g-border-radius: 6px;
	--g-frame-width: 2px;
	--g-frame-border-radius: 2px;
	--g-item-margin-v: var(--g-small-v);
	--g-item-margin-h: var(--g-medium-h);

	--g-h1-margin-top: var(--g-large-v);
	--g-h1-margin-bottom: var(--g-medium-v);

	--g-heading-margin-top: var(--g-large-v);
	--g-heading-margin-bottom: var(--g-small-v);
	--g-h5-margin-left: var(--g-medium-h);
	--g-h6-margin-left: 2rem;  /* compat */
	--g-h6-margin-left: var(--g-large-h);

	--g-text-margin-top: var(--g-small-v);
	--g-text-margin-bottom: var(--g-medium-v);
	--g-text-padding-h: 0.2em;

	--g-quote-margin-v: var(--g-medium-v);
	--g-quote-margin-h: var(--g-large-h);
	--g-quote-border-width: 6px;
	--g-quote-cite-margin-v: var(--g-small-v);
	--g-quote-cite-negative-margin-v-compat: -0.75rem;

	--g-list-margin-top: var(--g-medium-v);
	--g-list-margin-bottom: var(--g-large-v);
	--g-list-item-margin-v: var(--g-small-v);
	--g-list-item-margin-h: var(--g-large-h);

	--g-image-max-height: 80vh;
	--g-image-margin-top: var(--g-small-v);
	--g-image-margin-bottom: var(--g-large-v);

	--g-image-highlight-padding-v: var(--g-tiny-v);
	--g-image-highlight-negative-margin-v-compat: -0.375rem;  /* compat; -1 * var(--g-thumbnail-list-padding-v) */
	--g-image-highlight-padding-h: var(--g-small-h);
	--g-image-highlight-negative-margin-h-compat: -0.5rem;  /* compat; -1 * var(--g-thumbnail-list-padding-h) */


	--g-page-bottom: 3rem;  /* compat */
	--g-page-bottom: calc(2 * var(--g-skip));

	--g-main-margin-v: var(--g-medium-v);
	--g-main-margin-h: var(--g-medium-h);  /* NOTE: affects media queries for <aside> */
	--g-main-width: 91.666667vw;  /* compat */
	--g-main-width: calc(100vw - 2 * var(--g-main-margin-h));
	--g-column-width: 40rem;  /* NOTE: affects media queries for <aside> and <figure> */

	--g-article-text-indent: 0;
	--g-article-tab-size: 4;  /* Should be an integer for wide support */
	--g-article-nav-margin-v: var(--g-small-v);
	--g-article-nav-margin-h: var(--g-medium-h);

	--g-pre-padding-v: var(--g-small-v);
	--g-pre-padding-h: var(--g-small-h);
	--g-pre-padding-negative-margin-h-compat: -0.5rem;  /* compat; -1 * var(--g-pre-padding-h) */
	--g-pre-title-margin-v: var(--g-tiny-v);
	--g-pre-title-margin-top-with-negative-padding-compat: -0.375rem;  /* compat; var(--g-pre-title-margin-v) - var(--g-pre-padding-v) */
	--g-pre-title-color: var(--g-quiet-color);

	--g-article-aside-width: 16rem;
	--g-article-aside-min-width: 12rem;  /* NOTE: affects media queries for <aside> */
	--g-article-aside-margin-v: var(--g-medium-v);
	--g-article-aside-margin-h: var(--g-large-h);  /* NOTE: affects media queries for <aside> */
	--g-article-aside-wide-side-column-margin-h-compat: 42rem;  /* compat; var(--g-column-width) + var(--g-quote-margin-h) */
	--g-article-aside-wide-left-column-negative-margin-h-compat: -2rem;  /* compat; -1 * (var(--g-article-aside-width) + var(--g-quote-margin-h)) */

	--g-aside-bound-padding-v: var(--g-pre-padding-v);
	--g-aside-bound-padding-h: var(--g-pre-padding-h);
	--g-aside-bound-padding-negative-margin-h-compat: var(--g-pre-padding-negative-margin-h-compat);  /* compat; -1 * var(--g-aside-bound-padding-h) */

	--g-hr-width: 1px;

	--g-dt-margin-left: 0;
	--g-dd-margin-left: 1.5rem;  /* compat */
	--g-dd-margin-left: calc(1.5 * var(--g-span));

	--g-thumbnail-width: 9rem;
	--g-thumbnail-height: var(--g-thumbnail-width);

	--g-thumbnail-list-fallback-margin-h-allowance: var(--g-medium-h); /* extra allowance to be absolutely sure that line-breaking will not occur unexpectedly when Grid Layout is not supported */
	--g-thumbnail-list-fallback-item-max-width-compat: 29rem;  /* compat; var(--g-column-width) - var(--g-thumbnail-width) - var(--g-item-margin-h) - var(--g-thumbnail-list-fallback-margin-h-allowance) */
	--g-thumbnail-list-fallback-margin-top-with-negative-padding-compat: 0.375rem;  /* compat; var(--g-item-margin-v) - var(--g-thumbnail-list-padding-v) */
	--g-thumbnail-list-fallback-margin-right-with-negative-padding-compat: 0.5rem;  /* compat; var(--g-item-margin-h) - var(--g-thumbnail-list-padding-h) */

	--g-sublink-margin: 0.15em;
	--g-inline-list-separator-margin: 0.3em;

	--g-figcaption-margin-v: var(--g-small-v);
	--g-figcaption-margin-h: var(--g-medium-h);
	--g-figcaption-width-compat: 38rem;  /* compat; var(--g-column-width) - 2 * var(--g-figcaption-margin-h) */
	--g-figcaption-aligned-width-compat: 39rem;
	--g-figure-wide-max-width: calc(100vw - 2 * var(--g-large-h));  /* NOTE: affects media queries for <figure> */
	/* No compat variable for --g-figure-wide-max-width because the existing fallback for figure max width, var(--g-main-width), already has more generous margins when calc() is not supported, especially on wider screens */

	--g-table-margin-top: var(--g-small-v);
	--g-table-margin-bottom: var(--g-large-v);
	--g-table-padding-v: 0.1875rem;  /* compat */
	--g-table-padding-v: calc(var(--g-tiny-v) / 2);
	--g-table-padding-h: var(--g-small-h);
	--g-table-border-width: 1px;

	--g-kbd-margin-h: 0.1em;
	--g-kbd-padding-v: 0.1em;
	--g-kbd-padding-h: var(--g-inline-padding-h);
	--g-kbd-frame-width: 1px;
	--g-kbd-shadow-vertical-offset: 1px;
	--g-kbd-shadow-spread-radius: 1px;
	--g-kbd-detail-frame-width: 1px;
	--g-kbd-line-height-compat: 1.1rem;  /* compat; var(--g-line-height) - 2 * var(--g-border-radius) - var(--g-kbd-frame-width) */

	--g-button-margin-v: var(--g-medium-v);
	--g-button-padding-v: 0.9375rem;  /* compat */
	--g-button-padding-v: calc(0.625 * var(--g-skip));
	--g-button-padding-h: 2em;
	--g-button-border-width: var(--g-frame-width);
	--g-button-border-radius: var(--g-border-radius);
	--g-button-line-height: 1.125rem;  /* compat */
	--g-button-line-height: calc(0.75 * var(--g-skip));  /* 0.75 == 2 - 2 * 0.625 */
	--g-button-internal-padding-h: 1.25rem;
	--g-button-internal-border-width: 1px;
	--g-button-internal-border-height: 60%;
	--g-button-icon-size: 1.25rem;  /* compat */
	--g-button-icon-size: calc(1.25 * var(--g-span));
	--g-button-icon-highlight-scale: 1.2;
	--g-button-icon-highlight-size-compat: 1.5rem;  /* compat; var(--g-button-icon-size) * var(--g-button-icon-highlight-scale) */
	--g-button-icon-margin-h: var(--g-medium-h);
	--g-button-icon-highlight-margin-h-compat: 0.875rem;  /* compat; var(--g-button-icon-margin-h) - (var(--g-button-icon-highlight-size) - var(--g-button-icon-size)) / 2 */
	--g-button-icon-box-width-compat: 3.25rem;  /* compat; var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) */
	--g-button-icon-centre-compat: 1.625rem;  /* compat; 0.5 * var(--g-button-icon-size) + var(--g-button-icon-margin-h) */
	--g-button-icon-box-width-with-internal-padding-h-compat: 4.5rem; /* compat; var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) */

	--g-image-button-height: var(--g-large-v);
	--g-image-button-icon-width: var(--g-image-button-height);
	--g-image-button-margin-v: var(--g-small-v);
	--g-image-button-margin-h: var(--g-image-button-margin-v);
	--g-image-button-padding-v: 0.5625rem;  /* compat */
	--g-image-button-padding-v: calc(0.375 * var(--g-skip));
	--g-image-button-padding-h: var(--g-small-h);

	--g-button-highlight-color: #ffd4d1;
	--g-button-green-color: green;
	--g-button-green-background-color: #d0f0d0;
	--g-button-green-highlight-color: #b8f0b8;
	--g-button-cyan-color: darkcyan;
	--g-button-cyan-background-color: #d5fcfa;
	--g-button-cyan-highlight-color: #bcfaf7;
	--g-button-blue-color: royalblue;
	--g-button-blue-background-color: #dadafd;
	--g-button-blue-highlight-color: #cacaff;
	--g-button-magenta-color: darkmagenta;
	--g-button-magenta-background-color: #dadafd;
	--g-button-magenta-highlight-color: #cacaff;
	--g-button-red-color: firebrick;
	--g-button-red-background-color: #fcdcdc;
	--g-button-red-highlight-color: #f3c2c2;
	--g-button-orange-color: chocolate;
	--g-button-orange-background-color: #f7e3bb;
	--g-button-orange-highlight-color: #f8db9c;
	--g-button-yellow-color: goldenrod;
	--g-button-yellow-background-color: #faf2c6;
	--g-button-yellow-highlight-color: #faecac;
	--g-image-button-color: lightgrey;
	--g-image-button-background-color: #00000080;
	--g-image-button-hover-color: white;
	--g-image-button-hover-background-color: #000000a0;
	--g-image-button-focus-color: #ffffffc0;
	--g-image-button-focus-background-color: #000000c0;
}


/*
	Section elements
*/
html {
	margin: 0;
	padding: 0;

	color: var(--g-main-color);

	font-family: sans-serif;
	font-size: var(--g-font-size);
	line-height: var(--g-line-height);

	/* Nominally an SVG property but good for Chrome */
	text-rendering: optimizeLegibility;

	-webkit-text-underline-position: from-font;
	text-underline-position: from-font;
}

body {
	display: block;

	margin: 0;
	padding: 0;
	padding-bottom: var(--g-page-bottom);

	color:var(--g-main-color);
	background-color: var(--g-background-color);

	/* Workaround for IE bug with margin: auto column centring; parent container needs this. */
	text-align: center;
}

main {
	display: block;

	width: var(--g-column-width);
	max-width: var(--g-main-width);

	margin: var(--g-main-margin-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;
}


article {
	display: block;

	margin: var(--g-medium-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;

	/* CSS3 Text */
	word-wrap: break-word;  /* alias of overflow-wrap */
	overflow-wrap: break-word;
	-webkit-hyphens: auto;
	hyphens: auto;
	word-break: break-word;

	white-space-collapse: collapse;
	text-wrap-mode: wrap;
	text-wrap-style: pretty;

	text-indent: var(--g-article-text-indent);
	tab-size: var(--g-article-tab-size);
}

article nav {
	display: flex;
	flex-flow: row wrap;
	justify-content: flex-start;
	align-items: baseline;
	align-content: flex-start;
	gap: var(--g-article-nav-margin-v) var(--g-article-nav-margin-h);

	margin: var(--g-article-nav-margin-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;
}
article nav.g-left {
	justify-content: left;
}
article nav.g-start {
	justify-content: left;
	justify-content: start;
}
article nav.g-right {
	justify-content: right;
}
article nav.g-end {
	justify-content: right;
	justify-content: end;
}
article nav.g-centre, article nav.g-center {
	justify-content: center;
}


header {
	display: block;

	margin: var(--g-medium-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;
}

footer {
	display: block;

	margin: var(--g-medium-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;
}

section {
	display: block;

	margin: var(--g-medium-v) auto;
	padding: 0;

	text-align: left;
	text-align: start;
	text-align: initial;
}



/*
	Text elements
*/
p {
	display: block;

	margin-top: var(--g-text-margin-top);
	margin-bottom: var(--g-text-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;
}

h1 {
	display: block;

	margin-top: var(--g-h1-margin-top);
	margin-bottom: var(--g-h1-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;

	font-size: var(--g-h1-font-size);
	line-height: var(--g-h1-line-height);
	font-weight: bold;

	/* CSS3 Text */
	-webkit-hyphens: none;
	hyphens: none;
}
h2, h3, h4, h5, h6 {
	display: block;

	margin-top: var(--g-heading-margin-top);
	margin-bottom: var(--g-heading-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;
}
hgroup > h1, hgroup > h2, hgroup > h3, hgroup > h4, hgroup > h5, hgroup > h6 {
	margin-top: 0;
}
hgroup {
	display: block;

	margin-top: var(--g-heading-margin-top);
	margin-bottom: var(--g-heading-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;
}
h2 {
	font-size: var(--g-h2-font-size);
	line-height: var(--g-h2-line-height);
	font-weight: bold;
}
h3 {
	font-size: var(--g-h3-font-size);
	line-height: var(--g-h3-line-height);
	font-weight: bold;
}
h4 {
	font-size: var(--g-h4-font-size);
	line-height: var(--g-h4-line-height);
	font-weight: bold;
}
h5 {
	margin-left: var(--g-h5-margin-left);
	line-height: var(--g-h5-line-height);

	font-size: var(--g-h5-font-size);
	font-weight: bold;
}
h6 {
	margin-left: var(--g-h6-margin-left);
	line-height: var(--g-h6-line-height);

	font-size: var(--g-h6-font-size);
	font-weight: bold;
	font-style: italic;
}

blockquote {
	display: block;

	margin: var(--g-quote-margin-v) 0;
	padding: 0 var(--g-quote-margin-h);
	padding-left: calc(var(--g-quote-margin-h) - var(--g-quote-border-width));  /* padding value as compat */

	border-left: var(--g-quote-border-width) solid var(--g-quote-border-color);
}
blockquote + cite {
	display: block;

	margin-top: var(--g-quote-cite-negative-margin-v-compat);
	margin-top: calc(-1 * (var(--g-quote-margin-v) - var(--g-quote-cite-margin-v)));
	margin-bottom: var(--g-quote-margin-v);
	margin-left: var(--g-quote-margin-h);
	margin-right: var(--g-quote-margin-h);

	font-style: normal;
	text-align: right;
	text-align: end;
}

pre {
	display: block;

	width: max-content;
	min-width: 100%;

	margin-top: var(--g-text-margin-top);
	margin-bottom: var(--g-text-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;
}

pre > code, pre > samp {
	display: block;

	margin: 0 var(--g-pre-padding-negative-margin-h-compat);
	margin: 0 calc(-1 * var(--g-pre-padding-h));
	padding: var(--g-pre-padding-v) var(--g-pre-padding-h);

	border-radius: var(--g-border-radius);
}

figure pre {
	margin: 0 auto;
}
figure.g-bound pre {
	width: unset;

	word-wrap: break-word;
	overflow-wrap: break-word;

	white-space: pre-wrap;  /* legacy shorthand property, equivalent to both white-space-collapse: preserve and text-wrap-mode: wrap */
	text-wrap-mode: wrap;
}

pre > code.g-frame, pre > samp.g-frame {
	border: var(--g-frame-width) solid var(--g-frame-color);
	border-radius: var(--g-frame-border-radius);
}

pre > code[title]::before, pre > samp[title]::before {
	content: attr(title);
	display: block;

	margin-top: var(--g-pre-title-margin-top-with-negative-padding-compat);
	margin-top: calc(var(--g-pre-title-margin-v) - var(--g-pre-padding-v));
	margin-bottom: var(--g-pre-title-margin-v);

	color: var(--g-pre-title-color);
	text-align: right;
	text-align: end;
}
pre > code[title].g-title-left::before, pre > samp[title].g-title-left::before {
	text-align: left;
}
pre > code[title].g-title-start::before, pre > samp[title].g-title-start::before {
	text-align: left;
	text-align: start;
}
pre > code[title].g-title-right::before, pre > samp[title].g-title-right::before {
	text-align: right;
}
pre > code[title].g-title-end::before, pre > samp[title].g-title-end::before {
	text-align: right;
	text-align: end;
}
pre > code[title].g-title-centre::before, pre > samp[title].g-title-centre::before, pre > code[title].g-title-center::before, pre > samp[title].g-title-center::before {
	text-align: center;
}

article aside {
	display: block;

	margin: var(--g-article-aside-margin-v) var(--g-article-aside-margin-h);
	padding: 0;

	color: var(--g-quiet-color);

	text-align: left;
	text-align: start;
	text-align: initial;
}
@media (min-width: 453.818182px) {
	/* 28.363636rem */
	/* given by (2 * var(--g-article-aside-min-width) + var(--g-article-aside-margin-h)) / (11 / 12) == 26rem / (11 / 12) */
	/* When the main column width is wide enough for any displaced content paragraph to be at least as wide as the min-width aside */
	/* The main column width has a lower bound of 11/12 of display width, which occurs on narrow displays where calc() is not supported */
	body.g-default-media article aside {
		float: right;

		width: var(--g-article-aside-width);
		min-width: var(--g-article-aside-min-width);
		max-width: var(--g-article-aside-min-width);  /* compat */
		max-width: calc((100% - var(--g-article-aside-margin-h)) / 2);

		margin-right: 0;
	}
	body.g-default-media article aside.g-left {
		float: left;

		margin-left: 0;
		margin-right: var(--g-article-aside-margin-h);

		text-align: right;
		text-align: end;
	}
}
@media (min-width: 1120px) {
	/* 70rem */
	/* given by var(--g-column-width) + 2 * (var(--g-article-aside-min-width) + var(--g-article-aside-margin-h) + var(--g-main-margin-h)) */
	/* When the main content width is wide enough for the min aside width */
	/* Allow aside to exceed outside the compatibility value of main content width (11/12 * 100vw), but not of the ideal value */
	body.g-default-media article aside {
		position: absolute;
		float: none;

		max-width: var(--g-article-aside-min-width);  /* compat */
		max-width: calc((100vw - var(--g-column-width)) / 2 - var(--g-article-aside-margin-h) - var(--g-main-margin-h));

		margin-top: 0;
		margin-bottom: 0;
		margin-left: var(--g-article-aside-wide-side-column-margin-h-compat);
		margin-left: calc(var(--g-column-width) + var(--g-article-aside-margin-h));
		margin-right: 0;

		color: inherit;
	}
	body.g-default-media article aside.g-left {
		float: none;

		margin-left: var(--g-article-aside-wide-left-column-negative-margin-h-compat);
		margin-left: calc(-1 * var(--g-article-aside-margin-h));

		transform: translateX(-100%);
	}
	body.g-default-media article aside:hover {
		z-index: 1;
		box-shadow: 0 0 var(--g-aside-blur-radius) var(--g-aside-spread-radius) var(--g-background-color);
	}
	body.g-default-media article aside.g-bound:hover {
		background-color: var(--g-aside-bound-color);
	}

	/* Add dithered margin for figure when aside is in a side column and the figure may be drawn over it */
	body.g-default-media figure {
		box-shadow: 0 0 var(--g-figure-blur-radius) var(--g-figure-spread-radius) var(--g-background-color);
	}
}


article aside > h1:first-child, article aside > h2:first-child, article aside > h3:first-child, article aside > h4:first-child, article aside > h5:first-child, article aside > h6:first-child,
article aside > p:first-child, article aside > pre:first-child,
article aside > blockquote:first-child,
article aside > ul:first-child, article aside > menu:first-child, article aside > ol:first-child, article aside > dl:first-child,
article aside > img:first-child, article aside > picture:first-child, article aside > svg:first-child, article aside > figure:first-child,
article aside > table:first-child {
	margin-top: 0;
}
article aside > h1:last-child, article aside > h2:last-child, article aside > h3:last-child, article aside > h4:last-child, article aside > h5:last-child, article aside > h6:last-child,
article aside > p:last-child, article aside > pre:last-child,
article aside > blockquote:last-child,
article aside > ul:last-child, article aside > menu:last-child, article aside > ol:last-child, article aside > dl:last-child,
article aside > img:last-child, article aside > picture:last-child, article aside > svg:last-child, article aside > figure:last-child,
article aside > table:last-child {
	margin-bottom: 0;
}

aside.g-bound {
	float: none;
	position: static;

	width: auto;
	min-width: unset;
	max-width: unset;

	margin: 0 var(--g-aside-bound-padding-negative-margin-h-compat);
	margin: 0 calc(-1 * var(--g-aside-bound-padding-h));
	padding: var(--g-aside-bound-padding-v) var(--g-aside-bound-padding-h);

	color: inherit;
	background-color: var(--g-aside-bound-color);

	transform: none;
}

hr {
	display: block;

	margin: var(--g-large-v) 0;
	margin-bottom: calc(var(--g-large-v) - var(--g-hr-width));
	padding: 0;

	border: 0;
	border-bottom: var(--g-hr-width) solid var(--g-main-color);
}

.g-compact {
	margin-top: 0;
	margin-bottom: 0;
}


/*
	Numbered sections
*/
.g-counter, .g-counter1, .g-counter2, .g-counter3, .g-counter4, .g-counter5, .g-counter6 {
	counter-reset: h1-section h2-section h3-section h4-section h5-section h6-section;
}
.g-counter h1, .g-counter1 h1, .g-counter2 h1, .g-counter3 h1, .g-counter4 h1, .g-counter5 h1, .g-counter6 h1 {
	counter-increment: h1-section;
}
.g-counter h2, .g-counter1 h2, .g-counter2 h2, .g-counter3 h2, .g-counter4 h2, .g-counter5 h2, .g-counter6 h2 {
	counter-increment: h2-section;
}
.g-counter h3, .g-counter1 h3, .g-counter2 h3, .g-counter3 h3, .g-counter4 h3, .g-counter5 h3, .g-counter6 h3 {
	counter-increment: h3-section;
}
.g-counter h4, .g-counter1 h4, .g-counter2 h4, .g-counter3 h4, .g-counter4 h4, .g-counter5 h4, .g-counter6 h4 {
	counter-increment: h4-section;
}
.g-counter h5, .g-counter1 h5, .g-counter2 h5, .g-counter3 h5, .g-counter4 h5, .g-counter5 h5, .g-counter6 h5 {
	counter-increment: h5-section;
}
.g-counter h6, .g-counter1 h6, .g-counter2 h6, .g-counter3 h6, .g-counter4 h6, .g-counter5 h6, .g-counter6 h6 {
	counter-increment: h6-section;
}

.g-counter h1 {
	counter-reset: h2-section h3-section h4-section h5-section h6-section;
}
.g-counter h2 {
	counter-reset: h3-section h4-section h5-section h6-section;
}
.g-counter h3 {
	counter-reset: h4-section h5-section h6-section;
}
.g-counter h4 {
	counter-reset: h5-section h6-section;
}
.g-counter h5 {
	counter-reset: h6-section;
}

.g-counter .g-nocount, .g-counter1 .g-nocount, .g-counter2 .g-nocount, .g-counter3 .g-nocount, .g-counter4 .g-nocount, .g-counter5 .g-nocount, .g-counter6 .g-nocount {
	counter-increment: none;
}
.g-counter .g-nocount::before, .g-counter1 .g-nocount::before, .g-counter2 .g-nocount::before, .g-counter3 .g-nocount::before, .g-counter4 .g-nocount::before, .g-counter5 .g-nocount::before, .g-counter6 .g-nocount::before {
	content: none;
}

.g-counter1 h1::before {
	content: counter(h1-section) ". ";
}
.g-counter1 h2::before {
	content: counter(h1-section) "." counter(h2-section) ". ";
}
.g-counter1 h3::before {
	content: counter(h1-section) "." counter(h2-section) "." counter(h3-section) ". ";
}
.g-counter1 h4::before {
	content: counter(h1-section) "." counter(h2-section) "." counter(h3-section) "." counter(h4-section) ". ";
}
.g-counter1 h5::before {
	content: counter(h1-section) "." counter(h2-section) "." counter(h3-section) "." counter(h4-section) "." counter(h5-section) ". ";
}
.g-counter1 h6::before {
	content: counter(h1-section) "." counter(h2-section) "." counter(h3-section) "." counter(h4-section) "." counter(h5-section) "." counter(h6-section) ". ";
}

.g-counter2 h2::before {
	content: counter(h2-section) ". ";
}
.g-counter2 h3::before {
	content: counter(h2-section) "." counter(h3-section) ". ";
}
.g-counter2 h4::before {
	content: counter(h2-section) "." counter(h3-section) "." counter(h4-section) ". ";
}
.g-counter2 h5::before {
	content: counter(h2-section) "." counter(h3-section) "." counter(h4-section) "." counter(h5-section) ". ";
}
.g-counter2 h6::before {
	content: counter(h2-section) "." counter(h3-section) "." counter(h4-section) "." counter(h5-section) "." counter(h6-section) ". ";
}


.g-counter3 h3::before {
	content: counter(h3-section) ". ";
}
.g-counter3 h4::before {
	content: counter(h3-section) "." counter(h4-section) ". ";
}
.g-counter3 h5::before {
	content: counter(h3-section) "." counter(h4-section) "." counter(h5-section) ". ";
}
.g-counter3 h6::before {
	content: counter(h3-section) "." counter(h4-section) "." counter(h5-section) "." counter(h6-section) ". ";
}

.g-counter4 h4::before {
	content: counter(h4-section) ". ";
}
.g-counter4 h5::before {
	content: counter(h4-section) "." counter(h5-section) ". ";
}
.g-counter4 h6::before {
	content: counter(h4-section) "." counter(h5-section) "." counter(h6-section) ". ";
}

.g-counter5 h5::before {
	content: counter(h5-section) ". ";
}
.g-counter5 h6::before {
	content: counter(h5-section) "." counter(h6-section) ". ";
}

.g-counter6 h6::before {
	content: counter(h6-section) ". ";
}



/*
	List elements
*/
.g-continue {
	margin-top: var(--g-list-item-margin-v);
	margin-bottom: var(--g-list-item-margin-v);
}
ol.g-continue {
	counter-reset: none;
}

/* For .g-continue lists across different container elements, a common ancestor must be declared as the scope */
.g-inline-scope {
	counter-reset: inline-list;
}
.g-subinline-scope {
	counter-reset: subinline-list;
}

ul, menu, ol, dl {
	display: block;

	margin-top: var(--g-list-margin-top);
	margin-bottom: var(--g-list-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;

	list-style-position: outside;
}
ul ul, ul menu, ul ol, menu ul, menu menu, menu ol, ol ul, ol menu, ol ol, dl ul, dl menu, dl ol{
	margin-top: var(--g-list-item-margin-v);
	margin-bottom: var(--g-list-item-margin-v);
}
ul dl, menu dl, ol dl, dl dl {
	margin-left: var(--g-list-item-margin-h);
	margin-top: var(--g-list-item-margin-v);
	margin-bottom: var(--g-list-item-margin-v);
}

li {
	display: list-item;

	margin: 0;
	margin-left: var(--g-list-item-margin-h);
	padding: 0;
}

dt {
	display: inline;

	margin: 0;
	margin-left: var(--g-dt-margin-left);
	padding: 0;

	font-weight: bold;
}
dd {
	display: inline;

	margin: 0;
	margin-left: var(--g-dd-margin-left);
	padding: 0;
}
dd::after {
	content: '';
	display: block;
}

/* Thumbnail list */

dl.g-thumbnail dt {
	display: inline-block;

	margin: 0;
	margin-top: var(--g-item-margin-v);
	margin-right: var(--g-item-margin-h);
	padding: 0;
}

dl.g-thumbnail > dt:first-of-type, dl.g-thumbnail > dd:first-of-type {
	margin-top: 0;
}

dl.g-thumbnail dt img, dl.g-thumbnail dt picture, dl.g-thumbnail dt svg {
	width: var(--g-thumbnail-width);
	height: var(--g-thumbnail-width);

	margin: 0;
	padding: 0;

	object-fit: cover;
}

dl.g-thumbnail dt img.g-bound, dl.g-thumbnail dt picture.g-bound, dl.g-thumbnail dt svg.g-bound {
	object-fit: scale-down;
}

dl.g-thumbnail dt > *:first-child, dl.g-thumbnail dd > *:first-child {
	margin-top: 0;
}
dl.g-thumbnail dt > *:last-child, dl.g-thumbnail dd > *:last-child {
	margin-bottom: 0;
}

dl.g-thumbnail dd {
	display: inline-block;

	max-width: var(--g-thumbnail-list-fallback-item-max-width-compat);
	max-width: calc(var(--g-column-width) - var(--g-thumbnail-width) - var(--g-item-margin-h) - var(--g-thumbnail-list-fallback-margin-h-allowance));

	margin: 0;
	margin-top: var(--g-item-margin-v);
	padding: 0;
}

dl.g-thumbnail > a {
	display: contents;
}

dl.g-thumbnail > a:hover dt {
	margin-top: var(--g-thumbnail-list-fallback-margin-top-with-negative-padding-compat);
	margin-top: calc(var(--g-item-margin-v) - var(--g-image-highlight-padding-v));
	margin-bottom: var(--g-image-highlight-negative-margin-v-compat);
	margin-bottom: calc(-1 * var(--g-image-highlight-padding-v));
	margin-left: var(--g-image-highlight-negative-margin-h-compat);
	margin-left: calc(-1 * var(--g-image-highlight-padding-h));
	margin-right: var(--g-thumbnail-list-fallback-margin-right-with-negative-padding-compat);
	margin-right: calc(var(--g-item-margin-h) - var(--g-image-highlight-padding-h));
	padding: var(--g-image-highlight-padding-v) var(--g-image-highlight-padding-h);

	background-color: var(--g-highlight-color);
}
dl.g-thumbnail > a:hover dd {
	margin: var(--g-image-highlight-negative-margin-v-compat) var(--g-image-highlight-negative-margin-h-compat);
	margin: calc(-1 * var(--g-image-highlight-padding-v)) calc(-1 * var(--g-image-highlight-padding-h));
	margin-top: var(--g-thumbnail-list-fallback-margin-top-with-negative-padding-compat);
	margin-top: calc(var(--g-item-margin-v) - var(--g-image-highlight-padding-v));
	padding: var(--g-image-highlight-padding-v) var(--g-image-highlight-padding-h);

	background-color: var(--g-highlight-color);
}
dl.g-thumbnail > a:hover dt {
	border-top-left-radius: var(--g-border-radius);
	border-bottom-left-radius: var(--g-border-radius);
}
dl.g-thumbnail > a:hover dd {
	border-top-right-radius: var(--g-border-radius);
	border-bottom-right-radius: var(--g-border-radius);
}

dl.g-thumbnail > a:hover dt:last-child {
	border-top-right-radius: var(--g-border-radius);
	border-bottom-right-radius: var(--g-border-radius);
}

dl.g-thumbnail > a:hover dd:first-child {
	border-top-left-radius: var(--g-border-radius);
	border-bottom-left-radius: var(--g-border-radius);
}

dl.g-thumbnail > a:hover dt img, dl.g-thumbnail > a:hover dt picture, dl.g-thumbnail > a:hover dt svg {
	margin: 0;
	padding: 0;

	border-radius: 0;
}

dl.g-thumbnail > a:hover dt img.g-frame, dl.g-thumbnail > a:hover dt pic.g-frameture, dl.g-thumbnail > a:hover dt svg.g-frame {
	border: var(--g-frame-width) solid var(--g-frame-link-color);
}
dl.g-thumbnail > a:visited:hover dt img.g-frame, dl.g-thumbnail > a:visited:hover dt pic.g-frameture, dl.g-thumbnail > a:visited:hover dt svg.g-frame {
	border: var(--g-frame-width) solid var(--g-frame-visited-color);
}

dl.g-thumbnail p, dl.g-thumbnail h1, dl.g-thumbnail h2, dl.g-thumbnail h3, dl.g-thumbnail h4, dl.g-thumbnail h5, dl.g-thumbnail h6 {
	margin: 0;

	font-style: initial;
}

@supports (grid-template-areas: "thumb item") and (grid-auto-flow: row) and (display: grid) {
	dl.g-thumbnail {
		display: grid;
		grid-template-columns: var(--g-thumbnail-width) auto;
		grid-template-areas: "thumb item";
		grid-auto-flow: row;
		grid-gap: var(--g-item-margin-v) var(--g-item-margin-h);
		gap: var(--g-item-margin-v) var(--g-item-margin-h);
		align-items: stretch;
	}

	dl.g-thumbnail dt {
		grid-column: thumb-start / thumb-end;
		display: block;

		margin: 0;
	}

	dl.g-thumbnail dd {
		grid-column: item-start / item-end;
		display: block;

		max-width: calc(var(--g-column-width) - var(--g-thumbnail-width) - var(--g-item-margin-h));
		/* this is only needed for figure.g-bound, so no need for compat */

		margin: 0;
	}

	dl.g-thumbnail > a:hover dt, dl.g-thumbnail > a:hover dd {
		margin: var(--g-image-highlight-negative-margin-v-compat) var(--g-image-highlight-negative-margin-h-compat);
		margin: calc(-1 * var(--g-image-highlight-padding-v)) calc(-1 * var(--g-image-highlight-padding-h));
		padding: var(--g-image-highlight-padding-v) var(--g-image-highlight-padding-h);
	}
}


/*
	Inline elements
*/
img.g-inline, picture.g-inline, svg.g-inline {
	display: inline;

	max-height: var(--g-inline-height);
	width: auto;

	vertical-align: middle;
}

ol.g-inline {
	counter-reset: inline-list;
}
ol.g-inline > li {
	counter-increment: inline-list;
}
ol.g-inline > li::before {
	content: counter(inline-list) ". ";
}
ol.g-subinline {
	counter-reset: subinline-list;
}
ol.g-subinline > li {
	counter-increment: subinline-list;
}
ol.g-subinline > li::before {
	content: counter(subinline-list) ". ";
}
ol.g-continue {
	counter-reset: none;
}

.g-inline, .g-subinline {
	display: inline;

	margin: 0;
	padding: 0;

	word-spacing: -1em;
}

.g-inline *, .g-subinline * {
	word-spacing: normal;
}

.g-inline > li, .g-subinline > li, .g-inline > .g-li, .g-subinline > .g-li {
	display: inline;

	margin: 0;
	padding: 0;
}
.g-inline > li::after, .g-subinline > li::after, .g-inline > .g-li::after, .g-subinline > .g-li::after {
	content: '·';
	display: inline;

	padding-left: var(--g-inline-list-separator-margin);
	padding-right: var(--g-inline-list-separator-margin);
	line-height: 0;

	color: var(--g-inline-list-separator-color);

	font-weight: bold;
}
.g-inline > li:last-child::after, .g-subinline > li:last-child::after, .g-inline > .g-li:last-child::after, .g-subinline > .g-li:last-child::after {
	content: none;
}

.g-inline > dt, .g-subinline > dt {
	display: block;
	flex: 0 0 auto;

	margin: 0;
	padding: 0;

	font-weight: bold;
}
.g-inline > dt::after, .g-subinline > dt::after {
	content: ':';
	display: inline;

	margin-right: var(--g-inline-list-separator-margin);
}
.g-inline > dt:last-child::after, .g-subinline > dt:last-child::after {
	content: none;
}

.g-inline > dd, .g-subinline > dd {
	display: block;
	flex: 0 0 auto;

	margin: 0;
	padding: 0;
}
.g-inline > dd::after, .g-subinline > dd::after {
	content: '·';
	display: inline;

	font-size: initial;
	font-weight: bold;
	color: var(--g-inline-list-separator-color);

	margin-left: var(--g-inline-list-separator-margin);
	margin-right: var(--g-inline-list-separator-margin);
}
.g-inline > dd:last-child::after, .g-subinline > dd:last-child::after {
	content: none;
}

.g-subinline {
	flex-flow: row nowrap;

	font-size: var(--g-small-font-size);
	line-height: var(--g-small-line-height);
}
.g-subinline::before {
	content: '(';
}

.g-subinline::after {
	content: ')';
}



/*
	Figure elements
*/
main img, main picture, main svg {
	display: block;
	max-height: var(--g-image-max-height);
	max-width: 100%;

	margin-top: var(--g-image-margin-top);
	margin-bottom: var(--g-image-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;
}

main a:hover img, main a:hover picture, main a:hover svg {
	margin: var(--g-image-highlight-negative-margin-v-compat) var(--g-image-highlight-negative-margin-h-compat);
	margin: calc(-1 * var(--g-image-highlight-padding-v)) calc(-1 * var(--g-image-highlight-padding-h));
	padding: var(--g-image-highlight-padding-v) var(--g-image-highlight-padding-h);

	background-color: var(--g-highlight-color);
	border-radius: var(--g-border-radius);
}
main a.g-button:hover img, main a.g-button:hover picture, main a.g-button:hover svg {
	background-color: unset;
}

main img.g-frame, main picture.g-frame, main svg.g-frame {
	border: var(--g-frame-width) solid var(--g-frame-color);
	border-radius: var(--g-frame-border-radius);
}
main a img.g-frame, main a picture.g-frame, main a svg.g-frame {
	border-color: var(--g-frame-link-color);
}
main a:visited img.g-frame, main a:visited picture.g-frame, main a:visited svg.g-frame {
	border-color: var(--g-frame-visited-color);
}
main a:hover img.g-frame, main a:hover picture.g-frame, main a:hover svg.g-frame {
	border-color: transparent;
}

main img.g-tall, main picture.g-tall, main svg.g-tall {
	max-height: unset;
}
main img.g-detail, main picture.g-detail, main svg.g-detail {
	max-height: unset;
	max-width: unset;
}

main img.g-thumbnail, main picture.g-thumbnail, main svg.g-thumbnail {
	width: var(--g-thumbnail-width);
	height: var(--g-thumbnail-width);

	object-fit: cover;
}
main img.g-thumbnail.g-bound, main picture.g-thumbnail.g-bound, main svg.g-thumbnail.g-bound  {
	object-fit: scale-down;
}

main picture {
	position: relative;

	width: max-content;
}
main picture img, main a:hover picture img {
	margin: 0;
}

figure {
	display: block;

	position: relative;
	left: 50%;

	width: max-content;
	min-width: 100%;
	max-width: var(--g-main-width);

	margin-top: var(--g-image-margin-top);
	margin-bottom: var(--g-image-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;

	transform: translateX(-50%);

	text-align: initial;
}

figcaption {
	display: block;

	/* Effectively centre for single line, left-align for multiple lines */
	width: max-content;
	max-width: 100%;
	max-width: calc(100% - 2 * var(--g-figcaption-margin-h));

	margin: var(--g-figcaption-margin-v) auto;  /* figcaption may be above or below */
	padding: 0;

	text-align: left;
}
figcaption.g-bound {
	margin-left: auto;
	margin-right: auto;
}

figure img, figure picture, figure svg, figure table {
	display: block;

	margin: 0 auto;
}
figure img.g-bound, figure picture.g-bound, figure svg.g-bound {
	max-width: 100%;
}

figure.g-tall img, figure.g-tall picture, figure.g-tall svg {
	max-height: unset;
}
figure.g-detail img, figure.g-detail picture, figure.g-detail svg {
	max-height: unset;
	max-width: unset;
}

/* Unset hyperlink styles for images (but not tables) */
figure > a {
	display: block;

	width: max-content;

	margin: 0 auto;
	padding: 0;
}
figure > a img, figure > a picture, figure > a svg {
	display: initial;

	margin: 0;
	padding: 0;

	vertical-align: top;
}

figure.g-bound {
	max-width: 100%;

	margin-left: 0;
	margin-right: 0;
}
figure.g-bound img, figure.g-bound picture, figure.g-bound svg, figure.g-bound table {
	max-width: 100%;
}
figure.g-bound > a {
	max-width: 100%;
}

/* Left and right aligned figures */
figure.g-left,
figure.g-right {
	/* When combined with width: max-content, this makes the figure aligned when narrower than main column, and centred when wider */
	min-width: 100%;
}

figure.g-left img,
figure.g-left picture,
figure.g-left svg,
figure.g-left table {
	margin-left: 0;
	margin-right: auto;
}

figure.g-left figcaption {
	max-width: calc(100% - var(--g-figcaption-margin-h));

	margin-left: 0;
	margin-right: auto;

	text-align: left;
}

figure.g-right img,
figure.g-right picture,
figure.g-right svg,
figure.g-right table {
	margin-left: auto;
	margin-right: 0;
}

figure.g-right figcaption {
	max-width: calc(100% - var(--g-figcaption-margin-h));

	margin-left: auto;
	margin-right: 0;

	text-align: right;
}

figure.g-left figcaption.g-bound,
figure.g-right figcaption.g-bound {
	width: 100%;
	width: calc(100% - var(--g-figcaption-margin-h));
	max-width: 100%;
	max-width: calc(100% - var(--g-figcaption-margin-h));

	margin-left: auto;
	margin-right: auto;
}

@media (min-width: 704px) {
	/* 44rem */
	/* given by value of 100vw when var(--g-figure-wide-max-width) == var(--g-column-width) */
	/* When viewport is wider than main column, use more generous margins for figures bounded by viewport size */
	body.g-default-media figure {
		max-width: var(--g-figure-wide-max-width);
	}

	body.g-default-media figure.g-bound {
		max-width: 100%;
	}

	/* Elements bound to column width should be set to appropriate values rather than 100% */
	body.g-default-media figcaption {
		max-width: var(--g-figcaption-width-compat);
		max-width: calc(var(--g-column-width) - 2 * var(--g-figcaption-margin-h));
	}

	body.g-default-media figure img.g-bound, figure picture.g-bound, figure svg.g-bound {
		max-width: var(--g-column-width);
	}

	body.g-default-media figure.g-left figcaption.g-bound, figure.g-right figcaption.g-bound {
		/* Reset max-width to disable centreing for single-line captions */
		/* Subtract one-sided margin instead of two because captions for left- and right- aligned figures are flush against column but with var(--g-figcaption-margin-h) margin on the other side */
		width: var(--g-figcaption-aligned-width-compat);
		width: calc(var(--g-column-width) - var(--g-figcaption-margin-h));
		max-width: var(--g-figcaption-aligned-width-compat);
		max-width: calc(var(--g-column-width) - var(--g-figcaption-margin-h));
		/* Contrast with centred figure with a multiline (left-aligned) caption, or with directly left- or right- aligned captions, both of which have margin on boths sides and are not flush */
	}
}



/*
	Table elements
	Defect: gridding of td, th padding and border 1px
*/
table {
	display: table;

	width: max-content;

	margin-top: var(--g-table-margin-top);
	margin-bottom: var(--g-table-margin-bottom);
	margin-left: 0;
	margin-right: 0;
	padding: 0;

	border-top: var(--g-table-border-width) solid var(--g-table-border-color);
	border-collapse: collapse;

	text-align: left;
	text-align: start;
	-webkit-hyphens: auto;
	hyphens: auto;
}
td, th {
	display: table-cell;

	margin: 0;
	padding: var(--g-table-padding-v) var(--g-table-padding-h);
}
th, thead td {
	text-align: center;

	border-bottom: var(--g-table-border-width) solid var(--g-table-border-color);
}
td.g-left, th.g-left {
	text-align: left;
}
td.g-start, th.g-start {
	text-align: left;
	text-align: start;
}
td.g-right, th.g-right {
	text-align: right;
}
td.g-end, th.g-end {
	text-align: right;
	text-align: end;
}
td.g-centre, th.g-centre, td.g-center, th.g-center {
	text-align: center;
}
thead {
	display: table-header-group;

	margin: 0;
	padding: 0;

	border-bottom: var(--g-table-border-width) solid var(--g-table-border-color);
}
tbody {
	display: table-row-group;

	margin: 0;
	padding: 0;

	border-bottom: var(--g-table-border-width) solid var(--g-table-border-color);
}
tfoot {
	display: table-footer-group;

	margin: 0;
	padding: 0;

	border-bottom: var(--g-table-border-width) solid var(--g-table-border-color);
}



/*
	Inline elements
*/
a {
	display: inline;

	color: var(--g-link-color);

	text-decoration: underline;  /* legacy shorthand property */
	-webkit-text-decoration-line: underline;
	text-decoration-line: underline;
	text-decoration-thickness: var(--g-underline-thickness);
}
a:hover {
	text-decoration: underline double;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: double */
	text-decoration-style: double;
	text-decoration-thickness: var(--g-underline-thickness);
}
a:visited {
	color: var(--g-visited-color);
}

@supports (
		(mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'))
		and (mask-size: var(--g-link-annotation-size))
		and (mask-repeat: no-repeat)
		and (mask-position: center)
	) or (
		(-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'))
		and (-webkit-mask-size: var(--g-link-annotation-size))
		and (-webkit-mask-repeat: no-repeat)
		and (-webkit-mask-position: center)
	)
{

	a.g-external::after, a.g-download::after, a.g-archive::after {
		content: '';
		display: inline-block;

		padding-right: var(--g-link-annotation-size);

		height: calc(var(--g-font-size) - var(--g-sublink-baseline-offset) - var(--g-link-annotation-offset));

		vertical-align: var(--g-sublink-baseline-offset);

		background-color: var(--g-link-color);

		-webkit-mask-size: var(--g-link-annotation-size);
		mask-size: var(--g-link-annotation-size);
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position: right 0 bottom var(--g-link-annotation-offset);
		mask-position: right 0 bottom var(--g-link-annotation-offset);
	}
	a.g-external:visited::after, a.g-download:visited::after, a.g-archive:visited::after {
		background-color: var(--g-visited-color);
	}

	a.g-external::after {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z"/></svg>');
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z"/></svg>');
	}
	a.g-download::after {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.15-50.85Q234.3-864 264-864h312l192 192v504q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72ZM528-624v-168H264v624h432v-456H528ZM264-792v189-189 624-624Z"/></svg>');
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.15-50.85Q234.3-864 264-864h312l192 192v504q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72ZM528-624v-168H264v624h432v-456H528ZM264-792v189-189 624-624Z"/></svg>');
	}
	a.g-archive::after {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.16-50.85Q234.32-864 264.04-864h432.24Q726-864 747-842.85T768-792v624q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72Zm.28-72h432v-624h-72v312l-96-48-96 48v-312H264v624Zm0 0v-624 624Zm168-312 96-48 96 48-96-48-96 48Z"/></svg>');
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.16-50.85Q234.32-864 264.04-864h432.24Q726-864 747-842.85T768-792v624q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72Zm.28-72h432v-624h-72v312l-96-48-96 48v-312H264v624Zm0 0v-624 624Zm168-312 96-48 96 48-96-48-96 48Z"/></svg>');
	}
}

a.g-sublink {
	display: inline;
}
a.g-sublink::after {
	display: inline;

	margin-left: var(--g-sublink-margin);

	background-color: inherit;

	font-size: var(--g-small-font-size);
	vertical-align: inherit;

	-webkit-mask-image: none;
	mask-image: none;
}
a.g-sublink:visited::after {
	background-color: inherit;
}
a.g-sublink.g-external::after {
	content: '(external)';
}
a.g-sublink.g-download::after {
	content: '(download)';
}
a.g-sublink.g-archive::after {
	content: '(archive)';
}
@supports (
		background-image:
			linear-gradient(
				to top,
				var(--g-background-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset)),
				var(--g-link-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset)),
				var(--g-link-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size)),
				var(--g-background-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size))
			)
	) and (
		(
			(mask-image:
				url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'),
				linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width))
			)
			and (mask-size:
				var(--g-link-annotation-size),
				var(--g-link-annotation-size) 100%
			)
			and (mask-repeat: no-repeat)
			and (mask-position:
				right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-border-width)),
				right 0 bottom calc(var(--g-sublink-border-width) - var(--g-sublink-double-border-width))
			)
		) or (
			(-webkit-mask-image:
				url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'),
				linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width))
			)
			and (-webkit-mask-size:
				var(--g-link-annotation-size),
				var(--g-link-annotation-size) 100%
			)
			and (-webkit-mask-repeat: no-repeat)
			and (-webkit-mask-position:
				right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-border-width)),
				right 0 bottom calc(var(--g-sublink-border-width) - var(--g-sublink-double-border-width))
			)
		)
	)
{
	a.g-sublink {
		display: inline-block;

		margin-left: var(--g-sublink-margin);
		padding-right: var(--g-link-annotation-size);

		height: calc(var(--g-font-size) - var(--g-sublink-baseline-offset) - var(--g-link-annotation-offset));

		vertical-align: calc(var(--g-sublink-baseline-offset) - var(--g-sublink-border-width));

		background-image:
			linear-gradient(
				to top,
				var(--g-background-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset)),
				var(--g-link-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset)),
				var(--g-link-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size)),
				var(--g-background-color) calc(var(--g-sublink-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size))
			);
		background-color: var(--g-link-color);
		border-bottom: var(--g-sublink-border-width) solid var(--g-link-color);

		text-decoration: none;

		-webkit-mask-size:
			var(--g-link-annotation-size),
			var(--g-link-annotation-size) 100%;
		mask-size:
			var(--g-link-annotation-size),
			var(--g-link-annotation-size) 100%;
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position:
			right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-border-width)),
			right 0 bottom calc(var(--g-sublink-border-width) - var(--g-sublink-double-border-width));
		mask-position:
			right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-border-width)),
			right 0 bottom calc(var(--g-sublink-border-width) - var(--g-sublink-double-border-width));
	}
	a.g-sublink:hover {
		border-bottom: var(--g-sublink-double-border-width) double var(--g-link-color);

		vertical-align: calc(var(--g-sublink-baseline-offset) - var(--g-sublink-double-border-width));

		-webkit-mask-position: right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-double-border-width)), right 0 bottom 0;
		mask-position: right 0 bottom calc(var(--g-link-annotation-offset) + var(--g-sublink-double-border-width)), right 0 bottom 0;
	}
	a.g-sublink:visited {
		background-image:
			linear-gradient(
				to top,
				var(--g-background-color) calc(var(--g-sublink-double-border-width) + var(--g-link-annotation-offset)),
				var(--g-visited-color) calc(var(--g-sublink-double-border-width) + var(--g-link-annotation-offset)),
				var(--g-visited-color) calc(var(--g-sublink-double-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size)),
				var(--g-background-color) calc(var(--g-sublink-double-border-width) + var(--g-link-annotation-offset) + var(--g-link-annotation-size))
			);
		background-color: var(--g-visited-color);
	}
	a.g-sublink.g-external::after, a.g-sublink.g-download::after, a.g-sublink.g-archive::after {
		content: none;
	}

	a.g-sublink.g-external {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
	}
	a.g-sublink.g-download {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.15-50.85Q234.3-864 264-864h312l192 192v504q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72ZM528-624v-168H264v624h432v-456H528ZM264-792v189-189 624-624Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.15-50.85Q234.3-864 264-864h312l192 192v504q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72ZM528-624v-168H264v624h432v-456H528ZM264-792v189-189 624-624Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
	}
	a.g-sublink.g-archive {
		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.16-50.85Q234.32-864 264.04-864h432.24Q726-864 747-842.85T768-792v624q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72Zm.28-72h432v-624h-72v312l-96-48-96 48v-312H264v624Zm0 0v-624 624Zm168-312 96-48 96 48-96-48-96 48Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="black"><path d="M263.72-96Q234-96 213-117.15T192-168v-624q0-29.7 21.16-50.85Q234.32-864 264.04-864h432.24Q726-864 747-842.85T768-792v624q0 29.7-21.16 50.85Q725.68-96 695.96-96H263.72Zm.28-72h432v-624h-72v312l-96-48-96 48v-312H264v624Zm0 0v-624 624Zm168-312 96-48 96 48-96-48-96 48Z"/></svg>'),
			linear-gradient(to top, black var(--g-sublink-double-border-width), transparent var(--g-sublink-double-border-width));
	}
}

u {
	text-decoration-thickness: var(--g-underline-thickness);
}

dfn {
	font-weight: bold;
	font-style: inherit;
}

small {
	font-size: var(--g-small-font-size);
	line-height: var(--g-small-line-height);
}

/* Redefine these to prevent increasing main line height */
sup {
	font-size: var(--g-small-font-size);
	line-height: var(--g-small-line-height);
	vertical-align: top;
}
sub {font-size: var(--g-small-font-size);
	line-height: var(--g-small-line-height);
	vertical-align: bottom;
}

tt {
	font-family: monospace;
	font-size: var(--g-monospace-font-size);
	line-height: var(--g-inline-border-radius-monospace-line-height-compat);  /* border-radius increases line height */
	line-height: calc(var(--g-monospace-line-height) - var(--g-inline-border-radius));
	-webkit-hyphens: none;
	hyphens: none;
}
code, samp {
	display: inline;

	box-sizing: border-box;
	padding: 0 var(--g-inline-padding-h);

	font-family: monospace;
	font-size: var(--g-monospace-font-size);
	line-height: var(--g-inline-border-radius-monospace-line-height-compat);  /* border-radius increases line height */
	line-height: calc(var(--g-monospace-line-height) - var(--g-inline-border-radius));
	-webkit-hyphens: none;
	hyphens: none;

	border-radius: var(--g-inline-border-radius);
}
code {
	background-color: var(--g-code-color);
}
samp {
	background-color: var(--g-samp-color);
}


kbd {
	display: inline;

	box-sizing: border-box;
	padding: 0 var(--g-inline-padding-h);

	font-family: inherit;

	border-radius: var(--g-inline-border-radius);

	background-color: var(--g-kbd-background-color-compat);
}
kbd > kbd {
	padding: 0;
}
@supports (selector(kbd:has(> kbd))) and selector(kbd:not(:has(> kbd))) {
	kbd {
		background-color: inherit;
	}
	kbd:has(> kbd) {
		padding: 0;
	}
	kbd:not(:has(> kbd)), kbd > kbd {
		display: inline-block;
		margin: 0 var(--g-kbd-margin-h);
		padding: var(--g-kbd-padding-v) var(--g-kbd-padding-h);

		font-size: var(--g-demi-relative-font-size);
		font-weight: var(--g-demi-font-weight);

		line-height: var(--g-kbd-line-height-compat);  /* border-radius increases line height */
		line-height: calc(var(--g-line-height) - 2 * var(--g-border-radius) - var(--g-kbd-frame-width));
		line-height: calc(1.5rem - 0.2em - 0.2em - 1px);

		border: var(--g-kbd-frame-width) solid var(--g-kbd-frame-color);
		box-shadow: 0 var(--g-kbd-shadow-vertical-offset) 0 var(--g-kbd-shadow-spread-radius) var(--g-kbd-frame-color);
	}
}
kbd.g-detail, kbd.g-detail > kbd {
	border-width: var(--g-kbd-detail-frame-width);
	box-shadow: none;
}

h1 > kbd, h2 > kbd, h3 > kbd, h4 > kbd, h5 > kbd, h6 > kbd, b > kbd, strong > kbd, dfn > kbd, dt > kbd {
	font-weight: var(--g-demi-bold-font-weight);
}
kbd > code:first-child, kbd > samp:first-child {
	padding-left: 0;
}
kbd > code:last-child, kbd > samp:last-child {
	padding-right: 0;
}

.g-spoiler:not([tabindex]):not(:hover),
.g-spoiler[tabindex]:not(:focus):not(:focus-within) {
	color: transparent !important;  /* compat for content-visibility: hidden not being supported */
	background-color: var(--g-spoiler-color) !important;

	border-radius: var(--g-inline-border-radius);

	content-visibility: hidden !important;

	cursor: pointer !important;

	-webkit-user-select: none !important;
	-ms-user-select: none !important;
	user-select: none !important;
}
.g-spoiler:not([tabindex]):not(:hover) *,
.g-spoiler[tabindex]:not(:focus):not(:focus-within) * {
	visibility: hidden !important;
}
.g-spoiler[tabindex]:not(:focus):not(:focus-within):hover {
	background: radial-gradient(var(--g-spoiler-highlight-color) 0%, var(--g-spoiler-color) 150%);
}

.g-math {
	font-family: serif;
}
.g-mathrm, .g-mathrm var {
	font-family: serif;
	font-style: normal;
}
.g-mathbf, .g-mathbf var {
	font-family: serif;
	font-weight: bold;
	font-style: normal;
}

/* Workaround for Firefox adding extra space after an element that has display: inline-block and a ::first-letter with a change of font-size; fixed by forcing reflow (https://bugzilla.mozilla.org/show_bug.cgi?id=385615) */
@-moz-keyframes ffbug { from { padding-right: 0.1px ; } to { padding-right: 0; } }
abbr {
	display: inline;

	font-size: var(--g-demi-relative-font-size);
	font-weight: var(--g-demi-font-weight);
}
abbr[title] {
	text-decoration: underline dotted;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: solid */
	-webkit-text-decoration-line: underline;
	text-decoration-line: underline;
	text-decoration-style: dotted;
	text-decoration-thickness: var(--g-underline-thickness);
}
b abbr, strong abbr, dfn abbr, dt abbr {
	font-weight: var(--g-demi-bold-font-weight);
}
h1 abbr {
	font-size: var(--g-h1-demi-relative-font-size);
	font-weight: var(--g-h1-demi-font-weight);
}
h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr {
	font-size: var(--g-heading-demi-relative-font-size);
	font-weight: var(--g-heading-demi-font-weight);
}

abbr.g-capital {
	display: inline-block;

	margin: 0;
	padding: 0;

	-moz-animation: ffbug 0.1s ease 1;
}
abbr.g-capital::first-letter {
	font-size: var(--g-inverse-demi-relative-font-size);
	font-weight: normal;
}
b abbr.g-capital::first-letter,
strong abbr.g-capital::first-letter,
dfn abbr.g-capital::first-letter,
dt abbr.g-capital::first-letter {
	font-size: var(--g-inverse-demi-relative-font-size);
	font-weight: bold;
}
h1 abbr.g-capital::first-letter {
	font-size: var(--g-h1-inverse-demi-relative-font-size);
	font-weight: bold;
}
h2 abbr.g-capital::first-letter,
h3 abbr.g-capital::first-letter,
h4 abbr.g-capital::first-letter,
h5 abbr.g-capital::first-letter,
h6 abbr.g-capital::first-letter {
	font-size: var(--g-heading-inverse-demi-relative-font-size);
	font-weight: bold;
}
a abbr.g-capital {
	text-decoration: inherit;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: solid */
	text-decoration-style: inherit;
	text-decoration-thickness: inherit;
	text-underline-offset: var(--g-abbr-capital-underline-offset);
}
h1 a abbr.g-capital, a h1 abbr.g-capital {
	text-underline-offset: var(--g-h1-abbr-capital-underline-offset);
}
h2 a abbr.g-capital, a h2 abbr.g-capital,
h3 a abbr.g-capital, a h3 abbr.g-capital,
h4 a abbr.g-capital, a h4 abbr.g-capital,
h5 a abbr.g-capital, a h5 abbr.g-capital,
h6 a abbr.g-capital, a h6 abbr.g-capital {
	text-underline-offset: var(--g-heading-abbr-capital-underline-offset);
}
dl.g-thumbnail a abbr[title].g-capital {
	text-decoration: underline dotted;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: double */
	text-decoration-style: dotted;
}


/*
	Inline classes
*/

.g-nohyphen {
	-webkit-hyphens: none;
	hyphens: none;
}

.g-abbr {
	font-size: var(--g-demi-relative-font-size);
	font-weight: var(--g-demi-font-weight);
}
.g-abbr[title] {
	text-decoration: underline dotted;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: dotted */
	-webkit-text-decoration-line: underline;
	text-decoration-line: underline;
	text-decoration-style: dotted;
	text-decoration-thickness: var(--g-underline-thickness);
}
h1 .g-abbr {
	font-size: var(--g-h1-demi-relative-font-size);
	font-weight: var(--g-h1-demi-font-weight);
}
h2 .g-abbr, h3 .g-abbr, h4 .g-abbr, h5 .g-abbr, h6 .g-abbr {
	font-size: var(--g-heading-demi-relative-font-size);
	font-weight: var(--g-heading-demi-font-weight);
}
b .g-abbr, strong .g-abbr, dfn .g-abbr, dt .g-abbr {
	font-weight: var(--g-demi-bold-font-weight);
}
a .g-abbr {
	display: inline;
}

.g-abbr.g-capital {
	display: inline-block;

	margin: 0;
	padding: 0;

	-moz-animation: ffbug 0.1s ease 1;
}
.g-abbr.g-capital::first-letter {
	font-size: var(--g-inverse-demi-relative-font-size);
	font-weight: normal;
}
h1 .g-abbr.g-capital::first-letter {
	font-size: var(--g-h1-inverse-demi-relative-font-size);
	font-weight: bold;
}
h2 .g-abbr.g-capital::first-letter,
h3 .g-abbr.g-capital::first-letter,
h4 .g-abbr.g-capital::first-letter,
h5 .g-abbr.g-capital::first-letter,
h6 .g-abbr.g-capital::first-letter {
	font-size: var(--g-heading-inverse-demi-relative-font-size);
	font-weight: bold;
}
b .g-abbr.g-capital::first-letter,
strong .g-abbr.g-capital::first-letter,
dfn .g-abbr.g-capital::first-letter,
dt .g-abbr.g-capital::first-letter {
	font-weight: bold;
}
a .g-abbr.g-capital {
	text-decoration: inherit;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: solid */
	text-decoration-style: inherit;
	text-decoration-thickness: inherit;
	text-underline-offset: var(--g-abbr-capital-underline-offset);
}
h1 a .g-abbr.g-capital, a h1 .g-abbr.g-capital {
	text-underline-offset: var(--g-h1-abbr-capital-underline-offset);
}
h2 a .g-abbr.g-capital, a h2 .g-abbr.g-capital,
h3 a .g-abbr.g-capital, a h3 .g-abbr.g-capital,
h4 a .g-abbr.g-capital, a h4 .g-abbr.g-capital,
h5 a .g-abbr.g-capital, a h5 .g-abbr.g-capital,
h6 a .g-abbr.g-capital, a h6 .g-abbr.g-capital {
	text-underline-offset: var(--g-heading-abbr-capital-underline-offset);
}
dl.g-thumbnail a .g-abbr[title].g-capital {
	text-decoration: underline dotted;  /* legacy shorthand property for text-decoration-line: underline and text-decoration-style: double */
	text-decoration-style: dotted;
}

.g-quiet {
	color: var(--g-quiet-color);
}

.g-nobreak {
	word-wrap: normal;  /* alias of overflow-wrap */
	overflow-wrap: normal;
	-webkit-hyphens: none;
	hyphens: none;
	word-break: keep-all;

	text-wrap-mode: nowrap;
}

.g-decor {
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
}



/*
	Action buttons
*/
a.g-button {
	display: block;
	box-sizing: border-box;

	width: max-content;
	max-width: 100%;

	margin: var(--g-button-margin-v) 0;
	padding: var(--g-button-padding-v) var(--g-button-padding-h);
	padding: calc(var(--g-button-padding-v) - var(--g-button-border-width)) var(--g-button-padding-h);

	border: var(--g-button-border-width) solid var(--g-link-color);
	border-radius: var(--g-button-border-radius);

	overflow: hidden;

	line-height: var(--g-button-line-height);
	text-decoration: none;  /* legacy shorthand property for text-decoration-line: none */
	-webkit-text-decoration-line: none;
	text-decoration-line: none;

	transition: all 100ms ease;
}
nav > a.g-button {
	flex: 0 0 auto;

	margin: 0;
}
a.g-button:hover, a.g-button:focus, a.g-button:focus-within {
	background-color: var(--g-button-highlight-color);
}

a.g-button:hover img, a.g-button:hover picture, a.g-button:hover svg {
	border-bottom: none;
}

/* Hide icon if fancy buttons not supported */
a.g-button .g-icon {
	display: none;
}

/* Custom button colours */
a.g-green {
	color: var(--g-button-green-color);
	border-color: var(--g-button-green-color);
	background-color: var(--g-button-green-background-color);
}
a.g-green:hover, a.g-green:focus, a.g-green:focus-within {
	background-color: var(--g-button-green-highlight-color);
}

a.g-cyan {
	color: var(--g-button-cyan-color);
	border-color: var(--g-button-cyan-color);
	background-color: var(--g-button-cyan-background-color);
}
a.g-cyan:hover, a.g-cyan:focus, a.g-cyan:focus-within {
	background-color: var(--g-button-cyan-highlight-color);
}

a.g-blue {
	color: var(--g-button-blue-color);
	border-color: var(--g-button-blue-color);
	background-color: var(--g-button-blue-background-color);
}
a.g-blue:hover, a.g-blue:focus, a.g-blue:focus-within {
	background-color: var(--g-button-blue-highlight-color);
}

a.g-magenta {
	color: var(--g-button-magenta-color);
	border-color: var(--g-button-magenta-color);
	background-color: var(--g-button-magenta-background-color);
}
a.g-magenta:hover, a.g-magenta:focus, a.g-magenta:focus-within {
	background-color: var(--g-button-magenta-highlight-color);
}

a.g-red {
	color: var(--g-button-red-color);
	border-color: var(--g-button-red-color);
	background-color: var(--g-button-red-background-color);
}
a.g-red:hover, a.g-red:focus, a.g-red:focus-within {
	background-color: var(--g-button-red-highlight-color);
}

a.g-orange {
	color: var(--g-button-orange-color);
	border-color: var(--g-button-orange-color);
	background-color: var(--g-button-orange-background-color);
}
a.g-orange:hover, a.g-orange:focus, a.g-orange:focus-within {
	background-color: var(--g-button-orange-highlight-color);
}

a.g-yellow {
	color: var(--g-button-yellow-color);
	border-color: var(--g-button-yellow-color);
	background-color: var(--g-button-yellow-background-color);
}
a.g-yellow:hover, a.g-yellow:focus, a.g-yellow:focus-within {
	background-color: var(--g-button-yellow-highlight-color);
}



/*
	Image action buttons
*/
picture a.g-button {
	position: absolute;

	bottom: var(--g-image-button-margin-v);
	right: var(--g-image-button-margin-h);

	height: var(--g-image-button-height);

	margin: 0;
	padding: var(--g-image-button-padding-v) var(--g-image-button-padding-h);

	color: var(--g-image-button-color);

	border: none;
	background-color: var(--g-image-button-background-color);

	opacity: 0;
}
picture a.g-button:hover {
	color: var(--g-image-button-hover-color);
	background-color: var(--g-image-button-hover-background-color);
}
picture a.g-button:focus, picture a.g-button:focus-within {
	color: var(--g-image-button-focus-color);
	background-color: var(--g-image-button-focus-background-color);

	transition: all 100ms ease;
}

picture a.g-button::after {
	content: '';

	position: absolute;
	top: 0;
	left: 0;

	width: 100%;
	height: 100%;

	margin: 0;
	padding: 0;

	background-color: var(--g-image-button-color);
	opacity: 0;

	-webkit-mask-size: var(--g-button-icon-size);
	mask-size: var(--g-button-icon-size);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: top 50% left 50%;
	mask-position: top 50% left 50%;
	mask-type: alpha;

	transition: all 100ms ease;
}
picture a.g-button:hover::after {
	background-color: var(--g-image-button-hover-color);
}
picture a.g-button:focus::after, picture a.g-button:focus-within::after {
	background-color: var(--g-image-button-focus-color);

	transition: all 100ms ease;
}

picture:hover a.g-button {
	opacity: 1;
}

picture.g-left a.g-button, picture a.g-button.g-left {
	left: var(--g-image-button-margin-h);
	right: unset;
}

picture nav {
	display: flex;
	flex-flow: row wrap-reverse;
	justify-content: flex-end;
	align-items: baseline;
	align-content: flex-start;
	gap: var(--g-image-button-margin-v) var(--g-image-button-margin-h);

	position: absolute;
	top: var(--g-image-button-margin-v);
	bottom: var(--g-image-button-margin-v);
	left: var(--g-image-button-margin-h);
	right: var(--g-image-button-margin-h);

	margin: 0;
	padding: 0;
}

picture nav a.g-button {
	flex: 0 0 auto;

	position: relative;
	right: unset;
	bottom: unset;
}
picture.g-left nav a.g-button, picture nav.g-left a.g-button {
	left: unset;
}

picture.g-left nav, picture nav.g-left {
	justify-content: flex-start;
}

picture.g-vertical nav, picture nav.g-vertical {
	flex-direction: column;
	align-items: flex-start;
}

picture.g-vertical.g-left nav, picture.g-vertical nav.g-left, picture.g-left nav.g-vertical, picture nav.g-vertical.g-left {
	flex-wrap: wrap;
}

picture a.g-button.g-external, picture a.g-button.g-expand {
	width: var(--g-image-button-icon-width);
	height: var(--g-image-button-height);
}

/* override link annotations */
picture a.g-button.g-external::after {
	display: block;

	padding-right: 0;
	background-color: var(--g-image-button-color);
}
picture a.g-button.g-external:hover::after {
	background-color: var(--g-image-button-hover-color);
}
picture a.g-button.g-external:focus::after, picture a.g-button.g-external:focus-within::after {
	background-color: var(--g-image-button-focus-color);
}

picture a.g-button.g-external::after {
	opacity: 1;

	-webkit-mask-image:
		url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M202.87-111.87q-37.78 0-64.39-26.61t-26.61-64.39v-554.26q0-37.78 26.61-64.39t64.39-26.61H480v91H202.87v554.26h554.26V-480h91v277.13q0 37.78-26.61 64.39t-64.39 26.61H202.87ZM395.41-332 332-395.41l361.72-361.72H560v-91h288.13V-560h-91v-133.72L395.41-332Z"/></svg>');
	mask-image:
		url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M202.87-111.87q-37.78 0-64.39-26.61t-26.61-64.39v-554.26q0-37.78 26.61-64.39t64.39-26.61H480v91H202.87v554.26h554.26V-480h91v277.13q0 37.78-26.61 64.39t-64.39 26.61H202.87ZM395.41-332 332-395.41l361.72-361.72H560v-91h288.13V-560h-91v-133.72L395.41-332Z"/></svg>');
}
picture a.g-button.g-expand::after {
	opacity: 1;

	-webkit-mask-image:
		url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M194.5-194.5v-251h91v160h160v91h-251Zm480-320v-160h-160v-91h251v251h-91Z"/></svg>');
	mask-image:
		url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M194.5-194.5v-251h91v160h160v91h-251Zm480-320v-160h-160v-91h251v251h-91Z"/></svg>');
}


/*
	Coloured SVG icon for action buttons
*/
@supports (
		(mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'), linear-gradient(to right, black 1px, transparent 1px))
		and (mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height))
		and (mask-repeat: no-repeat, no-repeat)
		and (
			(mask-position: top 50% left var(--g-button-icon-margin-h),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h)))
			or (mask-position: top 50% left var(--g-button-icon-margin-h),
			top 50% left var(--g-button-icon-box-width-compat))
		)
	) or (
		(-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 96 960 960" width="24"><rect width="100" height="100" /></svg>'), linear-gradient(to right, black 1px, transparent 1px))
		and (-webkit-mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height))
		and (-webkit-mask-repeat: no-repeat, no-repeat)
		and (
			(-webkit-mask-position: top 50% left var(--g-button-icon-margin-h),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h)))
			or (-webkit-mask-position: top 50% left var(--g-button-icon-margin-h),
			top 50% left var(--g-button-icon-box-width-compat))
		)
	)
{
	/* Buttons with icon on the left (recommended for most cases) */
	a.g-button.g-cancel, a.g-button.g-okay, a.g-button.g-back, a.g-button.g-star, a.g-button.g-delete, a.g-button.g-left {
		position: relative;

		padding-left: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-left: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));
	}
	a.g-button.g-cancel:focus, a.g-button.g-cancel:focus-within, a.g-button.g-okay:focus, a.g-button.g-okay:focus-within, a.g-button.g-back:focus, a.g-button.g-back:focus-within, a.g-button.g-star:focus, a.g-button.g-star:focus-within, a.g-button.g-delete:focus, a.g-button.g-delete:focus-within, a.g-button.g-left:focus, a.g-button.g-left:focus-within {
		color: transparent;

		transition: all 300ms ease;
	}
	a.g-button.g-cancel:focus *, a.g-button.g-cancel:focus-within *, a.g-button.g-okay:focus *, a.g-button.g-okay:focus-within *, a.g-button.g-back:focus *, a.g-button.g-back:focus-within *, a.g-button.g-star:focus *, a.g-button.g-star:focus-within *, a.g-button.g-delete:focus *, a.g-button.g-delete:focus-within *, a.g-button.g-left:focus *, a.g-button.g-left:focus-within * {
		opacity: 0;

		transition: all 300ms ease;
	}
	a.g-button.g-cancel::after, a.g-button.g-okay::after, a.g-button.g-back::after, a.g-button.g-star::after, a.g-button.g-delete::after {
		content: '';
		display: block;
		box-sizing: border-box;

		position: absolute;
		top: 0;
		left: 0;

		width: 100%;
		height: 100%;

		padding-left: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-left: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));

		-webkit-mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position:
			top 50% left var(--g-button-icon-margin-h),
			top 50% left var(--g-button-icon-box-width-compat);
		-webkit-mask-position:
			top 50% left var(--g-button-icon-margin-h),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position:
			top 50% left var(--g-button-icon-margin-h),
			top 50% left var(--g-button-icon-box-width-compat);
		mask-position:
			top 50% left var(--g-button-icon-margin-h),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-type: alpha;

		transition: all 100ms ease;
	}
	a.g-button.g-cancel:hover::after, a.g-button.g-okay:hover::after, a.g-button.g-back:hover::after, a.g-button.g-star:hover::after, a.g-button.g-delete:hover::after {
		-webkit-mask-size:
			var(--g-button-icon-highlight-size-compat),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-size:
			calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale)),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			var(--g-button-icon-highlight-size-compat),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale)),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-position:
			top 50% left var(--g-button-icon-highlight-margin-h-compat),
			top 50% left var(--g-button-icon-box-width-compat);
		-webkit-mask-position:
			top 50% left calc(var(--g-button-icon-margin-h) - ((var(--g-button-icon-highlight-scale) - 1) / 2) * var(--g-button-icon-size)),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position:
			top 50% left var(--g-button-icon-highlight-margin-h-compat),
			top 50% left var(--g-button-icon-box-width-compat);
		mask-position:
			top 50% left calc(var(--g-button-icon-margin-h) - ((var(--g-button-icon-highlight-scale) - 1) / 2) * var(--g-button-icon-size)),
			top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
	}
	a.g-button.g-cancel:focus::after, a.g-button.g-cancel:focus-within::after, a.g-button.g-okay:focus::after, a.g-button.g-okay:focus-within::after, a.g-button.g-back:focus::after, a.g-button.g-back:focus-within::after, a.g-button.g-star:focus::after, a.g-button.g-star:focus-within::after, a.g-button.g-delete:focus::after, a.g-button.g-delete:focus-within::after {
		-webkit-mask-size: var(--g-button-icon-highlight-size-compat);
		-webkit-mask-size: calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale));
		mask-size: var(--g-button-icon-highlight-size-compat);
		mask-size: calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale));
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position: center;
		mask-position: center;

		transition: all 300ms ease;
	}

	/* Buttons with icon on the right (call to action buttons) */
	a.g-button.g-go, a.g-button.g-send, a.g-button.g-upload, a.g-button.g-download, a.g-button.g-right {
		position: relative;

		padding-right: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-right: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));
	}
	a.g-button.g-go:focus, a.g-button.g-go:focus-within, a.g-button.g-send:focus, a.g-button.g-send:focus-within, a.g-button.g-upload:focus, a.g-button.g-upload:focus-within, a.g-button.g-download:focus, a.g-button.g-download:focus-within, a.g-button.g-right:focus, a.g-button.g-right:focus-within {
		color: transparent;

		transition: all 300ms ease;
	}
	a.g-button.g-go:focus *, a.g-button.g-go:focus-within *, a.g-button.g-send:focus *, a.g-button.g-send:focus-within *, a.g-button.g-upload:focus *, a.g-button.g-upload:focus-within *, a.g-button.g-download:focus *, a.g-button.g-download:focus-within *, a.g-button.g-right:focus *, a.g-button.g-right:focus-within * {
		opacity: 0;

		transition: all 300ms ease;
	}
	a.g-button.g-go::after, a.g-button.g-send::after, a.g-button.g-upload::after, a.g-button.g-download::after {
		content: '';
		display: block;
		box-sizing: border-box;

		position: absolute;
		top: 0;
		left: 0;

		width: 100%;
		height: 100%;

		padding-right: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-right: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));

		-webkit-mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			var(--g-button-icon-size),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position:
			top 50% right var(--g-button-icon-margin-h),
			top 50% right var(--g-button-icon-box-width-compat);
		-webkit-mask-position:
			top 50% right var(--g-button-icon-margin-h),
			top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position:
			top 50% right var(--g-button-icon-margin-h),
			top 50% right var(--g-button-icon-box-width-compat);
		mask-position:
			top 50% right var(--g-button-icon-margin-h),
			top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-type: alpha;

		transition: all 100ms ease;
	}
	a.g-button.g-go:hover::after, a.g-button.g-send:hover::after, a.g-button.g-upload:hover::after, a.g-button.g-download:hover::after {
		-webkit-mask-size:
			var(--g-button-icon-highlight-size-compat),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-size:
			calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale)),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			var(--g-button-icon-highlight-size-compat),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size:
			calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale)),
			var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-position:
			top 50% right var(--g-button-icon-highlight-margin-h-compat),
			top 50% right var(--g-button-icon-box-width-compat);
		-webkit-mask-position:
			top 50% right calc(var(--g-button-icon-margin-h) - ((var(--g-button-icon-highlight-scale) - 1) / 2) * var(--g-button-icon-size)),
			top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position:
			top 50% right var(--g-button-icon-highlight-margin-h-compat),
			top 50% right var(--g-button-icon-box-width-compat);
		mask-position:
			top 50% right calc(var(--g-button-icon-margin-h) - ((var(--g-button-icon-highlight-scale) - 1) / 2) * var(--g-button-icon-size)),
			top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
	}
	a.g-button.g-go:focus::after, a.g-button.g-go:focus-within::after, a.g-button.g-go:focus-within::after , a.g-button.g-send:focus::after, a.g-button.g-send:focus-within::after, a.g-button.g-send:focus-within::after , a.g-button.g-upload:focus::after, a.g-button.g-upload:focus-within::after, a.g-button.g-upload:focus-within::after , a.g-button.g-download:focus::after, a.g-button.g-download:focus-within::after, a.g-button.g-download:focus-within::after  {
		-webkit-mask-size: var(--g-button-icon-highlight-size-compat);
		-webkit-mask-size: calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale));
		mask-size: var(--g-button-icon-highlight-size-compat);
		mask-size: calc(var(--g-button-icon-size) * var(--g-button-icon-highlight-scale));
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		-webkit-mask-position: center;
		mask-position: center;

		transition: all 300ms ease;
	}

	/* Button icons can be set independently from their position */
	a.g-button.g-go::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M647-440H160v-80h487L423-744l57-56 320 320-320 320-57-56 224-224Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M647-440H160v-80h487L423-744l57-56 320 320-320 320-57-56 224-224Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-go:focus::after, a.g-button.g-go:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M647-440H160v-80h487L423-744l57-56 320 320-320 320-57-56 224-224Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M647-440H160v-80h487L423-744l57-56 320 320-320 320-57-56 224-224Z"/></svg>');
	}

	a.g-button.g-send::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M120-160v-640l760 320-760 320Zm80-120 474-200-474-200v140l240 60-240 60v140Zm0 0v-400 400Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M120-160v-640l760 320-760 320Zm80-120 474-200-474-200v140l240 60-240 60v140Zm0 0v-400 400Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-send:focus::after, a.g-button.g-send:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M120-160v-640l760 320-760 320Zm80-120 474-200-474-200v140l240 60-240 60v140Zm0 0v-400 400Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M120-160v-640l760 320-760 320Zm80-120 474-200-474-200v140l240 60-240 60v140Zm0 0v-400 400Z"/></svg>');
	}

	a.g-button.g-upload::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-upload:focus::after, a.g-button.g-upload:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>');
	}

	a.g-button.g-download::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-download:focus::after, a.g-button.g-download:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M480-320 280-520l56-58 104 104v-326h80v326l104-104 56 58-200 200ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"/></svg>');
	}

	a.g-button.g-okay::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-okay:focus::after, a.g-button.g-okay:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z"/></svg>');
	}

	a.g-button.g-cancel::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-cancel:focus::after, a.g-button.g-cancel:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>');
	}

	a.g-button.g-back::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-back:focus::after, a.g-button.g-back:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m313-440 224 224-57 56-320-320 320-320 57 56-224 224h487v80H313Z"/></svg>');
	}

	a.g-button.g-star::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-star:focus::after, a.g-button.g-star:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z"/></svg>');
	}

	a.g-button.g-delete::after {
		background-color: var(--g-link-color);

		-webkit-mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
		mask-image:
			url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>'),
			linear-gradient(to right, black 1px, transparent 1px);
	}
	a.g-button.g-delete:focus::after, a.g-button.g-delete:focus-within::after {
		-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>');
		mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="black"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>');
	}

	/* Buttons with custom icons */
	a.g-button.g-left::after, a.g-button.g-right::after {
		content: '';
		display: block;
		box-sizing: border-box;

		position: absolute;
		top: 0;
		left: 0;

		width: 100%;
		height: 100%;

		background-color: var(--g-link-color);

		-webkit-mask-image: linear-gradient(to right, black 1px, transparent 1px);
		mask-image: linear-gradient(to right, black 1px, transparent 1px);
		-webkit-mask-size: var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		mask-size: var(--g-button-internal-border-width) var(--g-button-internal-border-height);
		-webkit-mask-repeat: no-repeat;
		mask-repeat: no-repeat;
		mask-type: alpha;
	}
	a.g-button.g-left:visited::after, a.g-button.g-right:visited::after {
		background-color: var(--g-visited-color);
	}
	a.g-button.g-left:focus, a.g-button.g-left:focus-within, a.g-button.g-right:focus, a.g-button.g-right:focus-within {
		border-color: var(--g-link-color);
	}
	a.g-button.g-left:visited:focus, a.g-button.g-left:visited:focus-within, a.g-button.g-right:visited:focus, a.g-button.g-right:visited:focus-within {
		border-color: var(--g-visited-color);
	}
	a.g-button.g-left:focus::after, a.g-button.g-left:focus-within::after, a.g-button.g-right:focus::after, a.g-button.g-right:focus-within::after {
		background-color: transparent;

		transition: all 300ms ease;
	}

	a.g-button.g-left::after {
		padding-left: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-left: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));

		-webkit-mask-position: top 50% left var(--g-button-icon-box-width-compat);
		-webkit-mask-position: top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position: top 50% left var(--g-button-icon-box-width-compat);
		mask-position: top 50% left calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
	}

	a.g-button.g-right::after {
		padding-right: var(--g-button-icon-box-width-with-internal-padding-h-compat);
		padding-right: calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h) + var(--g-button-internal-padding-h) + var(--g-button-internal-border-width));

		-webkit-mask-position: top 50% right var(--g-button-icon-box-width-compat);
		-webkit-mask-position: top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
		mask-position: top 50% right var(--g-button-icon-box-width-compat);
		mask-position: top 50% right calc(var(--g-button-icon-size) + 2 * var(--g-button-icon-margin-h));
	}

	/* Custom icons in buttons */
	a.g-button.g-left .g-icon, a.g-button.g-right .g-icon {
		display: block;

		position: absolute;
		top: 50%;

		max-height: var(--g-button-icon-size);
		width: auto;

		margin: 0;
		padding: 0;

		opacity: 1;
	}
	a.g-button.g-left:focus .g-icon, a.g-button.g-left:focus-within .g-icon, a.g-button.g-right:focus .g-icon, a.g-button.g-right:focus-within .g-icon {
		color: var(--g-link-color);  /* So that text elements can be used as icon */
	}
	a.g-button.g-left:visited:focus .g-icon, a.g-button.g-left:visited:focus-within .g-icon, a.g-button.g-right:visited:focus .g-icon, a.g-button.g-right:visited:focus-within .g-icon {
		/* So that text elements can be used as icon */
		color: var(--g-visited-color);
	}
	a.g-button.g-left:focus svg.g-icon *, a.g-button.g-left:focus math.g-icon *, a.g-button.g-left:focus-within svg.g-icon *, a.g-button.g-left:focus-within math.g-icon *, a.g-button.g-right:focus svg.g-icon *, a.g-button.g-right:focus math.g-icon *, a.g-button.g-right:focus-within svg.g-icon *, a.g-button.g-right:focus-within math.g-icon * {
		/* So that embedded XML can be used as icon */
		opacity: 1;
	}

	a.g-button.g-left .g-icon {
		left: var(--g-button-icon-centre-compat);
		left: calc(0.5 * var(--g-button-icon-size) + var(--g-button-icon-margin-h));
		transform: translate(-50%, -50%);
	}
	a.g-button.g-left:hover .g-icon {
		transform: translate(-50%, -50%) scale(var(--g-button-icon-highlight-scale), var(--g-button-icon-highlight-scale));

		transition: all 100ms ease;
	}
	a.g-button.g-left:focus .g-icon, a.g-button.g-left:focus-within .g-icon {
		left: 50%;

		transition: all 300ms ease;
	}

	a.g-button.g-right .g-icon {
		right: var(--g-button-icon-centre-compat);
		right: calc(0.5 * var(--g-button-icon-size) + var(--g-button-icon-margin-h));
		transform: translate(50%, -50%);
	}
	a.g-button.g-right:hover .g-icon {
		transform: translate(50%, -50%) scale(var(--g-button-icon-highlight-scale), var(--g-button-icon-highlight-scale));

		transition: all 100ms ease;
	}
	a.g-button.g-right:focus .g-icon, a.g-button.g-right:focus-within .g-icon {
		right: 50%;

		transition: all 300ms ease;
	}

	/* Custom button colours */
	a.g-button.g-green::after, a.g-button.g-green:visited::after {
		background-color: var(--g-button-green-color);
	}

	a.g-button.g-cyan::after, a.g-button.g-cyan:visited::after {
		background-color: var(--g-button-cyan-color);
	}

	a.g-button.g-blue::after, a.g-button.g-blue:visited::after {
		background-color: var(--g-button-blue-color);
	}

	a.g-button.g-magenta::after, a.g-button.g-magenta:visited::after {
		background-color: var(--g-button-magenta-color);
	}

	a.g-button.g-red::after, a.g-button.g-red:visited::after {
		background-color: var(--g-button-red-color);
	}

	a.g-button.g-orange::after, a.g-button.g-orange:visited::after {
		background-color: var(--g-button-orange-color);
	}

	a.g-button.g-yellow::after, a.g-button.g-yellow:visited::after {
		background-color: var(--g-button-yellow-color);
	}

	/* For greater specificity to override .g-left and .g-right */
	a.g-button.g-green:focus, a.g-button.g-green:visited:focus, a.g-button.g-green:focus-within, a.g-button.g-green:visited:focus-within {
		border-color: var(--g-button-green-color);
	}
	a.g-button.g-green:focus .g-icon, a.g-button.g-green:visited:focus .g-icon, a.g-button.g-green:focus-within .g-icon, a.g-button.g-green:visited:focus-within .g-icon {
		color: var(--g-button-green-color);
	}

	a.g-button.g-cyan:focus, a.g-button.g-cyan:visited:focus, a.g-button.g-cyan:focus-within, a.g-button.g-cyan:visited:focus-within {
		border-color: var(--g-button-cyan-color);
	}
	a.g-button.g-cyan:focus .g-icon, a.g-button.g-cyan:visited:focus .g-icon, a.g-button.g-cyan:focus-within .g-icon, a.g-button.g-cyan:visited:focus-within .g-icon {
		color: var(--g-button-cyan-color);
	}

	a.g-button.g-blue:focus, a.g-button.g-blue:visited:focus, a.g-button.g-blue:focus-within, a.g-button.g-blue:visited:focus-within {
		border-color: var(--g-button-blue-color);
	}
	a.g-button.g-blue:focus .g-icon, a.g-button.g-blue:visited:focus .g-icon, a.g-button.g-blue:focus-within .g-icon, a.g-button.g-blue:visited:focus-within .g-icon {
		color: var(--g-button-blue-color);
	}

	a.g-button.g-magenta:focus, a.g-button.g-magenta:visited:focus, a.g-button.g-magenta:focus-within, a.g-button.g-magenta:visited:focus-within {
		border-color: var(--g-button-magenta-color);
	}
	a.g-button.g-magenta:focus .g-icon, a.g-button.g-magenta:visited:focus .g-icon, a.g-button.g-magenta:focus-within .g-icon, a.g-button.g-magenta:visited:focus-within .g-icon {
		color: var(--g-button-magenta-color);
	}

	a.g-button.g-red:focus, a.g-button.g-red:visited:focus, a.g-button.g-red:focus-within, a.g-button.g-red:visited:focus-within {
		border-color: var(--g-button-red-color);
	}
	a.g-button.g-red:focus .g-icon, a.g-button.g-red:visited:focus .g-icon, a.g-button.g-red:focus-within .g-icon, a.g-button.g-red:visited:focus-within .g-icon {
		color: var(--g-button-red-color);
	}

	a.g-button.g-orange:focus, a.g-button.g-orange:visited:focus, a.g-button.g-orange:focus-within, a.g-button.g-orange:visited:focus-within {
		border-color: var(--g-button-orange-color);
	}
	a.g-button.g-orange:focus .g-icon, a.g-button.g-orange:visited:focus .g-icon, a.g-button.g-orange:focus-within .g-icon, a.g-button.g-orange:visited:focus-within .g-icon {
		color: var(--g-button-orange-color);
	}

	a.g-button.g-yellow:focus, a.g-button.g-yellow:visited:focus, a.g-button.g-yellow:focus-within, a.g-button.g-yellow:visited:focus-within {
		border-color: var(--g-button-yellow-color);
	}
	a.g-button.g-cyan:yellow .g-icon, a.g-button.g-cyan:visited:yellow .g-icon, a.g-button.g-cyan:yellow-within .g-icon, a.g-button.g-cyan:visited:yellow-within .g-icon {
		color: var(--g-button-yellow-color);
	}

	/* Image action buttons */
	picture:hover a.g-button.g-external::after, picture:hover a.g-button.g-expand::after {
		display: block;

		position: absolute;
		top: 0;
		left: 0;

		width: 100%;
		height: 100%;

		color: var(--g-image-button-hover-color);
	}
}



/*
	Hide content until after CSS is loaded
	Add class="g-bodymask" to body element and apply
		body { visibility: hidden; }
	in internal stylesheet of HTML file, to be overwritten by the following
*/
body.g-bodymask {
	visibility: visible;
}
