/*
 * Campus CESGEN – design layer for the MasterStudy child theme.
 * Palette and typography shared with the Elementor kit. Loaded after the parent styles
 * and after cesgen-recolor.css (generated overrides for the parent theme's default colours).
 */

:root {
	--cesgen-blue: #1E63B0;
	--cesgen-blue-dark: #17508F;
	--cesgen-navy: #1B2F5B;
	--cesgen-ink: #14213D;
	--cesgen-text: #33415C;
	--cesgen-sky: #279BD3;
	--cesgen-soft: #F3F7FC;
	--cesgen-border: #DCE5F0;
	--cesgen-radius: 8px;
	--cesgen-font-heading: 'Manrope', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--cesgen-font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

/* Typography: Inter for text, Manrope for headings. */
body,
body p,
body li,
body input,
body select,
body textarea,
body button,
.btn,
.button {
	font-family: var(--cesgen-font-body);
}

body {
	color: var(--cesgen-text);
	font-size: 16px;
	line-height: 1.6;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
[class*="masterstudy"][class*="__title"] {
	font-family: var(--cesgen-font-heading) !important;
	color: var(--cesgen-ink);
	letter-spacing: -0.01em;
}

/* MasterStudy LMS components inherit the site fonts instead of their own defaults. */
[class^="masterstudy-"],
[class*=" masterstudy-"] {
	font-family: var(--cesgen-font-body);
}

/* Links. */
a {
	color: var(--cesgen-blue);
}
a:hover,
a:focus {
	color: var(--cesgen-blue-dark);
}

/* Buttons: CESGEN blue, rounded, no uppercase shouting. */
.btn,
.button,
.btn-default,
.form-submit .submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button {
	border-radius: var(--cesgen-radius);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 600;
}

/* Page title band (.entry-header): navy instead of the theme's default grey. */
.entry-header {
	background-color: var(--cesgen-navy) !important;
	background-image: none !important;
	padding: 36px 0 32px;
	margin-bottom: 40px;
}
.entry-header .entry-title h1,
.entry-header h1 {
	color: #FFFFFF !important;
	margin: 0;
	font-size: 34px;
	line-height: 1.2;
	text-transform: none;
}
.stm_lms_breadcrumbs .breadcrumbs_holder_empty {
	display: none;
}

/* Header logo size. */
#header .logo-unit img,
.header_default .logo-unit img {
	max-height: 52px;
	width: auto;
}
@media (max-width: 1025px) {
	#header-mobile .logo-unit img {
		max-height: 40px;
		width: auto;
	}
}

/* Main menu (desktop). */
#header .header-menu > li > a {
	color: var(--cesgen-ink);
	font-family: var(--cesgen-font-heading);
	font-weight: 600;
	font-size: 15px;
	text-transform: none;
	letter-spacing: 0;
}
#header .header-menu > li > a:hover,
#header .header-menu > li.current-menu-item > a {
	color: var(--cesgen-blue);
}

/* Mobile menu: the theme always adds a search box; search is off on this site. */
.header-menu-mobile li:has(#searchform-mobile) {
	display: none;
}
.header-menu-mobile .header-menu > li > a {
	color: var(--cesgen-ink);
	font-weight: 600;
}
/* Mobile menu in the CESGEN palette (the theme uses its own greys) and the current page in blue, as on desktop (F3-06). */
.header-menu-mobile .header-menu {
	border-top: 1px solid var(--cesgen-border) !important;
}
.header-menu-mobile .header-menu > li {
	border-bottom: 1px solid var(--cesgen-border) !important;
}
.header-menu-mobile .header-menu > li > a {
	background: var(--cesgen-soft) !important;
	padding: 16px 24px !important;
}
.header-menu-mobile .header-menu > li.current-menu-item > a,
.header-menu-mobile .header-menu > li.current_page_item > a {
	color: var(--cesgen-blue) !important;
}

