@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;800&display=swap');

/* Tokens mirror the ones in /index.jsp so the landing page and the language pages
   resolve to the same ink, accent and corner radius. --ink/--accent/--radius are
   copied values, not a shared file; if you change them there, change them here. */
:root {
	--lg-ink: #0b0b0c;
	--lg-ink-soft: #141416;
	--lg-accent: #F433FF;
	--lg-radius: 14px;
	--lg-text: #26262b;
	--lg-text-muted: #6f6f79;
	--lg-line: rgba(0, 0, 0, .10);
	--lg-surface: #f6f6f8;
	--lg-blue: #4b7aa4;
	/* Text guides get their own hue so they read as a distinct kind at a glance,
	   against the pale blue line art of the image guides. Darkened from --lg-accent
	   for contrast: 6.9:1 on the card, where the magenta itself is 2.2:1. */
	--lg-text-guide: #9b2fa0;
}

/* This page is a light-background reference page. Both properties are load-bearing:
   without an explicit background the browser paints its own dark canvas under
   prefers-color-scheme: dark, and the dark body text below becomes unreadable. */
html, body {
	background-color: #fff;
	color-scheme: light;
}

body {
	font-family: 'Montserrat', arial, sans-serif;
	color: var(--lg-text);
	-webkit-font-smoothing: antialiased;
}
/* These used to be covered by a `*` rule, which hit every element at equal
   specificity and made the page impossible to theme. Links and form controls don't
   inherit colour from body on their own, so name them: without this, links take the
   UA's blue and the mdc-tab buttons on the French pages darken to full black. */
a,
button,
input,
select,
textarea {
	color: inherit;
}

#header2 {
	height: 67px;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 20px;
	background-color: var(--lg-ink);
	color: #fff;
}

.header2-logo {
	flex-shrink: 0;
	width: 34px;
	height: 34px;
	line-height: 0;
}

.header2-logo img {
	display: block;
	width: 34px;
	height: 34px;
}

.header2-brand {
	display: flex;
	align-items: baseline;
	gap: 8px;
	min-width: 0;
	font-size: 15px;
}

.header2-home {
	font-weight: 800;
	color: #fff;
	text-decoration: none;
	letter-spacing: .01em;
	white-space: nowrap;
}

.header2-lang {
	overflow: hidden;
	color: rgba(255, 255, 255, .68);
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* MDC sets .mdc-tab-bar { width: 100% }, which as a flex child of the header
   claims the whole bar and squeezes the language name down to an ellipsis. */
#header2 .related-pages {
	flex: 0 0 auto;
	width: auto;
	margin-left: auto;
	padding-top: 0;
	align-self: stretch;
}

.header2-lang::before {
	content: "·";
	margin-right: 8px;
	color: rgba(255, 255, 255, .45);
}
@media (max-width: 500px) {
  #header2-logo {
	display: none;
  }
  h1 {
	font-size: 170%;
  }
}
.preferences-icon {
    position: absolute;
    top: 0;
    right: 10px;
}
.description {
	font-size: 16px; font-weight: 400; color: #666666; margin-top: 10px;margin-bottom: 70px;
}
section {
  display: flex;
  margin: 0 auto;
  align-items: flex-start;
}
section:first-of-type {
	margin-top: 20px;
  }

header {
	display: flex;	
	margin: 0 auto;
	align-items: center;
	gap: 20px;
	margin-top: 30px;
}
header h1 {
	margin: 0;
}	
.title-container {
	padding:0 20px;
}

.icon-container {
	position: relative;
	flex-shrink: 0;
	width: 34px;
	height: 34px;
	line-height: 0;
}

/* The inline <svg>s carry width/height but no viewBox of their own, so the JSPs
   now emit a matching viewBox — without it these would crop rather than scale. */
.icon-container svg {
	width: 100%;
	height: 100%;
	color: var(--lg-blue);
}
body {
	margin:0;
}
.body{
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	line-height: 300%;
	flex-wrap: wrap;
}
.group-container{
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex-grow: 10;
}
.category-link {
	padding-right: 4px;
	padding-left: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 95%;
	display: flex;
    white-space: nowrap;
}

/* Sized and boxed to match the 35px sprites either side of it, rather than nudged
   into place with a transform. Lives here, not in one page's inline <style>: every
   page that renders .category-link rows needs it — the complementary pages were
   showing an unaligned hourglass because the rule was scoped to vocabulary.jsp. */
