/*
Theme Name: Edumall Child
Theme URI: https://edumall.thememove.com/
Author: ThemeMove
Author URI: https://thememove.com/
Version: 1.0.0
Template: edumall
Text Domain:  edumall-child
Tags: editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
*/
/*.tutor-single-course-lead-meta {display: none!important;}*/
.bvi-svg-eye {font-size: 1.5em!important; vertical-align: initial!important;}
.geo-top-bar{display: flex;	align-items: center;}
.geo-top-city {align-items: center;	display: flex; margin: 0 50px;}
.geo-top-city span {margin-right: 10px;}
.continue-without-geo {color: initial!important;}
#popup-window-overlay-cityConfirm {background-color: #03030373!important;}
.pop-up.city-confirm {background: #fff; min-width: 300px;}
.your-city{max-width:inherit!important;}
.your-city__label {font-family: 'Gordita';font-size: initial}
.city-confirm .your-city__val {font-family: 'Gordita';font-size: initial}
.pop-up .popup-window-content { background: #2196f3; min-height: 50px;}
.popup-window-titlebar{background:transparent!important;display: none;}
.city-confirm button { height: initial;}
.city-change {width: 40vw; background-color: #fff !important; font-family: 'Gordita' !important; border-radius: 20px; height: auto; padding: 2% 0 1% 0 !important; top: 15% !important; margin-top:0!important;}
.bx-ui-sls-quick-locations {overflow:hidden!important; height: auto !important;}
.quick-locations__values {display:block!important; column-count: 4; }
.quick-locations__val {width: 25%!important;}
.quick-locations__title{font-size: 22px!important;font-weight: 500!important;color: #252525!important;}
.city-change .block-info{padding: 0 20px 15px !important;}
.city-change .quick-locations__val:hover{background:transparent!important;color: #0c5adb!important; font-weight:500;}
.collapse {visibility: initial!important;}
.edumall-widget-course-search-form.style-01 .search-submit {background: #ffc221; border-radius: 20px!important; color: #000; width: 20%; font-weight: 500; border: 5px #fff solid;}
.edumall-widget-course-search-form.style-01 .search-submit:hover {background: #0071dc; color: #fff;}
.edumall-widget-course-search-form.style-01 .search-btn-icon {display:none;}
.edumall-widget-course-search-form.style-01 .search-btn-text {display: block;}
.grecaptcha-badge {visibility: hidden;}
.single-courses.single-course-02 .tutor-course-top-info {padding: 74px 0 72px 0; margin-top: -74px; background: #031f42;}
.tutor-course-review-form-wrap {display: none;}
.package-name {display: none;}
.shipping-heading {display: none;}
.woocommerce-shipping-not_enabled-on-cart-html{display: none;}
.cart-shipping {display: none;}
.tutor-attachments-wrap {display: none;}
.edumall-course-wishlist-btn {display: none;}
.course-loop-meta-lesson {display: none !important;}
.topics-total-lessons {display: none !important;}
.archive-sidebar-filter {display:none;}
.course-loop-meta-level {display: none!important;}/*Уровень сложности в категории*/
.tutor-course-level {display: none!important;}/*Уровень сложности в курсе*/
.tutor-course-header-h1 {font-weight: 500; max-width: 650px; color:#fff;}
.tutor-course-lesson-count {display: none!important;}
.single-course-nav.style-01 {padding: 20px 0 0 0; background: #fff;}
.single-course-nav li a {font-size: 1.1rem; padding: 12px 18px; text-transform: uppercase; }
.single-course-nav.style-01 li a {color:rgb(8, 8, 8)}
.single-course-nav.style-01 li.active a {font-weight: 500;}
.tutor-course-badge.onsale {background: #d31819;}
.meta-label {color:#fff;}
.tutor-single-course-lead-info {padding-bottom: 30px;}
.schedule-container{position: relative; display: flex; justify-content: inherit; align-content: inherit; align-items: stretch; flex-direction: column; padding: 0 20px 10px 20px;}
.schedule-filter-row{position: relative; display: flex; padding: 10px; height: 50%; justify-content: flex-start;}
.CourseSchedule {width: 100%;border: none; margin-bottom: 20px;}
.CourseSchedule thead th {font-weight: 500!important;text-align: left;border: none;padding: 10px 15px!important;background: #ffc221!important;font-size: 14px!important; color: #000 !important;;}
.CourseSchedule thead tr th:first-child {border-radius: 4px 0 0 4px;}
.CourseSchedule thead tr th:last-child {border-radius: 0 4px 4px 0;}
.CourseSchedule tbody td {text-align: left;	border: none;padding: 10px 15px!important;font-size: 14px;vertical-align: top;}
.CourseSchedule tbody a {font-weight:500;}
.CourseSchedule tbody tr:nth-child(even){background: #f3f3f3;}
.CourseSchedule tbody tr td:first-child {border-radius: 4px 0 0 4px;}
.CourseSchedule tbody tr td:last-child {border-radius: 0 4px 4px 0;}
.page-scroll-up.show {bottom: 25%;}
.tutor-sidebar-tabs-content{height: auto!important;}
.b24-form-sign{display: none!important;}
.instructor-name{display: none!important;}
.wpcf7-form{border: none!important;}
.lead-meta-item{padding: 0 8px 0 10px!important; font-size: 13px;}
.lead-meta-item::before{background: #535558!important;}
.tooltip_format {
	position: static;
	display: block;
	border-bottom: 1px dotted black;
}

.tooltip_format .tooltiptext_format {
	visibility: hidden;
	width: 350px;
	background-color: #646464;
	color: #fff;
	text-align: left;
	border-radius: 6px;
	padding: 10px;
	position: absolute;
	z-index: 1;
	font-size: 11px;
}

.tooltip_format:hover .tooltiptext_format {
	visibility: visible;
}
.edumall-courses.style-list .course-loop-info {padding: 0 200px 0 0;}

.edumall-courses.style-list .tutor-course-header {max-width:20%;}
/********/
.dt-sc-course-searchform-container { float:left; width:100%; clear:both; margin:0px; padding:0 0 50px 0; position:relative; }
.dt-sc-course-searchform { float:left; margin:0px; padding:0px; width:100%; background:#f0f0f0; clear:both; border-radius:3px; }
.dt-sc-course-searchform header { background:#ffc221; padding:0px; float:left; width:100%; border-radius:3px 3px 0px 0px; }
.dt-sc-course-searchform header h2 { padding:0px; margin-bottom:0px; font-size:16px; line-height:45px; font-weight:600; border-radius:3px 3px 0px 0px; }

.dt-sc-course-searchform header h2 span { float:left; color:#ffffff; height:45px; width:50px; padding:0px; font-size:16px; line-height:45px; text-align:center; margin-right:15px; border-radius:3px 0px 0px 0px; position:relative; }

.dt-sc-searchbox-container { float:left; clear:both; margin:0px; padding:0px; width:100%; }
.dt-sc-searchbox-container form { padding:15px 20px 15px; }
.dt-sc-searchbox-container form .course-type-module, .dt-sc-searchbox-container form .sub-course-type-module, .dt-sc-searchbox-container form  .search-text-module, .dt-sc-searchbox-container form .course-price-module { float:left; margin-right:2%; width:49%; margin-bottom:15px; }
.dt-sc-searchbox-container form .sub-course-type-module { margin-right:0px; }
.dt-sc-searchbox-container form label { color:#303030; margin-bottom:10px; display:inline-block; }
.dt-sc-searchbox-container form .search-text-module { margin-right:0px; margin-bottom:11px; }
.dt-sc-searchbox-container form .webinar-module { clear:both; float:left; margin:5px 0px 0px; padding:0px 0px 35px; }
.dt-sc-searchbox-container form .webinar-module input[type="checkbox"] { margin-right:8px; margin-top:-4px; }
.dt-sc-searchbox-container form input[type="submit"] { margin-top:-10px; padding:11px 15px 10px; font-size:13px; }

#dt-sc-ajax-load-image.search-ajax-load { position:absolute; bottom:-50px; top:auto; }
.dt-sc-course-searchform-container #dt-sc-ajax-load-image.search-ajax-load { bottom:-62px; z-index: 9999; }

.courses-table-list th, .courses-table-list td { text-align:left; }

.courses-table-title a, .courses-table-lessons { color:#303030;    font-weight: 600; }

.courses-table-list th { position:relative; cursor:pointer; }
.courses-table-list th:before { font-family:FontAwesome; font-style:normal; font-weight:normal; text-decoration:inherit; font-size:12px; position:absolute; top:18px; right:15px; display:none; }
.courses-table-title-header:before, .courses-table-type-header:before, .lessons-table-title-header:before, .lessons-table-type-header:before { content:"\f15d"; }
.courses-table-title-header.headerSortDown:before, .courses-table-type-header.headerSortDown:before, .lessons-table-title-header.headerSortDown:before, .lessons-table-type-header.headerSortDown:before { content:"\f15e"; }

.courses-table-lessons-header:before, .courses-table-length-header:before, .lessons-table-length-header:before { content:"\f162"; }
.courses-table-lessons-header.headerSortDown:before, .courses-table-length-header.headerSortDown:before, .lessons-table-length-header.headerSortDown:before { content:"\f163"; }
.courses-table-type a{color: #303030;}
#dt-sc-ajax-load-image { position:absolute; text-align:center; top:210px; width:100%; }
.dt-sc-ajax-loader { opacity: 0.2; }
#dt-sc-ajax-load-image.type2 { top:0; }
.page-template-tpl-classes #dt-sc-ajax-load-image { top:100px; }
.fa-regular {font-family: 'FontAwesome'!important;}

.dt-sc-hr-invisible {margin: 20px 0px!important;}
/* Course Schedule */
.load-more__btn {
	background-color: #fec63e; /* сервый фон */
	color: #fff;

	border-radius: 2px; /* закругление углов */
	display: block; /* блочный элемент, на случай, если захотите использовать <a> */
	text-align: center; /* выравнивание текста по центру */
	font-size: 14px; font-size: 0.875rem; /* размер шрифта */
	font-weight: 600; /* начертание */
	letter-spacing: 1px; /* межбуквенный интервал */
	cursor: pointer; /* курсор мыши при наведении такой же, как при наведении на ссылку */
	text-transform: uppercase;
	padding: 10px 0; /* внутренние отступы сверху и снизу у кнопки */
	transition: background-color 0.4s ease-in-out, border-color 0.2s ease-in-out, color 0.4s ease-in-out; /* CSS-анимация*/
}
.load-more__btn:hover{
	background-color: #0071dc;
	color: #fff;
}
.load-more__td{
	background: none;
	border: none;;
}
.frmcourseschedule{padding: 15px 15px 15px !important;}
.schedule-text-module { width: 30%; margin-bottom:11px; margin-right: 1%; float: left; display: inline-block;}
.schedule_course-type-module{width: 30%; margin-right:3%; margin-bottom:11px; float: left; display: inline-block;}
.schedule_sub-course-type-module{width: 33%; margin-bottom:25px; display: inline-block;}
.dates-module{width: 35%; float: left; display: inline-block; /*margin-bottom: 25px; padding-top: 15px;*/   color: #000;}
.dates-module input {width: 40%; display: inline-block; padding: 14px; margin-right: 10px}
.dates-module span {padding-right: 7px;}
.format-module {width: 30%; margin: 0; padding: 0; float: left;    color: #000;}
.shest {border: none;padding: 20px;}
.shest legend{ margin-left: 2%;}
.shest label{color: #000!important; margin-right: 10px; padding-right: 15px; cursor: pointer;}
.shest input {margin: 0 !important;}
.course_type-module{width: 60%; float: left;    color: #000;}
.discount-module{width: 15%; float: left; padding-top: 35px;}
.approved-course-module{width: 15%; float: left; padding-top: 35px;}
.discount-module label {font-weight: 600;}
.approved-course-module label {font-weight: initial;}
.submit_button_modul{width: 35%; float: left; padding-top: 25px; margin: 0;}
.courses-table-cost {font-weight: 600;}
.chosen-container-single .chosen-single {height: 56px!important;}
.chosen-container-single .chosen-single span {font-size: 16px; color: initial; margin: 15px;}
.hasDatepicker{background: url(images/calendar-icon.png) no-repeat 90% #fff;}
@media(max-width: 700px){
	.schedule-container {display: block;padding: 0;}
	.schedule-filter-row {display: block; position: initial;}
	.schedule-text-module {width: 100%;	float: none;}
	.schedule_course-type-module {width: 100%;display: block;}
	.dates-module {width: 100%; padding: 0;display: flex; justify-content: space-between;}
	.dates-module > input {width: 48%;padding: 14px; margin: 0;}
	.format-module {width: 100%;float: none;}
	.shest {padding: 5px 0 0 5px!important;	display: flex; justify-content: space-between;}
	.shest > legend {padding: 0 0 5px 0;}
	.discount-module {width: 100%;padding: 5px 0 0 5px;display: block;}
	.submit_button_modul {width: 100%; padding: 10px;}
	.submit_button_modul > button {float: none!important;	margin-right: 0!important;}
}
.cf7_block_cover {background: #f4f6fc;padding: 20px 30px;margin: 10px;border-radius: 10px;}
.cf7_block_cover h6 {font-size: initial;font-weight: 500!important;background: #32408b;color:#fff;margin: -30px -30px 0px -30px;padding: 10px 30px;border-radius: 10px 10px 0 0;}
.cf7_block_cover p {font-size: initial;font-weight: 500!important;padding: 10px 0 0 0;margin: 0 0 -20px 0;}
.wpcf7-response-output {display: none;}
.ekit-wid-con .ekit-form form label span {display: inherit!important;}
.ekit-form form input[type="submit"] {width: 100%!important;}
.animate { visibility:visible !important; }
.animate {		-webkit-animation-duration: unset!important;
	-moz-animation-duration: unset!important;
	-o-animation-duration: unset!important;
	animation-duration: unset!important;
	-webkit-animation-fill-mode: unset!important;
	-moz-animation-fill-mode: unset!important;
	-o-animation-fill-mode: unset!important;
	animation-fill-mode: unset!important;
	transform: none!important;
	transition: none!important;

}

.animate.hinge {
	-webkit-animation-duration: unset!important;
	-moz-animation-duration: unset!important;
	-o-animation-duration: unset!important;
	animation-duration: unset!important;
}
/********/
.edumall-wp-widget-course-categories {background: initial!important;border-bottom: 1px solid #000;	border-radius: initial!important; padding: 0 0 30px 0!important;}
.edumall-wp-widget-course-categories a {display: inline-block; padding: initial;}
.edumall-wp-widget-course-categories a:hover {color:#fff; transition:none;}
.edumall-wp-widget-course-categories span:hover {color:#fff; transition:none;}
.edumall-wp-widget-course-categories a .count{color:inherit;}
.edumall-wp-widget-course-categories li {padding: 8px 15px;border-radius: 30px;border: 1px solid #000; display: inline-block;}
.edumall-wp-widget-course-categories li:hover {background: #0071dc; color:#fff;}
@media(max-width: 700px){
	.page-breadcrumb{display: none;}
	.page-title-bar-04 {display:none;}
	.single-courses .page-content .container {padding-top: 20px!important;}
	.edumall-widget-course-search-form.style-01 .search-submit {width: 35%;}
	.geolocation{position: relative;}
	.geo-top-bar {display: block;}
	.geo-top-city {margin: auto;}
	.geo-top-city span {margin-right: 20px;}
	.geo-top-phone{margin-top: 10px;}
	.city-change{width: 95%;}
	.quick-locations__values{column-count: 3;}
	.city-change .quick-locations__val {white-space: initial;}
}
@media (pointer:coarse){
	.page-breadcrumb{display: none;}
	.page-title-bar-04 {display:none;}
	.single-courses .page-content .container {padding-top: 20px !important;}
	.edumall-widget-course-search-form.style-01 .search-submit {width: 35%;}

}
.price {color: #031f42;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;}
.differentPrices {display: flex; flex-direction: row; margin-right: auto; margin-bottom: 1rem;}
.differentPrices fieldset { border: .1rem solid #ffc221; padding: 15px; text-align: center;	margin: 0;	margin-right: -1px; margin-top: -10px;}
.differentPrices legend {padding:0 5px 0 10px; color: #ffc221;; font-weight: 400;}
.differentPrices span {color:#fff; font-size: initial;}
@media(max-width: 700px){
	.differentPrices {flex-wrap:wrap; margin-bottom: 1rem;}
	.differentPrices fieldset {margin-bottom:inherit; text-align: left; width: -webkit-fill-available }
	.fieldset-cf7mls-wrapper {padding:0!important; margin: 0 -5px!important;}
}
@media (max-width: 543px) {
	.edumall-courses.style-list-02 .tutor-course-header, .edumall-courses.style-list .tutor-course-header {
		width: 100%;
		max-width: 100%;
		margin: 0 0 30px !important;
	}
}
/*-----Кнопка генерации PDF--*/
.course-pdf-button {
	background: transparent;
	font-weight: inherit;
	border: 1px solid #c20a0a;
	color: #c20a0a;
}

.course-pdf-button:hover {
	background: #c20a0a;
	color: #fff;
}

.course-pdf-button span {
	font-size: 18px;
	color: #c20a0a;
	margin: 0 5px 0 0;
	border: none;
}

.course-pdf-button:hover span {
	color:#fff;
}

/*-----Дополнения CF7--*/
/* Вертикальное расположение радиокнопок */
.wpcf7-form .wpcf7-radio {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.wpcf7-form .wpcf7-list-item {
	display: block;
	margin: 0;
}

.wpcf7-form .wpcf7-list-item,
.wpcf7-form .wpcf7-list-item * {
	cursor: pointer;
}

/* Класс для двухколоночного отображения с адаптивностью */
.wpcf7-form .wpcf7-radio.two-columns {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 12px;
}

.wpcf7-form .wpcf7-radio.two-columns .wpcf7-list-item {
	display: flex;
	align-items: center;
	margin: 0;
	cursor: pointer;
}

.wpcf7-form .wpcf7-radio.two-columns .wpcf7-list-item input[type="radio"] {
	cursor: pointer;
	margin-right: 8px;
	width: 18px;
	height: 18px;
	flex-shrink: 0;
}

.wpcf7-form .wpcf7-radio.two-columns .wpcf7-list-item-label {
	cursor: pointer;
}

.wpcf7-response-output {color:#fff!important;}

/* Адаптация для мобильных устройств */
@media (max-width: 768px) {
	.wpcf7-form .wpcf7-radio.two-columns {
		grid-template-columns: 1fr; /* На мобильных - 1 столбец */
		gap: 8px;
	}
}

.cf7-form-submit{
	white-space: nowrap;
	background-color: var(--e-global-color-fd3d9) !important;
	font-size: 18px !important;
	font-weight: 500 !important;
	border-radius: 15px!important;
	padding: 0px 0px 0px 0px !important;
	margin: 20px 0px 0px 0px !important;
	width: 100% !important;
	height: 60px !important;
	display: inline-block !important;
	line-height: 50px !important;
	color:#000!important;
	border: 2px solid var(--e-global-color-fd3d9) !important;
}
.cf7-form-submit:hover{
	border: 2px solid #000!important;
}
input.dt-sc-button, input[type="submit"], input[type="button"] {width:100%!important;}

.custom-cf7-input{
	width: 100%;
	border: 1px solid #000!important;
	border-radius: 15px!important;
	min-height: 60px!important;
	background-color: #fff !important;
}
.custom-cf7-input:focus{
	background-color: #fdfdfd !important;
	border-color: var(--e-global-color-fd3d9) !important;
}

/*-----Для шагов формы (желтый круг)--*/
.form-progress-container {
	display: flex;
	align-items: center;
	gap: 15px;
	margin-bottom: 1em;
}

.form-progress-bar-container {
	position: relative;
	width: 44px;
	height: 44px;
}

.form-progress {
	width: 44px;
	height: 44px;
	transform: rotate(-90deg);
}

.form-progress-track {
	fill: none;
	stroke: #f0f0f0;
	stroke-width: 4;
}

.form-progress-bar-half {
	fill: none;
	stroke: #ffce4d; /* Желтый цвет */
	stroke-width: 4;
	stroke-linecap: round;
}
.form-progress-bar-full {
	fill: none;
	stroke: #ffce4d; /* Желтый цвет */
	stroke-width: 4;
	stroke-linecap: round;
	stroke-dashoffset: 0;
}

.form-progress-bar-counter {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	font-size: 12px;
	color: #000; /* Черный цвет цифр */
	text-align: center;
	line-height: 1;
}

.form-progress-bar-counter strong {
	font-weight: bold;
	display: inline-block;
}

.form-progress-bar-title {
	font-size: 16px;
	color: #333;
	font-weight: 500;
}

.cf7mls_next {
	background-color:#ffce4d!important;
	color:#000!important;
	padding: initial !important;
}

.cf7mls_back {
	padding: initial !important;
}
.tutor-course-benefit-item {width:100%!important;}

/* ==========================================================================
   Блок расписания в карточке курса (архив course-category)
   см. tutor/loop/custom/meta-with-icon.php
   ========================================================================== */
.course-loop-schedule-info {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.course-loop-schedule-date {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	line-height: 1.3;
	color: inherit;
}

.course-loop-schedule-date-icon {
	color: #fec63e;
	font-size: 14px;
	flex-shrink: 0;
}

.course-loop-schedule-date-label {
	opacity: 0.75;
}

.course-loop-schedule-date-value {
	font-weight: 600;
}

.course-loop-schedule-date.is-empty {
	opacity: 0.65;
}

.course-loop-schedule-status {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
	padding: 5px 9px;
	border-radius: 30px;
	white-space: nowrap;
}

.course-loop-schedule-status svg {
	flex-shrink: 0;
}

.course-loop-schedule-status.is-confirmed {
	color: #1a7f4e;
	background: rgba(26, 127, 78, 0.1);
}

.course-loop-schedule-status.is-pending {
	color: #a15c00;
	background: rgba(254, 198, 62, 0.18);
}

.course-loop-schedule-other-dates {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-left: auto;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}

.course-loop-schedule-other-dates:hover {
	text-decoration: underline;
}

.course-loop-schedule-other-dates-arrow {
	transition: transform 0.2s ease;
}

.course-loop-schedule-other-dates:hover .course-loop-schedule-other-dates-arrow {
	transform: translateX(3px);
}

@media only screen and (max-width: 480px) {
	.course-loop-schedule-info {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}

	.course-loop-schedule-other-dates {
		margin-left: 0;
	}
}

/* ==========================================================================
   Построчная раскладка карточки курса на архиве course-category
   (по аналогии со строкой общей таблицы расписания)
   см. tutor/loop/custom/content-course-row.php
   ========================================================================== */
.course-loop-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 16px 20px;
	background: #fff;
	border-radius: 12px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
	transition: box-shadow 0.2s ease;
}

.course-loop-row:hover {
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
	background: var(--cs-yellow-pale, #fffbf0);
}

/*
 * Раньше расстояние между строками задавалось только внешним JS-гридом
 * темы (gutter:30, см. tutor/loop/loop-start.php) — многовато для плотной
 * построчной раскладки. :has() уменьшает отступ у обёртки, которую
 * добавляет сама разметка Tutor LMS вокруг каждой карточки (её точный
 * класс не фиксирован в шаблонах темы), не трогая сам JS-грид.
 */
.edumall-courses.style-list :has(> .course-loop-row) {
	margin-bottom: 14px !important;
}

.course-loop-row-col {
	min-width: 0;
}

/* Колонка 1 — миниатюра */
.course-loop-row-thumb {
	flex: 0 0 70px;
	width: 70px;
}

.course-loop-row-thumb-link {
	display: block;
	border-radius: 8px;
	overflow: hidden;
	line-height: 0;
}

.course-loop-row-thumb-link img {
	width: 100px;
	height: 72px;
	object-fit: cover;
	display: block;
}

/* Колонка 2 — название + описание */
.course-loop-row-main {
	flex: 0 0 415px;
	width: 415px;
	min-width: 0;
}

.course-loop-row-category {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 4px;
}

.course-loop-row-vendor {
	display: inline-block;
	font-size: 11.5px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: #0071dc;
}

.course-loop-row-vendor + a::before {
	content: '•';
	margin-right: 6px;
	color: #d1d5db;
	font-weight: 400;
}

.course-loop-row-category a {
	display: inline-block;
	font-size: 11.5px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: #9ca3af;
	text-decoration: none;
}

.course-loop-row-category a:hover {
	color: #6b7280;
	text-decoration: underline;
}

.course-loop-row-code {
	display: inline-block;
	margin-right: 6px;
	font-size: 13px;
	font-weight: 500;
	color: #9ca3af;
}

.course-loop-row-title {
	margin: 0 0 4px;
	font-size: 16px;
	line-height: 1.3;
	font-weight: 600;
	display: -webkit-box;
//-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.course-loop-row-title a {
	color: inherit;
	text-decoration: none;
}

.course-loop-row-title a:hover {
	text-decoration: underline;
}

.course-loop-row-excerpt {
	font-size: 13px;
	line-height: 1.4;
	opacity: 0.7;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.course-loop-row-duration {
	display: flex;
	align-items: center;
	gap: 5px;
	margin-top: 6px;
	font-size: 12px;
	font-weight: 500;
	opacity: 0.65;
}

.course-loop-row-duration svg {
	flex-shrink: 0;
	color: #fec63e;
}

/* Колонка 3 — дата + статус */
.course-loop-row-date {
	flex: 0 0 170px;
}

.course-loop-row-date-label {
	font-size: 10.5px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #9ca3af;
	margin-bottom: 3px;
}

.course-loop-row-date-value {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	font-weight: 600;
	margin-bottom: 6px;
}

.course-loop-row-date-value.is-empty {
	font-weight: 400;
	opacity: 0.6;
}

.course-loop-row-date-icon {
	color: #fec63e;
	flex-shrink: 0;
}

.course-loop-row-status {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
	padding: 5px 9px;
	border-radius: 30px;
	white-space: nowrap;
	margin-top: 6px;
}

.course-loop-row-status svg {
	flex-shrink: 0;
}

.course-loop-row-status.is-confirmed {
	color: #1a7f4e;
	background: rgba(26, 127, 78, 0.1);
}

.course-loop-row-status.is-pending {
	color: #a15c00;
	background: rgba(254, 198, 62, 0.18);
}

.course-loop-row-confirmed-note {
	margin-top: 6px;
	margin-bottom: 4px;
	font-size: 11px;
	line-height: 1.3;
	color: #1a7f4e;
}

.course-loop-row-other-dates {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: 8px;
	font-size: 12px;
	font-weight: 400;
	color: #6b7280;
	text-decoration: none;
}

.course-loop-row-other-dates:hover {
	color: #374151;
	text-decoration: underline;
}

.course-loop-row-other-dates span {
	transition: transform 0.13s ease;
}

.course-loop-row-other-dates:hover span {
	transform: translateX(2px);
}

/* Колонка 4 — место + формат */
.course-loop-row-place {
	flex: 0 0 140px;
}

.course-loop-row-city {
	font-size: 13px;
	font-weight: 600;
	margin-bottom: 6px;
}

.course-loop-row-city.is-empty {
	opacity: 0.5;
	font-weight: 400;
}

.course-loop-row-format {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

/*
 * Плашки формата обучения ("Очный" / "Дистанционный") строит
 * build_format_badge() плагина course-schedule классами .cs-fmt/.cs-fmt.och/
 * .cs-fmt.dis — те же классы, что в общей таблице расписания. Стили для
 * них лежат в includes/css/style.css плагина, но этот файл подключается
 * только на странице расписания и странице курса, не на архиве
 * course-category — поэтому дублируем их здесь 1:1, чтобы вид совпадал.
 */
.course-loop-row-format .cs-fmt {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 3px 9px;
	border-radius: 40px;
	font-size: 0.72rem;
	font-weight: 600;
	white-space: nowrap;
}

.course-loop-row-format .cs-fmt.och {
	background: #eaf3ff;
	color: #004fa3;
}

.course-loop-row-format .cs-fmt.dis {
	background: #f0fdf4;
	color: #15803d;
}

.course-loop-row-format .cs-fmt-tip {
	display: none;
}

/* Колонка 5 — цена + кнопка */
.course-loop-row-price {
	flex: 0 0 130px;
	text-align: right;
}

.course-loop-row-price .course-loop-price {
	font-size: 15px;
	font-weight: 700;
	margin-bottom: 8px;
}

/*
 * .price здесь рендерится не нашим шаблоном (скорее всего WooCommerce/
 * плагин цены) с display:inline-flex — при обычном (строчном)
 * направлении элементы цены (например, старая/новая при скидке)
 * выстраивались в ряд и разъезжались по ширине узкой колонки.
 * Ставим колонку, не трогая .price глобально — только в контексте
 * карточки курса на архиве.
 */
.course-loop-row-price .price {
	flex-direction: column;
}

.course-loop-row-action {
	display: flex;
	justify-content: flex-end;
}

/*
 * .cs-single-sched-enroll — тот же класс, что у кнопки "Записаться" в
 * таблице расписания одного курса (плагин course-schedule). Его стили в
 * includes/css/style.css плагина завязаны на родителя table.cs-single-sched-tbl
 * ("table.cs-single-sched-tbl .cs-single-sched-enroll {...}"), а у нас не
 * таблица — поэтому дублируем то же самое без table-обёртки. Цвета берём
 * из настоящих CSS-переменных плагина (--cs-blue и т.д.) — они доступны,
 * т.к. includes/css/style.css теперь довключается и на архиве курсов,
 * см. tritec_enqueue_schedule_css_on_archive() в functions.php.
 */
.course-loop-row-action .cs-single-sched-enroll {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	padding: 6px 14px;
	border-radius: var(--cs-r6, 6px);
	background: var(--cs-blue, #0071dc);
	color: #fff !important;
	font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
	font-size: .78rem !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	text-decoration: none !important;
	text-shadow: none !important;
	box-shadow: none !important;
	cursor: pointer;
	white-space: nowrap;
	transition: background-color .15s;
}

.course-loop-row-action .cs-single-sched-enroll:hover {
	background: var(--cs-blue-dark, #005bb5);
	color: #fff !important;
}

.course-loop-row-action .course-loop-enrolled-button a,
.course-loop-row-action .course-loop-enrolled-button button {
	white-space: nowrap;
}

@media only screen and (max-width: 991px) {
	.course-loop-row {
		flex-wrap: wrap;
	}

	/* Картинка теперь делит первую строку с названием/описанием, а не
	   стоит отдельным блоком сверху — main больше не растягивается на
	   100% ширины, а просто занимает всё, что осталось рядом с thumb.
	   flex-basis обязательно РЕАЛЬНОЕ значение (не 0) — иначе браузер при
	   расчёте переносов считает "гипотетический" размер main нулевым и
	   решает, что дата/место тоже помещаются на той же первой строке,
	   сжимая заголовок в узкий обрывок текста. */
	.course-loop-row-main {
		flex: 1 1 160px;
		min-width: 0;
		order: 1;
	}

	.course-loop-row-thumb {
		order: 0;
	}

	.course-loop-row-date,
	.course-loop-row-place {
		flex: 1 1 45%;
		order: 2;
	}

	.course-loop-row-price {
		flex: 1 1 100%;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		text-align: left;
		order: 3;
		margin-top: 6px;
	}

	.course-loop-row-price .course-loop-price {
		margin-bottom: 0;
	}

	.course-loop-row-action {
		justify-content: flex-start;
	}
}

@media only screen and (max-width: 600px) {
	.course-loop-row {
		gap: 12px;
		padding: 14px;
	}

	.course-loop-row-thumb {
		flex-basis: 72px;
		width: 72px;
	}

	.course-loop-row-thumb-link img {
		width: 72px;
		height: 54px;
	}
}

/* ==========================================================================
   Виджет фильтра курсов в сайдбаре (дата-пресеты / формат / подрубрики /
   подтверждён) — AJAX, без перезагрузки страницы.
   см. inc/course-filter-widget.php
   ========================================================================== */
.tritec-course-filter-form {
	display: flex;
	flex-direction: column;
	gap: 0;
	background: #fff;
	border-radius: 14px;
	border: 1px solid #eef0f3;
	padding: 4px 18px 18px;
}

.tritec-filter-group {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 16px 0;
	border-bottom: 1px solid #f1f2f4;
}

.tritec-filter-group:last-of-type {
	border-bottom: none;
	padding-bottom: 4px;
}

.tritec-filter-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 12.5px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.02em;
	color: #6b7280;
}

.tritec-filter-icon {
	color: #0071dc;
	flex-shrink: 0;
}

.tritec-filter-checkbox {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13.5px;
	font-weight: 400;
	color: #1f2937;
	cursor: pointer;
	padding: 2px 0;
}

.tritec-filter-checkbox input {
	margin: 0;
	width: 16px;
	height: 16px;
	accent-color: #0071dc;
	cursor: pointer;
}

.tritec-filter-count {
	color: #9ca3af;
	font-size: 12px;
}

.tritec-filter-subcats,
.tritec-filter-cities,
.tritec-filter-vendors {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-left: 1px;
	padding-right: 4px;
	margin-top: 2px;
}

.tritec-filter-cities,
.tritec-filter-vendors {
	max-height: 200px;
	overflow-y: auto;
}

/* Чипы быстрых дат — заполняют календари ниже (setDate), тот же принцип,
   что на общей странице расписания: один активный чип за раз, повторный
   клик снимает выбор. */
.tritec-filter-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-bottom: 8px;
}

.tritec-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	background: #f6f7f9;
	color: #374151;
	border: 1px solid #eef0f3;
	border-radius: 30px;
	padding: 8px 13px;
	font-size: 12px;
	font-weight: 500;
	font-family: inherit;
	cursor: pointer;
	transition: background-color .15s, color .15s, border-color .15s;
}

.tritec-chip:hover {
	background: #eef0f3;
}

.tritec-chip.is-active {
	background: #0071dc;
	color: #fff;
	border-color: #0071dc;
}

/*
 * "Курс подтверждён" / "Со скидкой" — визуально вынесены из обычных
 * чекбокс-списков (раньше сливались с форматом обучения): выглядят как
 * отдельные переключатели-пилюли на светлом фоне, каждый со своим акцентным
 * цветом при активации.
 */
.tritec-filter-toggles {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 16px 0 8px;
}

.tritec-filter-toggle {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border-radius: 10px;
	background: #f9fafb;
	border: 1px solid #f1f2f4;
	cursor: pointer;
	transition: background-color .15s, border-color .15s;
}

.tritec-filter-toggle input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.tritec-filter-toggle-switch {
	position: relative;
	flex-shrink: 0;
	width: 34px;
	height: 20px;
	background: #d1d5db;
	border-radius: 20px;
	transition: background-color .15s;
}

.tritec-filter-toggle-switch::before {
	content: '';
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	background: #fff;
	border-radius: 50%;
	transition: transform .15s;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
}

.tritec-filter-toggle-text {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13.5px;
	font-weight: 500;
	color: #1f2937;
}

.tritec-filter-toggle-text svg {
	color: #1a7f4e;
	opacity: 0;
	transition: opacity .15s;
}

.tritec-filter-toggle-percent {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #d31819;
	color: #fff;
	font-size: 10px;
	font-weight: 700;
}

.tritec-filter-toggle-confirmed input:checked ~ .tritec-filter-toggle-switch {
	background: #1a7f4e;
}

.tritec-filter-toggle-confirmed input:checked ~ .tritec-filter-toggle-text svg {
	opacity: 1;
}

.tritec-filter-toggle-discount input:checked ~ .tritec-filter-toggle-switch {
	background: #d31819;
}

.tritec-filter-toggle input:checked ~ .tritec-filter-toggle-switch::before {
	transform: translateX(14px);
}

.tritec-filter-toggle:has(input:checked) {
	background: #fff;
	border-color: currentColor;
}

.tritec-filter-toggle-confirmed:has(input:checked) {
	border-color: #1a7f4e;
}

.tritec-filter-toggle-discount:has(input:checked) {
	border-color: #d31819;
}

.tritec-filter-reset {
	display: block;
	text-align: center;
	margin-top: 12px;
	font-size: 12px;
	color: #6b7280;
	text-decoration: underline;
}

.tritec-filter-reset:hover {
	color: #374151;
}

.tritec-filter-schedule-link {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 5px;
	margin-top: 10px;
	padding-top: 14px;
	border-top: 1px solid #f1f2f4;
	font-size: 12.5px;
	font-weight: 600;
	color: #0071dc;
	text-decoration: none;
}

.tritec-filter-schedule-link:hover {
	color: #005bb5;
	text-decoration: underline;
}

.tritec-filter-schedule-link span {
	transition: transform .15s ease;
}

.tritec-filter-schedule-link:hover span {
	transform: translateX(2px);
}

/* Индикатор AJAX-загрузки на самом контейнере результатов
   (#tritec-course-results, см. tutor/archive-course-init.php) */
#tritec-course-results {
	position: relative;
	transition: opacity .15s;
}

#tritec-course-results.tritec-loading {
	opacity: .5;
	pointer-events: none;
}

.tritec-no-results {
	padding: 30px 0;
	text-align: center;
	color: #6b7280;
	font-size: 14px;
}

/*
 * Спиннер загрузки — та же разметка (#cs-loading-spinner/.cs-spinner), что
 * на странице общего расписания, но стили ПРОДУБЛИРОВАНЫ здесь, а не
 * взяты из includes/css/style.css плагина: тот файл отдавал 500 на
 * сервере, и без его CSS пустой <div class="cs-spinner"> просто ничего
 * не показывает (нет анимации/центрирования). Дублирование делает
 * спиннер независимым от состояния того файла на сервере.
 */
#cs-loading-spinner {
	display: none;
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	text-align: center;
	z-index: 9999;
	background: rgba(255, 255, 255, .8);
	padding: 1rem;
	border-radius: 50%;
}

.cs-spinner {
	border: 4px solid rgba(0, 0, 0, .1);
	border-left-color: #0071dc;
	border-radius: 50%;
	width: 36px;
	height: 36px;
	animation: cs-spin .8s linear infinite;
}

@keyframes cs-spin {
	to { transform: rotate(360deg); }
}

.tritec-filter-search input[type="text"] {
	width: 100%;
	box-sizing: border-box;
	padding: 8px 10px;
	border: 1px solid #d1d5db !important;
	border-radius: 6px;
	font-size: 13px;
}

.tritec-filter-search input[type="text"]:focus {
	border-color: #0071dc !important;
	outline: none;
}

.tritec-filter-dates {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tritec-filter-dates input[type="text"] {
	width: 0;
	flex: 1 1 0;
	min-width: 0;
	box-sizing: border-box;
	padding: 8px 32px 8px 10px;
	border: 1px solid #d1d5db !important;
	border-radius: 6px;
	font-size: 13px;
	background-color: #fff;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 8px center;
	background-size: 16px 16px;
	cursor: pointer;
}

.tritec-filter-dates input[type="text"]:focus {
	border-color: #0071dc !important;
	outline: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%230071dc' stroke-width='2'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
}

.tritec-filter-dates-sep {
	color: #9ca3af;
	flex-shrink: 0;
}

/*
 * Родительская тема даёт КАЖДОМУ виджету в сайдбаре свою серую карточку
 * (фон + паддинг) — .page-sidebar.style-02 .widget в style.css темы.
 * Наш виджет фильтра уже оформлен как своя карточка
 * (.tritec-course-filter-form: белый фон, рамка, паддинг) — с обёрткой
 * темы получается карточка внутри карточки. Убираем стиль темы ТОЛЬКО
 * для нашего виджета — .tritec-course-filter-widget это тот же класс,
 * что Edumall_WP_Widget_Base кладёт прямо на обёртку .widget (через
 * $widget_cssclass в конструкторе), поэтому можно прицельно
 * переопределить, не трогая остальные виджеты сайдбара и сам файл темы.
 */
.page-sidebar.style-02 .widget.tritec-course-filter-widget {
	background: none !important;
	border-radius: 0 !important;
	padding: 0 !important;
}

/*
 * На мобильных в сайдбаре остаётся ТОЛЬКО наш виджет фильтра — у него
 * уже есть своя мобильная модалка (кнопка "Фильтры" + bottom-sheet, см.
 * ниже). Остальные виджеты сайдбара (если есть) на мобильных просто
 * скрываются — раньше все они шли одним длинным блоком ПЕРЕД списком
 * курсов. Наш виджет не задет: селектор его явно исключает.
 */
@media only screen and (max-width: 991px) {
	.page-sidebar .widget:not(.tritec-course-filter-widget) {
		display: none;
	}

	/*
	 * Заголовок САМОГО нашего виджета ("Фильтр курсов") печатается темой
	 * через before_title/after_title (Edumall_WP_Widget_Base::widget_start())
	 * СНАРУЖИ .tritec-course-filter-form — поэтому и не прятался вместе
	 * с формой (та скрыта до открытия модалки), а торчал сиротой сверху.
	 * Внутри модалки уже есть свой заголовок "Фильтры" (.tritec-filter-mobile-header)
	 * — родной заголовок виджета на мобильных просто не нужен.
	 */
	.tritec-course-filter-widget .widget-title {
		display: none;
	}
}

/* ==========================================================================
   Мобильная модалка фильтра (bottom-sheet). На десктопе кнопка-триггер,
   подложка и мобильный хедер/футер формы просто не показываются — форма
   остаётся обычным блоком в сайдбаре, как и была.
   ========================================================================== */

.tritec-filter-mobile-toggle {
	display: none;
}

.tritec-filter-backdrop {
	display: none;
}

.tritec-filter-mobile-header,
.tritec-filter-mobile-apply {
	display: none;
}

@media only screen and (max-width: 991px) {
	/* Плавающая кнопка-триггер — зафиксирована внизу экрана, доступна в
	   любой момент скролла ленты курсов, а не только в начале страницы. */
	.tritec-filter-mobile-toggle {
		display: inline-flex;
		align-items: center;
		gap: 0;
		position: fixed;
		right: 16px;
		top: 60%;
		transform: translateY(-50%);
		z-index: 9990;
		width: 52px;
		height: 52px;
		padding: 0;
		background: #0071dc;
		border: none;
		border-radius: 50%;
		overflow: hidden;
		box-shadow: 0 4px 16px rgba(0, 0, 0, .2);
		font-size: 13px;
		font-weight: 600;
		color: #fff;
		cursor: pointer;
		transition: width .25s ease, border-radius .25s ease;
	}

	.tritec-filter-mobile-toggle svg {
		flex-shrink: 0;
		margin-left: 18px; /* центрирует иконку в круге 52px: (52 - 16) / 2 */
	}

	.tritec-filter-mobile-toggle-text {
		display: inline-block;
		white-space: nowrap;
		max-width: 0;
		margin-left: 0;
		opacity: 0;
		overflow: hidden;
		transition: max-width .25s ease, margin-left .25s ease, opacity .2s ease;
	}

	/*
	 * :hover / :focus-visible — работает на планшетах/устройствах с мышью
	 * или трекпадом, и при фокусе с клавиатуры (доступность).
	 * .is-hint — навешивается JS-ом ПО ТАПУ на кнопку (initMobileModal()
	 * в inc/assets/course-filter.js): первый тап по компактной иконке
	 * только раскрывает текст "Подобрать курс", не открывая саму
	 * модалку — модалка открывается вторым тапом, уже по раскрытой
	 * кнопке. После закрытия модалки класс снимается, и кнопка снова
	 * сворачивается в компактную иконку.
	 */
	.tritec-filter-mobile-toggle:hover,
	.tritec-filter-mobile-toggle:focus-visible,
	.tritec-filter-mobile-toggle.is-hint {
		width: 190px;
		border-radius: 30px;
	}

	.tritec-filter-mobile-toggle:hover .tritec-filter-mobile-toggle-text,
	.tritec-filter-mobile-toggle:focus-visible .tritec-filter-mobile-toggle-text,
	.tritec-filter-mobile-toggle.is-hint .tritec-filter-mobile-toggle-text {
		max-width: 140px;
		margin-left: 8px;
		opacity: 1;
	}

	.tritec-filter-mobile-toggle:active {
		background: #005bb5;
	}

	.tritec-filter-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(17, 24, 39, .5);
		z-index: 9998;
		opacity: 0;
		visibility: hidden;
		transition: opacity .2s ease;
	}

	.tritec-filter-backdrop.is-visible {
		opacity: 1;
		visibility: visible;
	}

	body.tritec-modal-open-lock {
		overflow: hidden;
	}

	/* Сама форма по умолчанию скрыта на мобильных — открывается только
	   через кнопку-триггер, превращаясь в bottom-sheet поверх контента. */
	.tritec-course-filter-form {
		display: none;
	}

	.tritec-course-filter-form.is-modal-open {
		display: flex;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		top: auto;
		max-height: 85vh;
		z-index: 9999;
		border-radius: 16px 16px 0 0;
		border: none;
		box-shadow: 0 -8px 30px rgba(0, 0, 0, .15);
		padding: 0 18px 18px;
		overflow-y: auto;
		animation: tritec-sheet-up .25s ease;
	}

	@keyframes tritec-sheet-up {
		from { transform: translateY(100%); }
		to   { transform: translateY(0); }
	}

	.tritec-filter-mobile-header {
		display: flex;
		align-items: center;
		justify-content: space-between;
		position: sticky;
		top: 0;
		background: #fff;
		margin: 0 -18px;
		padding: 16px 18px;
		border-bottom: 1px solid #f1f2f4;
		font-size: 15px;
		font-weight: 700;
		color: #1f2937;
		z-index: 1;
	}

	.tritec-filter-mobile-close {
		background: none;
		border: none;
		font-size: 24px;
		line-height: 1;
		color: #6b7280;
		cursor: pointer;
		padding: 0 4px;
	}

	/*
	 * Тот же визуальный язык, что у .cs-single-sched-enroll (кнопка
	 * "Записаться" — см. style.css выше, блок "Колонка 5 — цена + кнопка"):
	 * шрифт Inter, цвета из переменных плагина course-schedule, тот же
	 * радиус и hover-эффект. Full-width футер-кнопка вместо компактной
	 * пилюли, но цвета/типографика идентичны для единого стиля сайта.
	 */
	.tritec-filter-mobile-apply {
		display: block !important;
		position: sticky;
		bottom: 0;
		width: 100% !important;
		box-sizing: border-box !important;
		margin-top: 14px;
		padding: 14px !important;
		height: auto !important;
		line-height: normal !important;
		background: var(--cs-blue, #0071dc) !important;
		color: #fff !important;
		border: none !important;
		border-width: 0 !important;
		border-radius: var(--cs-r6, 6px) !important;
		font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
		font-size: .9rem !important;
		font-weight: 600 !important;
		text-transform: none !important;
		letter-spacing: normal !important;
		cursor: pointer;
		transition: background-color .15s;
	}

	.tritec-filter-mobile-apply:active {
		background: var(--cs-blue-dark, #005bb5) !important;
	}

	.tritec-filter-mobile-apply:focus {
		outline: none;
	}

	/*
	 * Пульсация после того, как фильтр отработал (JS навешивает класс в
	 * updateResultCount()) — сигнал "результат уже готов, нажми, чтобы
	 * увидеть". Расширяющееся кольцо тени + лёгкий "вдох" самой кнопки,
	 * 2 повтора — не бесконечно, чтобы не раздражать, если человек не
	 * сразу нажимает.
	 */
	.tritec-filter-mobile-apply.tritec-pulse {
		animation: tritec-apply-pulse 1s ease-out 2;
	}

	@keyframes tritec-apply-pulse {
		0% {
			transform: scale(1);
			box-shadow: 0 0 0 0 rgba(0, 113, 220, .55);
		}
		70% {
			transform: scale(1.015);
			box-shadow: 0 0 0 12px rgba(0, 113, 220, 0);
		}
		100% {
			transform: scale(1);
			box-shadow: 0 0 0 0 rgba(0, 113, 220, 0);
		}
	}
}

/* ==========================================================================
   "Вендор" / "Код курса" на странице курса. Отдельной строкой под
   заголовком — см. tutor/single/course/lead-info.php. Фон этой секции
   тёмно-синий (.single-courses.single-course-02 .tutor-course-top-info,
   см. выше в этом файле) — раньше здесь стоял тёмно-серый текст,
   практически невидимый на тёмном фоне; теперь светлый, в тон
   остальному тексту хедера (заголовок/хлебные крошки).
   ========================================================================== */
.tritec-vendor-line {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	margin: 10px 0 20px;
	font-size: 14px;
}

.tritec-vendor-item {
	display: inline-flex;
	align-items: center;
	gap: 7px;
}

.tritec-vendor-label {
	color: rgba(255, 255, 255, .55);
	font-weight: 400;
}

.tritec-vendor-value {
	display: inline-block;
	color: #fff;
	font-weight: 700;
	background: rgba(255, 255, 255, .12);
	padding: 4px 12px;
	border-radius: 20px;
}

/* Бейджи на странице общего расписания (JS-инъекция поверх таблицы
   плагина, inc/assets/schedule-vendor-badges.js) — светлый фон страницы,
   отдельный, более компактный стиль. */
.tritec-schedule-vendor-badge {
	display: inline-flex;
	align-items: center;
	margin-left: 6px;
	vertical-align: middle;
	font-size: 10.5px;
	font-weight: 600;
	line-height: 1;
	padding: 3px 8px;
	border-radius: 20px;
	background: rgba(0, 113, 220, .1);
	color: #0071dc;
	white-space: nowrap;
}

/*
 * Фикс мобильной раскладки таблицы расписания на странице ОДНОГО курса
 * (плагин course-schedule, .cs-single-sched-tbl) — не наша разметка,
 * поэтому фиксим через CSS, не трогая сам плагин (слетело бы при
 * обновлении).
 *
 * Баг №1: table.cs-single-sched-tbl td:nth-child(1/2/3) { width:36%/32%/32% }
 * у плагина заданы БЕЗ медиа-запроса — это ширины колонок для десктопной
 * 3-колоночной таблицы, но на мобильном (карточном) виде они продолжают
 * действовать и на <td>, из-за чего каждая ячейка занимает только треть
 * ширины карточки вместо полной — отсюда "пустое место справа".
 *
 * Баг №2: собственный мобильный CSS плагина (@media max-width:640px)
 * делает <td> flex-контейнером с justify-content:space-between без
 * переноса строк. Пока в ячейке ОДИН смысловой элемент — выглядит
 * нормально (подпись слева, значение справа). Но у ячеек "Дата" (дата +
 * плашка статуса) и "Место проведения" (текст города + бейдж формата)
 * внутри НЕСКОЛЬКО дочерних элементов — space-between без wrap
 * растаскивает их по разным углам ОДНОЙ строки.
 *
 * Фикс: обнуляем nth-child ширины на мобильном (каждая ячейка — на всю
 * ширину карточки), <td> остаётся флекс-контейнером, но с flex-wrap —
 * подпись и главное значение встают в ряд на одной строке (сколько
 * реально помещается), а то, что не поместилось (плашка статуса, бейдж
 * формата), само переносится на следующую строку.
 */
@media (max-width: 640px) {
	table.cs-single-sched-tbl th:nth-child(1),
	table.cs-single-sched-tbl th:nth-child(2),
	table.cs-single-sched-tbl th:nth-child(3),
	table.cs-single-sched-tbl td:nth-child(1),
	table.cs-single-sched-tbl td:nth-child(2),
	table.cs-single-sched-tbl td:nth-child(3) {
		width: 100% !important;
	}

	table.cs-single-sched-tbl tr {
		width: 100% !important;
		box-sizing: border-box !important;
		padding: 14px !important;
		box-shadow: 0 1px 3px rgba(0, 0, 0, .05);
	}

	table.cs-single-sched-tbl td {
		display: flex !important;
		flex-wrap: wrap !important;
		justify-content: flex-start !important;
		align-items: center !important;
		column-gap: 8px;
		row-gap: 6px;
		padding: .55rem 0 !important;
	}

	table.cs-single-sched-tbl td::before {
		flex: 0 0 auto;
		padding-top: 0 !important;
	}

	table.cs-single-sched-tbl .cs-single-sched-fmt {
		margin-top: 0;
	}

	table.cs-single-sched-tbl .cs-single-sched-price-row {
		flex-wrap: wrap;
	}

	table.cs-single-sched-tbl .cs-single-sched-enroll {
		margin-top: 4px;
	}
}