/* Footer: navy background, light text. */
#footer,
#footer_top,
.footer_widgets_wrapper {
	background-color: var(--cesgen-navy) !important;
	color: #C9D4E5;
}
#footer a,
.footer_widgets_wrapper a {
	color: #FFFFFF;
}
#footer_top {
	padding: 0 !important;
}
#footer_top .footer_widgets_wrapper {
	padding: 56px 0 32px;
}
#footer_top .widget {
	color: #C9D4E5;
	font-size: 15px;
	line-height: 1.6;
}
#footer_top .widget_title {
	margin-bottom: 16px;
	border: 0;
}
#footer_top .widget_title h3 {
	color: #FFFFFF !important;
	font-size: 15px;
	font-weight: 700;
	text-transform: none;
	letter-spacing: 0;
	margin: 0;
}
#footer_top .cesgen-footer-brand img {
	display: block;
	width: 200px;
	max-width: 100%;
	height: auto;
	margin-bottom: 4px;
}
#footer_top .cesgen-footer-links,
#footer_top .cesgen-footer-legal {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
}
#footer_top .cesgen-footer-links li {
	margin: 0 0 8px;
	padding: 0;
	font-size: 15px;
	line-height: 1.5;
}
#footer_top .cesgen-footer-links li::before,
#footer_top .cesgen-footer-legal li::before {
	display: none;
}
#footer_top .cesgen-footer-links a {
	color: #FFFFFF;
	font-size: 15px;
	text-decoration: none;
}
#footer_top .cesgen-footer-links a:hover {
	color: #9CC9EC;
	text-decoration: underline;
}
#footer_top .cesgen-footer-company {
	font-size: 13px;
	line-height: 1.55;
	color: #AEBBD1;
	margin-bottom: 12px;
}
#footer_top .cesgen-footer-legal {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 14px;
}
#footer_top .cesgen-footer-legal li {
	font-size: 13px;
	line-height: 1.5;
	padding: 0;
	margin: 0;
}
#footer_top .cesgen-footer-legal a {
	color: #AEBBD1;
	font-size: 13px;
}
#footer_top .cesgen-footer-legal a:hover {
	color: #FFFFFF;
}
#footer_copyright {
	background-color: var(--cesgen-ink) !important;
	border-color: var(--cesgen-ink) !important;
}
#footer_copyright .copyright_text {
	color: #AEBBD1;
	font-size: 13px;
	margin-left: 0;
}
@media (max-width: 767px) {
	#footer_top .footer_widgets_wrapper {
		padding: 40px 0 16px;
	}
	#footer_top .widget {
		margin-bottom: 24px;
	}
}

/* Mobile menu button in CESGEN navy. */
#header .navbar-toggle .icon-bar {
	background-color: var(--cesgen-navy);
}

/* Focus visibility for keyboard users. */
a:focus-visible,
button:focus-visible,
.btn:focus-visible {
	outline: 2px solid var(--cesgen-sky);
	outline-offset: 2px;
}

/* Elementor full-width pages (home and landing pages): no gap between the last section and the footer.
   On narrow screens the parent theme adds 40px with a more specific rule, hence !important. */
body.page-template-elementor_header_footer #main {
	padding-bottom: 0 !important;
}

/* MasterStudy course page: buy button text readable and in sentence case; wishlist not used on this site. */
.masterstudy-buy-button__title {
	color: #FFFFFF !important;
	font-family: var(--cesgen-font-body) !important;
	font-weight: 600;
	text-transform: none;
	letter-spacing: 0;
}
.masterstudy-single-course-wishlist {
	display: none !important;
}

/* MasterStudy "modern" course page: CESGEN navy band instead of the default dark blue; buy button in sentence case. */
.masterstudy-single-course-modern__topbar::before {
	background: var(--cesgen-navy) !important;
}
body .masterstudy-buy-button__title {
	text-transform: none !important;
}

/* Courses catalogue: the page title band already says "Cursos", so hide MasterStudy's own heading.
   courses_filters.css loads after this file with the same specificity, hence the wrapper and !important. */
.stm_lms_courses_wrapper .courses_filters__title {
	display: none !important;
}

/* Audience badge on course cards (mu-plugin CESGEN Audience): outlined for everyone, tinted for researchers, filled for professionals. Brand navy only.
   The badge goes on its own line with the category under it, so every card has the same structure and the titles line up
   (badge and category side by side do not fit in a four-column grid and wrapped on some cards only). */
.stm_lms_courses__single--terms {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	margin-bottom: 10px;
}
.stm_lms_courses__single--terms .stm_lms_courses__single--term {
	margin: 0;
	font-size: 13px;
	line-height: 1.4;
	color: var(--cesgen-text);
}
.cesgen-audience {
	display: inline-block;
	padding: 4px 10px;
	border: 1px solid var(--cesgen-navy);
	border-radius: 999px;
	font-family: var(--cesgen-font-body);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: none;
	white-space: nowrap;
}
.cesgen-audience--para-todos {
	background: transparent;
	color: var(--cesgen-navy);
}
.cesgen-audience--para-profesionales {
	background: var(--cesgen-navy);
	color: #FFFFFF;
}
.cesgen-audience--para-investigadores {
	background: #E6EAF2;
	border-color: #E6EAF2;
	color: var(--cesgen-navy);
}