.category-link a .material-symbols-outlined {
	font-size: 30px;
	width: 35px;
	height: 35px;
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	margin-right: 8px;
}

.category-link .material-symbols-outlined {
	font-size: 250%;	
	color: #4b7aa4;
	font-variation-settings:
    'wght' 300,
    'opsz' 24,
    'FILL' 0,
    'GRAD' 0;
}
.trophy {
	color: #F5DD27 !important;
}

.category-link a {
	display: flex;
	align-items: center;
	flex: 1 1 auto;
	min-width: 0;
	padding: 5px 10px 5px 6px;
	border: 1px solid transparent;
	border-radius: 999px;
	line-height: 1.2;
	text-decoration: none;
	transition: background-color 120ms ease, border-color 120ms ease;
}

.category-link a:hover {
	background-color: #fff;
	border-color: var(--lg-line);
}

.category-link a:focus-visible {
	outline: 2px solid var(--lg-accent);
	outline-offset: 1px;
}
.award-element {
	padding-right: 5px !important;
}
.t {
	font-style: italic;
	text-decoration: none;
	font-size: 90%;
	display: inline-block;
	color: var(--lg-text-muted);
}
/*.t::before {
	content: "(";
  }
  
  .t::after {
	content: ")";
  }*/
.c {
	display: flex; 
	flex-direction: column; 
	line-height: 1.2;
}

.category-link a .c > span:first-child {
	color: var(--lg-text);
	font-weight: 500;
}

.category-link a .c > .t {
	text-decoration: none;
}
.no-translation {
	.t, .header-translation {
		display: none;
	}	
	.c {
		justify-content:flex-end
	}
}
.image-container {
	flex-shrink: 0;
	padding-left: 16px;
}
.header {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--lg-text);
}

.header h3 {
	font-size: 15px;
	font-weight: 600;
}

@media screen and (max-width: 500px) {
	header {
		flex-direction: column;		
		gap: 20px;
		margin-bottom: 60px;
	}
	.image-container {
		padding-left: 0;
	}
}
h3 {
	margin: 0;
	padding: 0;
	font-weight: 600;
}

.header-translation {
	font-size: 90%;
	font-style: italic;
	color: var(--lg-text-muted);
}

.sprite {
	background-image: url(/images/category_index/spritesheet.png);
	background-repeat: no-repeat;
	width: 35px;
	height: 35px;
	display: inline-block;
	margin-right: 8px;
	vertical-align: sub;
	flex-shrink: 0;
}

.sprite2 {
	background-image: url(/images/category_index/spritesheet2b.png);
	background-repeat: no-repeat;
	display: block;
	width: 35px;
	height: 35px;
	display: inline-block;
	margin-right: 8px;
	flex-shrink: 0;
}
.sprite4{background-image:url(/images/category_index/sprite4.png)};

.sprite-african {
	background-position: 0 0
}

.sprite-alpha {
	background-position: -35px 0
}

.sprite-bathroom {
	background-position: -70px 0
}

.sprite-bathroom2 {
	background-position: -105px 0
}

.sprite-bedroom {
	background-position: -140px 0
}

.sprite-birds {
	background-position: -175px 0
}

.sprite-body {
	background-position: -210px 0
}

.sprite-body2 {
	background-position: 0 -35px
}

.sprite-camping {
	background-position: -35px -35px
}

.sprite-clothes_men {
	background-position: -70px -35px
}

.sprite-clothes_winter {
	background-position: -105px -35px
}

.sprite-clothes_women {
	background-position: -140px -35px
}

.sprite-colors {
	background-position: -175px -35px
}

.sprite-den {
	background-position: -210px -35px
}

.sprite-digestive {
	background-position: 0 -70px
}

.sprite-dining {
	background-position: -35px -70px
}

.sprite-door {
	background-position: -70px -70px
}

.sprite-drinks {
	background-position: -105px -70px
}

.sprite-face {
	background-position: -140px -70px
}

.sprite-family {
	background-position: -175px -70px
}

.sprite-farm_anim {
	background-position: -210px -70px
}

.sprite-food {
	background-position: 0 -105px
}

.sprite-food2 {
	background-position: -35px -105px
}

.sprite-fruits {
	background-position: -70px -105px
}

.sprite-garden {
	background-position: -105px -105px
}

.sprite-herbs {
	background-position: -140px -105px
}

