/* ==========================================================================
   Bootstrap 3/4 compatibility for Bootstrap 5 themes
   --------------------------------------------------------------------------
   Loaded only for themes that ask for the "modern" library set
   (theme.headerScripts(libraries="modern")).  Existing themes never get it -
   they stay on the libraries they were built for.

   Platform pages still print some Bootstrap 4 markup (subscription forms, the
   cart, LMS session tags, the forum, the breadcrumb search).  Bootstrap 5
   dropped those classes, so here each one is given its Bootstrap 5 behaviour.
   Where the platform's markup is changed to the Bootstrap 5 class, the rule
   here can go.  The spacing, float and alignment utilities were generated
   for each breakpoint; edit by hand, keeping every rule to what Bootstrap 4
   did.
   ========================================================================== */

/* Screen-reader text */
.sr-only,
.sr-only-focusable:not(:focus):not(:focus-within) {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* Type */
.font-weight-light { font-weight: 300 !important; }
.font-weight-lighter { font-weight: lighter !important; }
.font-weight-normal { font-weight: 400 !important; }
.font-weight-bold { font-weight: 700 !important; }
.font-weight-bolder { font-weight: bolder !important; }
.font-italic { font-style: italic !important; }
.text-monospace { font-family: var(--bs-font-monospace) !important; }

/* Alignment and floats */
.text-left { text-align: left !important; }
.text-right { text-align: right !important; }
.float-left { float: left !important; }
.float-right { float: right !important; }

@media (min-width: 576px) {
	.text-sm-left { text-align: left !important; }
	.text-sm-right { text-align: right !important; }
	.float-sm-left { float: left !important; }
	.float-sm-right { float: right !important; }
}

@media (min-width: 768px) {
	.text-md-left { text-align: left !important; }
	.text-md-right { text-align: right !important; }
	.float-md-left { float: left !important; }
	.float-md-right { float: right !important; }
}

@media (min-width: 992px) {
	.text-lg-left { text-align: left !important; }
	.text-lg-right { text-align: right !important; }
	.float-lg-left { float: left !important; }
	.float-lg-right { float: right !important; }
}

@media (min-width: 1200px) {
	.text-xl-left { text-align: left !important; }
	.text-xl-right { text-align: right !important; }
	.float-xl-left { float: left !important; }
	.float-xl-right { float: right !important; }
}

/* Bootstrap 3 floats */
.pull-left { float: left !important; }
.pull-right { float: right !important; }

/* Left/right spacing (Bootstrap 5 says start/end) */
.ml-0 { margin-left: 0 !important; }
.mr-0 { margin-right: 0 !important; }
.ml-1 { margin-left: .25rem !important; }
.mr-1 { margin-right: .25rem !important; }
.ml-2 { margin-left: .5rem !important; }
.mr-2 { margin-right: .5rem !important; }
.ml-3 { margin-left: 1rem !important; }
.mr-3 { margin-right: 1rem !important; }
.ml-4 { margin-left: 1.5rem !important; }
.mr-4 { margin-right: 1.5rem !important; }
.ml-5 { margin-left: 3rem !important; }
.mr-5 { margin-right: 3rem !important; }
.ml-auto { margin-left: auto !important; }
.mr-auto { margin-right: auto !important; }
.pl-0 { padding-left: 0 !important; }
.pr-0 { padding-right: 0 !important; }
.pl-1 { padding-left: .25rem !important; }
.pr-1 { padding-right: .25rem !important; }
.pl-2 { padding-left: .5rem !important; }
.pr-2 { padding-right: .5rem !important; }
.pl-3 { padding-left: 1rem !important; }
.pr-3 { padding-right: 1rem !important; }
.pl-4 { padding-left: 1.5rem !important; }
.pr-4 { padding-right: 1.5rem !important; }
.pl-5 { padding-left: 3rem !important; }
.pr-5 { padding-right: 3rem !important; }

@media (min-width: 576px) {
	.ml-sm-0 { margin-left: 0 !important; }
	.mr-sm-0 { margin-right: 0 !important; }
	.ml-sm-1 { margin-left: .25rem !important; }
	.mr-sm-1 { margin-right: .25rem !important; }
	.ml-sm-2 { margin-left: .5rem !important; }
	.mr-sm-2 { margin-right: .5rem !important; }
	.ml-sm-3 { margin-left: 1rem !important; }
	.mr-sm-3 { margin-right: 1rem !important; }
	.ml-sm-4 { margin-left: 1.5rem !important; }
	.mr-sm-4 { margin-right: 1.5rem !important; }
	.ml-sm-5 { margin-left: 3rem !important; }
	.mr-sm-5 { margin-right: 3rem !important; }
	.ml-sm-auto { margin-left: auto !important; }
	.mr-sm-auto { margin-right: auto !important; }
	.pl-sm-0 { padding-left: 0 !important; }
	.pr-sm-0 { padding-right: 0 !important; }
	.pl-sm-1 { padding-left: .25rem !important; }
	.pr-sm-1 { padding-right: .25rem !important; }
	.pl-sm-2 { padding-left: .5rem !important; }
	.pr-sm-2 { padding-right: .5rem !important; }
	.pl-sm-3 { padding-left: 1rem !important; }
	.pr-sm-3 { padding-right: 1rem !important; }
	.pl-sm-4 { padding-left: 1.5rem !important; }
	.pr-sm-4 { padding-right: 1.5rem !important; }
	.pl-sm-5 { padding-left: 3rem !important; }
	.pr-sm-5 { padding-right: 3rem !important; }
}

@media (min-width: 768px) {
	.ml-md-0 { margin-left: 0 !important; }
	.mr-md-0 { margin-right: 0 !important; }
	.ml-md-1 { margin-left: .25rem !important; }
	.mr-md-1 { margin-right: .25rem !important; }
	.ml-md-2 { margin-left: .5rem !important; }
	.mr-md-2 { margin-right: .5rem !important; }
	.ml-md-3 { margin-left: 1rem !important; }
	.mr-md-3 { margin-right: 1rem !important; }
	.ml-md-4 { margin-left: 1.5rem !important; }
	.mr-md-4 { margin-right: 1.5rem !important; }
	.ml-md-5 { margin-left: 3rem !important; }
	.mr-md-5 { margin-right: 3rem !important; }
	.ml-md-auto { margin-left: auto !important; }
	.mr-md-auto { margin-right: auto !important; }
	.pl-md-0 { padding-left: 0 !important; }
	.pr-md-0 { padding-right: 0 !important; }
	.pl-md-1 { padding-left: .25rem !important; }
	.pr-md-1 { padding-right: .25rem !important; }
	.pl-md-2 { padding-left: .5rem !important; }
	.pr-md-2 { padding-right: .5rem !important; }
	.pl-md-3 { padding-left: 1rem !important; }
	.pr-md-3 { padding-right: 1rem !important; }
	.pl-md-4 { padding-left: 1.5rem !important; }
	.pr-md-4 { padding-right: 1.5rem !important; }
	.pl-md-5 { padding-left: 3rem !important; }
	.pr-md-5 { padding-right: 3rem !important; }
}

@media (min-width: 992px) {
	.ml-lg-0 { margin-left: 0 !important; }
	.mr-lg-0 { margin-right: 0 !important; }
	.ml-lg-1 { margin-left: .25rem !important; }
	.mr-lg-1 { margin-right: .25rem !important; }
	.ml-lg-2 { margin-left: .5rem !important; }
	.mr-lg-2 { margin-right: .5rem !important; }
	.ml-lg-3 { margin-left: 1rem !important; }
	.mr-lg-3 { margin-right: 1rem !important; }
	.ml-lg-4 { margin-left: 1.5rem !important; }
	.mr-lg-4 { margin-right: 1.5rem !important; }
	.ml-lg-5 { margin-left: 3rem !important; }
	.mr-lg-5 { margin-right: 3rem !important; }
	.ml-lg-auto { margin-left: auto !important; }
	.mr-lg-auto { margin-right: auto !important; }
	.pl-lg-0 { padding-left: 0 !important; }
	.pr-lg-0 { padding-right: 0 !important; }
	.pl-lg-1 { padding-left: .25rem !important; }
	.pr-lg-1 { padding-right: .25rem !important; }
	.pl-lg-2 { padding-left: .5rem !important; }
	.pr-lg-2 { padding-right: .5rem !important; }
	.pl-lg-3 { padding-left: 1rem !important; }
	.pr-lg-3 { padding-right: 1rem !important; }
	.pl-lg-4 { padding-left: 1.5rem !important; }
	.pr-lg-4 { padding-right: 1.5rem !important; }
	.pl-lg-5 { padding-left: 3rem !important; }
	.pr-lg-5 { padding-right: 3rem !important; }
}

@media (min-width: 1200px) {
	.ml-xl-0 { margin-left: 0 !important; }
	.mr-xl-0 { margin-right: 0 !important; }
	.ml-xl-1 { margin-left: .25rem !important; }
	.mr-xl-1 { margin-right: .25rem !important; }
	.ml-xl-2 { margin-left: .5rem !important; }
	.mr-xl-2 { margin-right: .5rem !important; }
	.ml-xl-3 { margin-left: 1rem !important; }
	.mr-xl-3 { margin-right: 1rem !important; }
	.ml-xl-4 { margin-left: 1.5rem !important; }
	.mr-xl-4 { margin-right: 1.5rem !important; }
	.ml-xl-5 { margin-left: 3rem !important; }
	.mr-xl-5 { margin-right: 3rem !important; }
	.ml-xl-auto { margin-left: auto !important; }
	.mr-xl-auto { margin-right: auto !important; }
	.pl-xl-0 { padding-left: 0 !important; }
	.pr-xl-0 { padding-right: 0 !important; }
	.pl-xl-1 { padding-left: .25rem !important; }
	.pr-xl-1 { padding-right: .25rem !important; }
	.pl-xl-2 { padding-left: .5rem !important; }
	.pr-xl-2 { padding-right: .5rem !important; }
	.pl-xl-3 { padding-left: 1rem !important; }
	.pr-xl-3 { padding-right: 1rem !important; }
	.pl-xl-4 { padding-left: 1.5rem !important; }
	.pr-xl-4 { padding-right: 1.5rem !important; }
	.pl-xl-5 { padding-left: 3rem !important; }
	.pr-xl-5 { padding-right: 3rem !important; }
}

/* Borders and corners */
.border-left { border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; }
.border-right { border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; }
.border-left-0 { border-left: 0 !important; }
.border-right-0 { border-right: 0 !important; }
.rounded-left { border-top-left-radius: var(--bs-border-radius) !important; border-bottom-left-radius: var(--bs-border-radius) !important; }
.rounded-right { border-top-right-radius: var(--bs-border-radius) !important; border-bottom-right-radius: var(--bs-border-radius) !important; }

/* Grid: gutterless rows and the compact form row */
.no-gutters {
	--bs-gutter-x: 0;
	--bs-gutter-y: 0;
	margin-right: 0;
	margin-left: 0;
}
.no-gutters > .col,
.no-gutters > [class*="col-"] {
	padding-right: 0;
	padding-left: 0;
}
.form-row {
	display: flex;
	flex-wrap: wrap;
	margin-right: -5px;
	margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
	padding-right: 5px;
	padding-left: 5px;
}

/* Forms */
.form-group {
	margin-bottom: 1rem;
}
.form-inline {
	display: flex;
	flex-flow: row wrap;
	align-items: center;
}
.form-inline .form-control,
.form-inline .form-select,
.form-inline .custom-select {
	display: inline-block;
	width: auto;
	vertical-align: middle;
}
.custom-select {
	display: block;
	width: 100%;
	padding: .375rem 2.25rem .375rem .75rem;
	font-size: 1rem;
	font-weight: 400;
	line-height: 1.5;
	color: var(--bs-body-color);
	background-color: var(--bs-body-bg);
	background-image: var(--bs-form-select-bg-img);
	background-repeat: no-repeat;
	background-position: right .75rem center;
	background-size: 16px 12px;
	border: var(--bs-border-width) solid var(--bs-border-color);
	border-radius: var(--bs-border-radius);
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
}
.custom-select-sm {
	padding-top: .25rem;
	padding-bottom: .25rem;
	font-size: .875rem;
}
/* custom-control: the platform's own forms print form-check on Bootstrap 5
   themes now, but owner content may still carry these.  Kept usable as a plain
   checkbox or radio beside its label rather than redrawn. */
.custom-control {
	position: relative;
	display: block;
	min-height: 1.5rem;
	padding-left: 1.75rem;
}
.custom-control-inline {
	display: inline-flex;
	margin-right: 1rem;
}
.custom-control-input {
	position: absolute;
	left: 0;
	top: .3rem;
	width: 1rem;
	height: 1rem;
	margin: 0;
}
/* Markup that carries both sets of classes (custom-control form-check
   form-switch) is Bootstrap 5's to draw: leave the field in the flow */
.custom-control.form-check { padding-left: 1.5em; }
.custom-control.form-switch { padding-left: 2.5em; }
.custom-control-input.form-check-input { position: static; }
.custom-control-label {
	display: inline-block;
	margin-bottom: 0;
}

/* Input groups: Bootstrap 5 dropped the append/prepend wrappers and squares the
   corners of direct children only, so a button inside a wrapper kept all four
   rounded corners against the field */
.input-group-prepend,
.input-group-append {
	display: flex;
}
.input-group-append {
	margin-left: calc(var(--bs-border-width) * -1);
}
.input-group-prepend {
	margin-right: calc(var(--bs-border-width) * -1);
}
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text {
	border-top-right-radius: 0;
	border-bottom-right-radius: 0;
}
.input-group > .input-group-append > .btn,
.input-group > .input-group-append > .input-group-text,
.input-group > .input-group-prepend:not(:first-child) > .btn,
.input-group > .input-group-prepend:not(:first-child) > .input-group-text {
	border-top-left-radius: 0;
	border-bottom-left-radius: 0;
}
.input-group > .input-group-append > .btn + .btn,
.input-group > .input-group-prepend > .btn + .btn {
	margin-left: calc(var(--bs-border-width) * -1);
	border-radius: 0;
}

/* Buttons */
.btn-block {
	display: block;
	width: 100%;
}
.btn-block + .btn-block {
	margin-top: .5rem;
}
.btn-default {
	color: var(--bs-body-color);
	background-color: var(--bs-body-bg);
	border-color: var(--bs-border-color);
}
.btn-xs {
	padding: .125rem .375rem;
	font-size: .75rem;
	border-radius: var(--bs-border-radius-sm);
}
.close {
	float: right;
	padding: 0;
	font-size: 1.5rem;
	font-weight: 700;
	line-height: 1;
	color: #000;
	text-shadow: 0 1px 0 #fff;
	opacity: .5;
	background-color: transparent;
	border: 0;
}
.close:hover {
	opacity: .75;
}

/* Badges: the colour classes became text-bg-*, and badge-pill rounded-pill */
.badge-pill { border-radius: var(--bs-border-radius-pill); }

.badge-primary { color: #fff !important; background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-secondary { color: #fff !important; background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-success { color: #fff !important; background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-danger { color: #fff !important; background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-warning { color: #000 !important; background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-info { color: #000 !important; background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-light { color: #000 !important; background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important; }
.badge-dark { color: #fff !important; background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important; }

/* Dropdowns */
.dropdown-menu-right,
.dropdown-menu-right[data-bs-popper] {
	right: 0;
	left: auto;
}
.dropdown-menu-left,
.dropdown-menu-left[data-bs-popper] {
	right: auto;
	left: 0;
}

/* Media object, card deck, jumbotron */
.media {
	display: flex;
	align-items: flex-start;
}
.media-body {
	flex: 1;
	min-width: 0;
}
.card-deck {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem;
}
.card-deck > .card {
	flex: 1 0 0%;
	min-width: 220px;
}
.jumbotron {
	padding: 2rem 1rem;
	margin-bottom: 2rem;
	background-color: var(--bs-tertiary-bg);
	border-radius: var(--bs-border-radius-lg);
}
@media (min-width: 576px) {
	.jumbotron {
		padding: 4rem 2rem;
	}
}

/* Embeds: Bootstrap 5 says .ratio */
.embed-responsive {
	position: relative;
	display: block;
	width: 100%;
	padding: 0;
	overflow: hidden;
}
.embed-responsive::before {
	display: block;
	content: "";
	padding-top: 56.25%;
}
.embed-responsive-21by9::before { padding-top: 42.857143%; }
.embed-responsive-4by3::before { padding-top: 75%; }
.embed-responsive-1by1::before { padding-top: 100%; }
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

/* Bootstrap 3 images */
.img-responsive {
	max-width: 100%;
	height: auto;
}
.img-circle {
	border-radius: 50%;
}