/* Course page and catalogue (mu-plugin CESGEN Course Page, F3-04): "VAT included" under the buy button, prices note in the catalogue and the educational disclaimer in the course details. */
.cesgen-price-note {
	margin: 8px 0 0;
	font-size: 13px;
	line-height: 1.4;
	color: var(--cesgen-text);
	text-align: center;
}
.cesgen-course-disclaimer {
	margin: 14px 0 0;
	font-size: 13px;
	line-height: 1.55;
	color: var(--cesgen-text);
}
.cesgen-catalogue-note {
	margin: 12px 0 16px;
	font-size: 13px;
	line-height: 1.4;
	color: var(--cesgen-text);
}

/* Fine-tuning (F3-05). */

/* Sentence case: MasterStudy capitalises every word ("Mis Cursos", "5 Lecciones", "Iniciar El Cuestionario");
   in Spanish only the first letter goes in capitals. Its component styles load later, hence !important. */
body .masterstudy-button .masterstudy-button__title,
body .masterstudy-single-course-tabs__item,
body .masterstudy-single-course-current-students__title span,
body .masterstudy-account-menu__list-item-label,
body .masterstudy-tabs__item,
body .masterstudy-course-card__status span,
body .masterstudy-course-card__meta-block span,
body .masterstudy-purchase-button__title,
body .masterstudy-membership-plan__button-title {
	text-transform: none !important;
}

/* The wishlist is not used on this site (see the course page above): also hide it in the account's mobile bar,
   where its label did not fit, and in the course card pop-up. */
.masterstudy-account-mobile-menu__link[data-id="wishlist"],
.stm_lms_courses__single .stm-lms-wishlist {
	display: none !important;
}

/* Courses catalogue bar: CESGEN colours and radius for the search box, its button and the sort box
   (the box keeps its "Sort by" label inside, as plain text, and is wide enough for the longest option). */
.stm_lms_courses_wrapper #lms-search-input {
	border: 1px solid var(--cesgen-border) !important;
	border-right: 0 !important;
	border-radius: var(--cesgen-radius) 0 0 var(--cesgen-radius) !important;
	color: var(--cesgen-ink);
}
.stm_lms_courses_wrapper .lms-search-btn {
	background-color: var(--cesgen-blue) !important;
	border: 1px solid var(--cesgen-blue) !important;
	border-radius: 0 var(--cesgen-radius) var(--cesgen-radius) 0 !important;
	color: #FFFFFF !important;
}
.stm_lms_courses_wrapper .lms-search-btn:hover,
.stm_lms_courses_wrapper .lms-search-btn:focus {
	background-color: var(--cesgen-blue-dark) !important;
	border-color: var(--cesgen-blue-dark) !important;
}
.stm_lms_courses_wrapper .lms-search-btn i {
	color: #FFFFFF !important;
}
.stm_lms_courses_wrapper .stm_lms_courses_grid__sort {
	border: 1px solid var(--cesgen-border) !important;
	border-radius: var(--cesgen-radius);
	overflow: hidden;
}
.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .sort_label {
	background: transparent !important;
	color: var(--cesgen-text) !important;
	font-family: var(--cesgen-font-body) !important;
	font-size: 14px;
	font-weight: 400;
	padding: 0 4px 0 14px !important;
	white-space: nowrap;
}
.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-container {
	width: 420px !important;
	max-width: 100% !important;
}
.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-selection {
	border: 0 !important;
	border-radius: 0 !important;
}
.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-selection__rendered {
	color: var(--cesgen-ink) !important;
	font-family: var(--cesgen-font-body) !important;
	font-size: 14px !important;
	font-weight: 500 !important;
}

/* Catalogue on narrow screens: the sort box takes the whole row instead of running off the screen, with slightly
   smaller type so the longest option fits at 390px, and the grid/list switch is hidden (one column either way). */