.sprite-indoors {
	background-position: -175px -105px
}

.sprite-insects {
	background-position: -210px -105px
}

.sprite-kitchen {
	background-position: 0 -140px
}

.sprite-kitchen2 {
	background-position: -35px -140px
}

.sprite-landscape {
	background-position: -70px -140px
}

.sprite-mammals {
	background-position: -105px -140px
}

.sprite-med {
	background-position: -140px -140px
}

.sprite-numbers {
	background-position: -175px -140px
}

.sprite-ordinal {
	background-position: -210px -140px
}

.sprite-outside {
	background-position: 0 -175px
}

.sprite-pets {
	background-position: -35px -175px
}

.sprite-plants {
	background-position: -70px -175px
}

.sprite-reptiles {
	background-position: -105px -175px
}

.sprite-science {
	background-position: -140px -175px
}

.sprite-sea {
	background-position: -175px -175px
}

.sprite-sea_animal {
	background-position: -210px -175px
}

.sprite-sewing {
	background-position: 0 -210px
}

.sprite-spices {
	background-position: -35px -210px
}

.sprite-sweets {
	background-position: -70px -210px
}

.sprite-utility {
	background-position: -105px -210px
}

.sprite-veg {
	background-position: -140px -210px
}

.sprite-weather {
	background-position: -175px -210px
}

.sprite-writing {
	background-position: -210px -210px
}

.sprite-art {
	background-position: 0 0
}

.sprite-baby {
	background-position: -35px 0
}

.sprite-car {
	background-position: -70px 0
}

.sprite-city {
	background-position: -105px 0
}

.sprite-com {
	background-position: -140px 0
}

.sprite-computer {
	background-position: 0 -35px
}

.sprite-construction {
	background-position: -35px -35px
}

.sprite-electronics {
	background-position: -70px -35px
}

.sprite-fair {
	background-position: -105px -35px
}

.sprite-fantasy {
	background-position: -140px -35px
}

.sprite-farm {
	background-position: 0 -70px
}

.sprite-games {
	background-position: -35px -70px
}

.sprite-history {
	background-position: -70px -70px
}

.sprite-jobs {
	background-position: -105px -70px
}

.sprite-kids {
	background-position: -140px -70px
}

.sprite-landtravel {
	background-position: 0 -105px
}

.sprite-law {
	background-position: -35px -105px
}

.sprite-military {
	background-position: -70px -105px
}

.sprite-money {
	background-position: -105px -105px
}

.sprite-music {
	background-position: -140px -105px
}

.sprite-office {
	background-position: 0 -140px
}

.sprite-photography {
	background-position: -35px -140px
}

.sprite-religion {
	background-position: -70px -140px
}

.sprite-school {
	background-position: -105px -140px
}

.sprite-seatravel {
	background-position: -140px -140px
}

.sprite-shapes {
	background-position: -175px 0
}

.sprite-space {
	background-position: -175px -35px
}

.sprite-time {
	background-position: -175px -70px
}

.sprite-tools {
	background-position: -175px -105px
}

.sprite-travel {
	background-position: -175px -140px
}
.image-wrapper {
	width: 35px;
	height: 35px;
	display: inline-block;
	text-align: center;
	margin: 0 4px;
}
@media (min-width: 500px) {
	.body {
		flex-direction: row;
	}
}
section {
	margin-top: 40px;
}
.container, header {
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
}
.attributions {
	display: flex;
	justify-content: center;
	gap: 10px;
	margin: 20px;
}

.container.lang-en .c, .container.lang-same .c{
	justify-content: flex-end !important;
}

body {
	font-family: 'Roboto', sans-serif;
}

.tab-container {
	display: inline-flex;
	gap: 4px;
	padding: 4px;
	background-color: var(--lg-surface);
	border-radius: 999px;
	position: absolute;
	right: 10px;
	margin-top: 20px;
	bottom: 0;
}

.tab {
	border-radius: 999px;
	padding: 9px 18px;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: 8px;
	border-bottom: 3px solid transparent;
	transition: color 0.3s ease, border-bottom-color 0.3s ease;
}

.tab-label {
	font-size: 0.95rem;
	line-height: 1;
	white-space: nowrap;
}
.tab:hover {
	background-color: rgba(0, 0, 0, .05);
}