@media (max-width: 767px) {
	.stm_lms_courses_wrapper .lms_courses.sort,
	.stm_lms_courses_wrapper .stm_lms_courses_grid__sort {
		min-width: 0;
		max-width: 100%;
	}
	.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-container {
		width: 100% !important;
	}
	.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-selection__rendered {
		font-size: 13px !important;
		padding-left: 14px !important;
		padding-right: 28px !important;
	}
	.stm_lms_courses_wrapper .stm_lms_courses_grid__sort .select2-selection__arrow {
		right: 6px !important;
	}
	.stm_lms_courses_wrapper .courses_filters__switcher {
		display: none !important;
	}
}

/* Forms (mu-plugin CESGEN Forms): the theme turns the course list into a Select2 box;
   same border, radius, height and type as the other fields. */
.cesgen-form .select2-container .select2-selection--single {
	height: 45px !important;
	border: 1px solid var(--cesgen-border) !important;
	border-radius: var(--cesgen-radius) !important;
	background: #FFFFFF !important;
}
.cesgen-form .select2-container .select2-selection--single .select2-selection__rendered {
	padding: 0 40px 0 14px !important;
	line-height: 43px !important;
	font-family: var(--cesgen-font-body) !important;
	font-size: 16px !important;
	font-weight: 400 !important;
	color: var(--cesgen-ink) !important;
}
.cesgen-form .select2-container .select2-selection--single .select2-selection__arrow {
	height: 43px !important;
	top: 0 !important;
	right: 8px !important;
}
.cesgen-form .select2-container .select2-selection--single .select2-selection__arrow b {
	border-top-color: var(--cesgen-text) !important;
}
.cesgen-form .select2-container--focus .select2-selection--single,
.cesgen-form .select2-container--open .select2-selection--single {
	border-color: var(--cesgen-sky) !important;
	outline: 2px solid var(--cesgen-sky);
	outline-offset: 1px;
}

/* ==========================================================================
   F4-04 · Classic cart and checkout (10/10/2026)
   ========================================================================== */

/* R12: the "includes … VAT" note goes on its own line under the total. */
.woocommerce-cart tr.order-total th,
.woocommerce-cart tr.order-total td,
.woocommerce-checkout tr.order-total th,
.woocommerce-checkout tr.order-total td {
	vertical-align: top;
}
.woocommerce-cart tr.order-total td,
.woocommerce-checkout tr.order-total td {
	text-align: right;
}
tr.order-total td small.includes_tax,
tr.order-total td .includes_tax {
	display: block;
	margin-top: 2px;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.3;
	color: var(--cesgen-text, #33415C);
}

/* Tax decision shown above the total (cesgen-checkout-tax.php). */
.woocommerce-checkout-review-order-table tr.cesgen-tax-note td {
	padding-top: 6px;
	padding-bottom: 6px;
	font-size: 13px;
	line-height: 1.4;
	font-weight: 400;
	text-align: left;
	color: var(--cesgen-text, #33415C);
}

/* R7: checkout labels and notices in sentence case, not capitals. */
.woocommerce-checkout form .form-row label,
.woocommerce-checkout .woocommerce-terms-and-conditions-checkbox-text,
.woocommerce-checkout .woocommerce-privacy-policy-text,
.woocommerce-checkout #payment label,
.woocommerce-cart .woocommerce-message,
.woocommerce-checkout .woocommerce-message,
.woocommerce-cart .woocommerce-info,
.woocommerce-checkout .woocommerce-info,
.woocommerce-cart .woocommerce-error,
.woocommerce-checkout .woocommerce-error,
.woocommerce-checkout #payment .woocommerce-notice,
.woocommerce-checkout #payment li.woocommerce-notice {
	text-transform: none !important;
	letter-spacing: normal;
}
.woocommerce-checkout #payment .woocommerce-notice,
.woocommerce-checkout #payment li.woocommerce-notice,
.woocommerce-cart .woocommerce-message,
.woocommerce-checkout .woocommerce-error li {
	font-family: 'Inter', sans-serif;
	font-size: 15px;
	font-weight: 500;
	line-height: 1.5;
}

/* Mobile: the review table has a third column in the product rows; let the totals use the full width. */
@media (max-width: 767px) {
	.woocommerce-checkout-review-order-table tfoot th {
		white-space: nowrap;
	}
	.woocommerce-checkout-review-order-table tfoot td {
		width: 100%;
	}
}

/* Country and province selects look like the text inputs (as in the CESGEN forms, F3-05). */
.woocommerce-checkout .select2-container .select2-selection--single {
	height: 45px;
	border-radius: 8px;
}
.woocommerce-checkout .select2-container .select2-selection--single .select2-selection__rendered {
	line-height: 45px;
	font-family: 'Inter', sans-serif;
	font-size: 16px;
	font-weight: 400;
}
.woocommerce-checkout .select2-container .select2-selection--single .select2-selection__arrow {
	height: 43px;
}

/* Course catalogue while no course is published (cesgen-courses-empty.php, 11/10/2026, F3-08):
   hide the search, sorting and VAT note, and centre the "We are preparing the courses" message. */
body.cesgen-no-courses .courses_filters,
body.cesgen-no-courses .cesgen-catalogue-note {
	display: none;
}
.cesgen-courses-soon {
	max-width: 640px;
	margin: 0 auto;
	padding: 16px 0 8px;
}
.cesgen-courses-soon h2 {
	text-align: center;
	margin-bottom: 12px;
}
.cesgen-courses-soon .cesgen-courses-soon__lead {
	text-align: center;
	margin-bottom: 28px;
}

/* Consent checkbox of art. 103.m at checkout (cesgen-withdrawal.php; 11/10/2026, F5-07). The parent theme's
   Bootstrap rule (.checkbox input: position absolute, margin-left -20px) and .form-row input (width 100%)
   pulled the box out of place, and the theme greyed the label. */
.woocommerce-checkout .cesgen-consent-103m label.checkbox {
	display: block;
	position: relative;
	padding-left: 28px;
	margin: 0;
	color: var(--cesgen-text);
	font-size: 15px;
	line-height: 1.5;
}
.woocommerce-checkout .cesgen-consent-103m input.input-checkbox {
	position: absolute;
	left: 0;
	top: 3px;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--cesgen-blue);
}
.woocommerce-checkout .cesgen-consent-103m abbr.required {
	text-decoration: none;
	border: 0;
	color: #c0392b;
}