.tab.active {
	background-color: var(--lg-ink);
	color: #fff;
}
/* Was content: url('/english/article.svg') — an external SVG dropped in this way
   can neither inherit currentColor nor be resized, so it rendered at 45px (larger
   than the 35px image sprites) with its authored #e3e3e3 fill: 1.19:1 against the
   card, i.e. invisible. As a font glyph it takes colour and size normally. */
.notepad2::before {
	content: "menu_book";
	font-family: 'Material Symbols Outlined';
	font-size: 22px;
	font-weight: normal;
	line-height: 1;
	color: var(--lg-text-guide);
	display: inline-block;
	vertical-align: middle;
	margin-right: 5px;
	font-variation-settings: 'wght' 300, 'opsz' 24, 'FILL' 0, 'GRAD' 0;
}
.notepad2 {
	display: flex;
	align-items: center;
	gap: 5px;
	flex-direction: column;
}
.u-container {
	display:flex;
	gap: 2px;
	padding-right: 30px;
	flex-wrap: wrap;
}

.u-container .category-link {
	padding-right: 10px;
}

.footer {
	text-align: center;	
}
/* Small screens: the visual/in-depth pills are absolutely positioned and
   379px wide, so they get clipped off the left edge. Drop them into normal
   flow and let them shrink instead. */
@media screen and (max-width: 700px) {
	.tab-container {
		position: static;
		margin: 14px 0 0;
		justify-content: center;
		flex-wrap: wrap;
		max-width: 100%;
		box-sizing: border-box;
	}

	.tab {
		padding: 8px 14px;
		gap: 6px;
	}

	.tab svg {
		width: 26px;
		height: 26px;
	}

	.tab-label {
		font-size: 0.85rem;
		white-space: normal;
	}

	/* the 70px gap existed only to clear the absolutely positioned pills */
	.description {
		margin-bottom: 0;
	}
}

/* ---------------- Card layout ----------------
   The sections used to stack full-width, which left a tall empty gutter on the
   right and made the page scan as a sitemap. Columns rather than grid: the
   sections vary from 3 links to 20, and grid rows would stretch every card in a
   row to match the tallest one. break-inside keeps a card whole. */
/* column-width, not column-count, so the count follows the space actually
   available rather than a breakpoint. 340px is the width at which the longest
   name-plus-translation pair stops wrapping; below ~250px the translations wrap on
   nearly every row. The 3 caps it, so very wide monitors get wider columns rather
   than a fourth. */
.vocab-grid {
	columns: 340px 3;
	column-gap: 16px;
}

@media screen and (max-width: 700px) {
	.vocab-grid {
		columns: auto 1;
	}
}

section {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	break-inside: avoid;
	margin: 0 0 16px;
	padding: 14px 14px 10px;
	background-color: var(--lg-surface);
	border-radius: var(--lg-radius);
}

section:first-of-type {
	margin-top: 0;
}

.group-container {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
}

.header {
	margin-bottom: 10px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--lg-line);
}

.body {
	display: block;
	line-height: normal;
}

.category-link {
	max-width: none;
	margin-bottom: 2px;
}

/* Category names are long in some languages and the row is a fixed-width column
   now, so let them wrap instead of being clipped by the inherited ellipsis. */
.category-link,
.category-link a {
	white-space: normal;
}

.category-link .c {
	min-width: 0;
}


/* Shared by the vocabulary and complementary pages for one language, so both
   open on the same artwork. */
/* --- landing islands (Monument Valley + New York) --- */
.image-container.island-container {
  position: relative;
  width: min(560px, 46vw);
  aspect-ratio: 560 / 340;
  padding-left: 0;
  flex-shrink: 0;
}

@media screen and (min-width: 1240px) {
  .image-container.island-container {
    width: 560px;
  }
}

.island-container img {
  position: absolute;
  display: block;
  height: auto;
}

.island-container .island-back {
  width: 62%;
  left: 0;
  top: 0;
  filter: drop-shadow(0 16px 18px rgba(35, 60, 85, 0.16));
}

.island-container .island-front {
  width: 62%;
  right: 0;
  bottom: 0;
  filter: drop-shadow(0 14px 16px rgba(35, 60, 85, 0.22));
}

@media (prefers-reduced-motion: no-preference) {
  .island-container .island-back {
    animation: island-float 8s ease-in-out infinite alternate;
  }

  .island-container .island-front {
    animation: island-float 6.5s ease-in-out 0.6s infinite alternate;
  }
}