/* Language box on the account settings page (cesgen-lang 0.5.0): same spacing and field style as the
   other sections of the page (MasterStudy styles inputs but not this select). */
.cesgen-lang-account {
	margin-top: 40px;
}
.cesgen-lang-account select.masterstudy-account-settings__input {
	width: 100%;
	height: 40px;
	padding: 0 12px;
	border: 1px solid #DBE0E9;
	border-radius: 4px;
	background-color: #fff;
	color: #4D5E6F;
	font-family: var(--cesgen-font-body);
	font-size: 14px;
}
.cesgen-lang-account__saved {
	margin-top: 10px;
}

/* Certificates (mu-plugin cesgen-certificate, F5-05, 12/10/2026): verification page ([cesgen_verify]),
   the notice shown when a certificate is not available yet (download button and certificate page). */
.cesgen-verify {
	max-width: 640px;
	margin: 0 auto 48px;
}
.cesgen-verify__label {
	display: block;
	margin-bottom: 8px;
	color: var(--cesgen-ink);
	font-weight: 600;
}
.cesgen-verify__row {
	display: flex;
	gap: 8px;
}
.cesgen-verify input.cesgen-verify__input {
	flex: 1 1 auto;
	min-width: 0;
	height: 46px;
	padding: 0 14px;
	border: 1px solid var(--cesgen-border);
	border-radius: var(--cesgen-radius);
	background: #fff;
	box-shadow: none;
	color: var(--cesgen-ink);
	font-size: 17px;
	line-height: 46px;
	letter-spacing: 0.04em;
	font-variant-numeric: tabular-nums;
}
.cesgen-verify input.cesgen-verify__input:focus {
	border-color: var(--cesgen-blue);
	outline: 2px solid rgba(30, 99, 176, 0.25);
	outline-offset: 0;
}
.cesgen-verify__button {
	flex: 0 0 auto;
	height: 46px;
	padding: 0 22px;
	border: 0;
	border-radius: var(--cesgen-radius);
	background: var(--cesgen-blue);
	color: #fff;
	font-weight: 600;
	font-size: 16px;
	cursor: pointer;
}
.cesgen-verify__button:hover,
.cesgen-verify__button:focus {
	background: var(--cesgen-blue-dark);
}
.cesgen-verify__help {
	margin: 8px 0 0;
	color: #5B6B84;
	font-size: 14px;
}
.cesgen-verify__result {
	margin-top: 28px;
	padding: 20px 24px;
	border-radius: var(--cesgen-radius);
	border-left: 4px solid;
}
.cesgen-verify__result--ok {
	background: #EEF7F1;
	border-left-color: #2E7D4F;
}
.cesgen-verify__result--error {
	background: #FDF1F0;
	border-left-color: #C0392B;
	color: #7D2A20;
}
p.cesgen-verify__result {
	margin-bottom: 0;
}
.cesgen-verify__status {
	margin: 0 0 14px;
	color: #2E7D4F;
	font-family: var(--cesgen-font-heading);
	font-size: 19px;
	font-weight: 700;
}
.cesgen-verify__data {
	display: grid;
	grid-template-columns: max-content 1fr;
	gap: 6px 18px;
	margin: 0;
}
.cesgen-verify__data dt {
	color: var(--cesgen-ink);
	font-weight: 600;
}
.cesgen-verify__data dd {
	margin: 0;
}
.cesgen-verify__issuer {
	margin: 16px 0 0;
	color: #5B6B84;
	font-size: 14px;
}
.cesgen-verify__cta {
	margin: 12px 0 0;
	font-weight: 600;
}
@media (max-width: 560px) {
	.cesgen-verify__row {
		flex-direction: column;
	}
	.cesgen-verify__button {
		width: 100%;
	}
	.cesgen-verify__result {
		padding: 16px 18px;
	}
	.cesgen-verify__data {
		grid-template-columns: 1fr;
		gap: 2px;
	}
	.cesgen-verify__data dd {
		margin-bottom: 10px;
	}
}

/* Certificate not available yet: message on the certificate page and notice after the download button. */
.cesgen-cert-not-ready {
	max-width: 640px;
	margin: 48px auto;
	padding: 24px 28px;
	border: 1px solid var(--cesgen-border);
	border-radius: var(--cesgen-radius);
	background: var(--cesgen-soft);
	text-align: center;
}
.cesgen-cert-not-ready__text {
	margin: 0;
	color: var(--cesgen-ink);
	font-size: 17px;
}
.cesgen-toast {
	position: fixed;
	left: 50%;
	bottom: 24px;
	z-index: 100000;
	width: max-content;
	max-width: min(560px, calc(100% - 32px));
	padding: 14px 20px;
	border-radius: var(--cesgen-radius);
	border: 1px solid rgba(255, 255, 255, 0.2);
	background: var(--cesgen-navy);
	color: #fff;
	font-size: 15px;
	line-height: 1.5;
	box-shadow: 0 8px 24px rgba(20, 33, 61, 0.25);
	transform: translateX(-50%);
	animation: cesgen-toast-in 0.25s ease-out;
	transition: opacity 0.5s ease, transform 0.5s ease;
}
.cesgen-toast--out {
	opacity: 0;
	transform: translate(-50%, 8px);
}
@keyframes cesgen-toast-in {
	from {
		opacity: 0;
		transform: translate(-50%, 8px);
	}
}
@media (prefers-reduced-motion: reduce) {
	.cesgen-toast {
		animation: none;
		transition: none;
	}
}


/* Course cards (catalogue and course lists, 12/10/2026): show the whole 16:9 cover. MasterStudy cropped it to
   480 x 380 inside a 160 px high box; the image size now comes from MasterStudy's setting courses_image_size =
   768x432 (the covers' own size class), and the box keeps the cover's proportions. */
body .stm_lms_courses__single--image .stm_lms_courses__single--image__container {
	height: auto;
	aspect-ratio: 16 / 9;
}

body .stm_lms_courses__single--image .stm_lms_courses__single--image__container img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Text lessons: long lines of code wrap instead of running off the screen on phones. */
.masterstudy-course-player-lesson pre {
	white-space: pre-wrap;
	overflow-wrap: anywhere;
}

@media (max-width: 767px) {
	.masterstudy-course-player-lesson pre {
		font-size: 14px;
		line-height: 1.5;
	}
}

/* ==========================================================================
   F5-06 · Basket on narrow screens and empty basket (12/10/2026)
   ========================================================================== */

/* Basket totals: labels on the left and amounts on the right at every width. */
.cart_totals .cart-totals_wrap table th {
	text-align: left;
}
.cart_totals .cart-totals_wrap table td {
	text-align: right;
}

/* With prices shown without VAT in the basket, the itemised VAT row ("IVA" / "VAT") gets the same colon as
   the theme's "Subtotal:" and "Total:". */
.cart_totals tr.tax-rate th::after,
.cart_totals tr.tax-total th::after {
	content: ":";
}