@keyframes island-float {
  from { transform: translateY(0); }
  to   { transform: translateY(-8px); }
}

@media screen and (max-width: 700px) {
	.image-container.island-container {
		width: min(560px, 94vw);
		margin: 0 auto;
	}
}

/* ---------------- Complementary page: in-depth guides ----------------
   Each .u-container holds one image guide plus the text guides that extend it.
   Two different relationships share that wrapper, so they get two treatments:

   .is-continuation  "In depth" — literally more of the parent guide, no identity
                     of its own. Rides on the parent's row as a pill.
   .is-child         A named guide ("The Legal System", "Mental Health") — its own
                     topic, so it keeps a full row, indented under its parent.

   Laid out with flex-wrap rather than by moving the markup: the text guides are
   rendered inside <% if (progressMap…) %> blocks, and relocating them would mean
   relocating the scriptlets too. */
/* Grid rather than flex-wrap: a flex line wraps before it shrinks, so a long
   translated name ("Les animaux de la ferme") pushed the pill onto its own line.
   A 1fr column lets the name wrap instead and keeps the pill on the parent row. */
.u-container {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	row-gap: 2px;
	width: 100%;
}

.u-container > .category-link {
	grid-column: 1;
}

.u-container > .category-link.is-continuation {
	grid-column: 2;
}

.u-container > .category-link.is-child {
	grid-column: 1 / -1;
}

.category-link.is-continuation {
	flex: 0 0 auto;
	max-width: none;
	margin-left: 6px;
	padding-right: 0;
}

.category-link.is-continuation > a {
	gap: 5px;
	padding: 4px 11px;
	border: 1px solid rgba(155, 47, 160, .28);
	border-radius: 999px;
	font-size: 12px;
}

.category-link.is-continuation > a:hover {
	background-color: rgba(155, 47, 160, .07);
	border-color: rgba(155, 47, 160, .55);
}

/* The row icon is a fixed-size SVG dropped in via content:, which cannot scale
   down to pill size — the pill reads fine without it. */
.category-link.is-continuation .notepad2 {
	display: none;
}

/* Stacked, not inline: every other row on the page puts the translation under the
   name, and the pill should not be the one place that reads differently. */
.category-link.is-continuation .c {
	flex-direction: column;
	align-items: flex-start;
	gap: 1px;
	line-height: 1.25;
}

.category-link.is-continuation .c > span:first-child {
	font-weight: 400;
	color: var(--lg-text-guide);
}

/* 44px = the parent's 35px icon + its 8px gap + the link's 1px of padding, so a
   child's icon begins exactly where its parent's text does. At the previous 22px
   the icons sat in a ragged column and the child's text landed only 6px right of
   the parent's, which read as misalignment rather than nesting. */
.category-link.is-child {
	margin-left: 44px;
}

/* A few guides (Greetings) are text-only with no image guide above them — some sit
   alone in a .u-container, others directly in .body — so there is nothing to sit
   under. Match on being first either way. */
.category-link.is-child:first-child {
	margin-left: 0;
}

/* The note sits at the foot of the hero, tucked over the bottom edge of the island
   artwork so the two read as one block instead of a banner floating below a picture.
   The negative pull is what creates the overlap; z-index puts the note in front. */
.complementary-note {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	margin: -12px auto 18px;
	padding: 12px 16px;
	background-color: #f0f0f0;
	border-radius: 10px;
}

.complementary-note svg {
	flex-shrink: 0;
	fill: currentColor;
}

/* Once the header stacks, the note follows the artwork rather than overlapping it —
   at this width the island is centred and an overlap would cover the skyline. */
@media screen and (max-width: 700px) {
	.complementary-note {
		margin-top: 12px;
		margin-bottom: 18px;
	}
}

/* Shared by french/vocabulary.jsp and french/complementary.jsp so both open on
   the same artwork, the way the English pair share the island rules above. */
/* --- French landing scene --- */
/* Scoped to .scene-container: this block moved out of french/vocabulary.jsp's
   inline <style> into this shared sheet, and unqualified it was sizing the
   image column on every globe page too, pushing their titles to the right. */
.image-container.scene-container {
  width: clamp(300px, 42vw, 540px);
  padding-left: 0;
  flex-shrink: 0;
}

.scene {
  position: relative;
  width: 100%;
  aspect-ratio: 540 / 331;
}