/* Under 576 px the theme turns the totals cells into flex rows that spread their contents apart; the total and
   its "(con IVA)" / "(incl. VAT)" label stay together on the right. */
@media (max-width: 575.98px) {
	.cart_totals .cart-totals_wrap table tbody tr.order-total td {
		justify-content: flex-end;
		align-items: baseline;
		gap: 6px;
	}
}

/* "… has been added to your basket": under 656 px the theme drops the button below the text but keeps
   its translateY(-50%), so the button covered the end of the sentence. */
@media (max-width: 655px) {
	.woocommerce-message .button {
		transform: none;
		margin-top: 14px;
	}
}

/* "(ex. VAT)" / "(sin IVA)" after the amounts without VAT: small, normal weight and beside the amount, also in
   the mobile rows where the theme spreads the cell's contents apart. */
small.tax_label {
	display: inline;
	font-size: 13px;
	font-weight: 400;
	white-space: nowrap;
}
.woocommerce-checkout-review-order-table td.product-total {
	justify-content: flex-start;
	align-items: baseline;
	gap: 6px;
}
@media (max-width: 575.98px) {
	.woocommerce-cart-form td.product-subtotal,
	.cart_totals .cart-totals_wrap table tbody tr.cart-subtotal td {
		justify-content: flex-end;
		align-items: baseline;
		gap: 6px;
	}
	.woocommerce-cart-form td.product-subtotal .mobile-title {
		margin-right: auto;
	}
}

/* Empty basket: MasterStudy's "View all courses" already goes to the catalogue in the visit's language,
   so WooCommerce's "Return to shop" (same destination) is hidden. */
.woocommerce-cart p.return-to-shop {
	display: none;
}

/* Reviews tab of a course without reviews (cesgen-course-reviews.php 0.1.1). */
.masterstudy-single-course-reviews .cesgen-reviews-empty {
	margin: 0 0 16px;
	font-size: 15px;
	line-height: 1.5;
	color: var(--cesgen-text, #33415C);
}

/* ==========================================================================
   F5-02 · Legal pages (13/10/2026)
   ========================================================================== */

/* Links inside block lists: the parent theme's "ol li a, ul li a" (12 px, grey) is meant for widget menus and made
   links in page lists smaller than the text around them (cookie policy, legal pages). */
.wp-block-list li a {
	font-size: inherit;
	color: var(--cesgen-blue);
}

/* Tables with three columns on phones: a long word widened the table and cut off the last column; words are now
   hyphenated in the cells. */
@media (max-width: 575.98px) {
	.wp-block-table td,
	.wp-block-table th {
		-webkit-hyphens: auto;
		hyphens: auto;
	}
}

/* Terms of sale checkbox at checkout (F5-02, 13/10/2026): same layout as the art. 103.m box above (the parent theme's
   Bootstrap rule pulled the box into the middle of the text and greyed it), and "(obligatorio)" / "(required)" in the
   text instead of WooCommerce's asterisk, as in the other box. */
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper .validate-required label.checkbox {
	display: block;
	position: relative;
	padding-left: 28px;
	margin: 0 0 4px;
	color: var(--cesgen-text);
	font-size: 15px;
	line-height: 1.5;
}
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper .validate-required input#terms {
	position: absolute;
	left: 0;
	top: 3px;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--cesgen-blue);
}
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper .validate-required abbr.required {
	display: none;
}

/* Checkout and basket notices (F5-09, 13/10/2026): the parent theme writes ".woocommerce-error li" and the info and
   success notices in capitals and at weight 900, and its "ul li a" rule made the link in a notice (for example
   "escríbenos" in the blocking messages) smaller and grey. */
.woocommerce-error li,
.woocommerce-info,
.woocommerce-message {
	text-transform: none !important;
	letter-spacing: normal;
	font-weight: 500;
}
.woocommerce-error li a,
.woocommerce-info a:not(.button),
.woocommerce-message a:not(.button) {
	font-size: inherit;
	color: var(--cesgen-blue);
	text-decoration: underline;
}

/* Header search hidden for now (15/10/2026): with only courses and no blog it adds little.
   Hidden, not removed: delete these two rules to bring back the magnifier (desktop) and
   the search box in the mobile menu. */
.right_buttons .search-toggler-unit,
.header-menu-mobile .header-menu > li:has(> #searchform-mobile) {
	display: none !important;
}