.scene img {
  position: absolute;
  display: block;
  height: auto;
}

.scene-france {
  width: 56%;
  left: 0;
  top: 0;
  filter: drop-shadow(0 16px 18px rgba(35, 60, 85, 0.16));
}

.scene-paris {
  width: 56%;
  right: 0;
  bottom: 0;
  filter: drop-shadow(0 14px 16px rgba(35, 60, 85, 0.22));
}

.scene-balloon {
  width: 6.58%;
  left: 33.15%;
  top: 0;
}

@media (prefers-reduced-motion: no-preference) {
  .scene-france {
    animation: scene-float 8s ease-in-out infinite alternate;
  }

  .scene-paris {
    animation: scene-float 6.5s ease-in-out 0.6s infinite alternate;
  }

  .scene-balloon {
    animation: balloon-drift 54s ease-in-out infinite;
  }
}

@keyframes balloon-drift {
  0%   { transform: translate(0, 0); }
  50%  { transform: translate(80%, -22%); }
  100% { transform: translate(0, 0); }
}

@keyframes scene-float {
  from { transform: translateY(0); }
  to   { transform: translateY(-8px); }
}

/* ---------------- Category filter ----------------
   Shared by the vocabulary and complementary pages rather than repeated in each
   page's inline <style>, which is where these lived until three pages needed them. */
.vocab-main {
	flex: 4 1 0;
	min-width: 0;
}

/* Same max-width and centring as .container, so the filter lines up with the card
   columns on the complementary pages, where it sits outside .vocab-main and would
   otherwise stretch the full body width. */
.vocab-filter {
	display: flex;
	align-items: center;
	gap: 8px;
	box-sizing: border-box;
	max-width: 1200px;
	margin: 0 auto 16px;
	padding: 9px 14px;
	border: 1px solid var(--lg-line);
	border-radius: 999px;
}

.vocab-filter:focus-within {
	border-color: rgba(0, 0, 0, .32);
}

.vocab-filter .material-symbols-outlined {
	font-size: 20px;
	color: var(--lg-text-muted);
}

#vocab-filter-input {
	flex: 1;
	min-width: 0;
	border: 0;
	outline: 0;
	background: transparent;
	font-family: inherit;
	font-size: 14px;
	color: var(--lg-text);
}

.vocab-filter-empty {
	box-sizing: border-box;
	max-width: 1200px;
	margin: 0 auto 16px;
	padding-left: 4px;
	color: var(--lg-text-muted);
	font-size: 14px;
}

.category-link[hidden],
section[hidden] {
	display: none;
}

/* ---------------- Footer social links ---------------- */
.footer-social {
	display: inline-flex;
	align-items: center;
	vertical-align: middle;
	margin-right: 8px;
}

/* The shared assets are white, drawn for the landing page's dark footer.
   brightness(0) renders the white artwork black here; the opacity then matches the
   weight of the text links beside it. Cheaper than keeping a second pair of files. */
.footer-social img {
	display: block;
	filter: brightness(0);
	opacity: .5;
	transition: opacity 120ms ease;
}

.footer-social:hover img {
	opacity: .8;
}

/* ---------------- MDC related-pages tab bar ----------------
   MDC's underline indicator defaults to its own theme purple (#6200ee), which is
   essentially invisible against #header2's near-black background. grammar.jsp hits
   the same problem and fixes it with a light, !important override; this mirrors
   that fix so the Vocabulary/Grammar/Readings tabs get a visible white underline
   here too. !important matches mdc2.css's own specificity on this selector. */
#header2 .mdc-tab,
#header2 .mdc-tab__text-label {
	color: rgba(255, 255, 255, .68) !important;
}

#header2 .mdc-tab--active,
#header2 .mdc-tab--active .mdc-tab__text-label {
	color: #fff !important;
}

/* MDC pins .mdc-tab to a 48px height, so inside the 67px #header2 the underline
   ended 19px short of the bar's base and floated in mid-air. Filling the bar's
   height drops the indicator onto the bottom edge, where a tab indicator belongs. */
#header2 .related-pages .mdc-tab {
	height: 100%;
	min-height: 0;
}

#header2 .mdc-tab-indicator__content--underline {
	border-color: rgba(255, 255, 255, .68) !important;
}

#header2 .mdc-tab-indicator--active .mdc-tab-indicator__content--underline {
	border-color: #fff !important;
}
