/* ============================================
   СТИЛИ ДЛЯ МОДУЛЯ TOURVISOR - КАЛЕНДАРЬ ВЫГОДНЫХ ЦЕН
   ============================================ */

/* Секция календаря */
.price-calendar {
	margin: var(--spacing-xxl) 0 !important;
}

.price-calendar__wrapper {
	width: 100% !important;
}

.price-calendar__container {
	position: relative !important;
	z-index: 2 !important;
}

/* Блок "КАЛЕНДАРЬ ВЫГОДНЫХ ЦЕН" использует унифицированные классы section-header, section-title */

@keyframes gradient-shift {
	0%, 100% {
		background-position: 0% center;
	}
	50% {
		background-position: 100% center;
	}
}

/* Контейнер модуля TourVisor */
.tv-calendar,
[class*="tv-calendar"] {
	position: relative !important;
	width: 100% !important;
	background: linear-gradient(135deg, #ffffff 0%, #fafbfc 100%) !important;
	border-radius: 20px !important;
	box-shadow: 0 4px 20px rgba(9, 98, 133, 0.08),
				0 8px 40px rgba(9, 98, 133, 0.04),
				0 0 0 1px rgba(255, 255, 255, 0.5) inset !important;
	border: 1px solid rgba(9, 98, 133, 0.1) !important;
	overflow: hidden !important;
	padding: var(--spacing-lg) !important;
}

/* Фильтры календаря - стили только для корневых элементов */
.TVFormControl,
[class*="TVFormControl"] {
	margin-bottom: var(--spacing-md) !important;
	background: #ffffff !important;
	border: 2px solid rgba(9, 98, 133, 0.2) !important;
	border-radius: 12px !important;
	padding: 0.625rem 1rem !important;
	transition: all 0.3s ease !important;
}

.TVFormControl:hover,
[class*="TVFormControl"]:hover {
	border-color: var(--color-primary) !important;
	box-shadow: 0 2px 8px rgba(9, 98, 133, 0.15) !important;
}

/* Тело календаря */
.TVCalBody,
[class*="TVCalBody"] {
	background: #ffffff !important;
	border-radius: 16px !important;
	padding: var(--spacing-lg) !important;
	height: auto !important;
}

.TVCalendarDepartureHeader,
[class*="TVCalendarDepartureHeader"] {
	font-size: 1.25rem !important;
	font-weight: 700 !important;
	color: var(--color-primary) !important;
	margin-bottom: var(--spacing-md) !important;
	text-align: center !important;
	padding: var(--spacing-md) !important;
	background: linear-gradient(135deg, rgba(9, 98, 133, 0.05) 0%, rgba(0, 160, 227, 0.03) 100%) !important;
	border-radius: 12px !important;
}

/* Заголовок таблицы */
.TVCalendarRow.TVCalendarListHeader,
[class*="TVCalendarRow"][class*="TVCalendarListHeader"] {
	display: grid !important;
	grid-template-columns: 2fr 1.5fr 1fr 1.5fr !important;
	gap: var(--spacing-md) !important;
	padding: var(--spacing-md) var(--spacing-lg) !important;
	background: linear-gradient(135deg, rgba(9, 98, 133, 0.08) 0%, rgba(0, 160, 227, 0.05) 100%) !important;
	border-radius: 12px !important;
	margin-bottom: var(--spacing-sm) !important;
	font-weight: 700 !important;
	color: var(--color-text) !important;
	text-transform: uppercase !important;
	font-size: 0.875rem !important;
	letter-spacing: 0.05em !important;
	border: 1px solid rgba(9, 98, 133, 0.15) !important;
	/* Убираем интерактивность для заголовка */
	cursor: default !important;
	transition: none !important;
	transform: none !important;
	/* Переопределяем все стили от TVCalendarRow */
	box-shadow: none !important;
	opacity: 1 !important;
	visibility: visible !important;
}

/* Убираем hover-эффекты для заголовка */
.TVCalendarRow.TVCalendarListHeader:hover,
[class*="TVCalendarRow"][class*="TVCalendarListHeader"]:hover {
	background: linear-gradient(135deg, rgba(9, 98, 133, 0.08) 0%, rgba(0, 160, 227, 0.05) 100%) !important;
	border-color: rgba(9, 98, 133, 0.15) !important;
	box-shadow: none !important;
	transform: none !important;
}

.TVCalendarRow.TVCalendarListHeader > div,
[class*="TVCalendarRow"][class*="TVCalendarListHeader"] > div {
	color: var(--color-primary) !important;
	font-weight: 700 !important;
}

/* Список стран */
.TVCalendarCountyList,
[class*="TVCalendarCountyList"] {
	display: flex !important;
	flex-direction: column !important;
	gap: var(--spacing-xs) !important;
}

/* Строка страны */
.TVCalendarRow.TVCalendarList,
[class*="TVCalendarRow"][class*="TVCalendarList"] {
	display: grid !important;
	grid-template-columns: 2fr 1.5fr 1fr 1.5fr !important;
	gap: var(--spacing-md) !important;
	padding: var(--spacing-md) var(--spacing-lg) !important;
	background: #ffffff !important;
	border: 1px solid rgba(9, 98, 133, 0.1) !important;
	border-radius: 12px !important;
	transition: all 0.3s ease !important;
	cursor: pointer !important;
	align-items: center !important;
	opacity: 1 !important;
	visibility: visible !important;
}

/* Убираем border: none с первой строки */
.TVCalendarRow.TVCalendarList[style*="border: none"],
[class*="TVCalendarRow"][class*="TVCalendarList"][style*="border: none"] {
	border: 1px solid rgba(9, 98, 133, 0.1) !important;
}

.TVCalendarRow.TVCalendarList:not(.TVCalendarListHeader):hover,
[class*="TVCalendarRow"][class*="TVCalendarList"]:not([class*="TVCalendarListHeader"]):hover {
	background: linear-gradient(135deg, rgba(9, 98, 133, 0.03) 0%, rgba(0, 160, 227, 0.02) 100%) !important;
	border-color: var(--color-primary) !important;
	box-shadow: 0 4px 12px rgba(9, 98, 133, 0.1) !important;
	transform: translateY(-2px) !important;
}

/* Страна */
.TVCalendarCountry,
[class*="TVCalendarCountry"] {
	display: flex !important;
	align-items: center !important;
	gap: var(--spacing-sm) !important;
}


.TVCalendarCountryValue,
[class*="TVCalendarCountryValue"] {
	font-size: 1rem !important;
	font-weight: 600 !important;
	color: var(--color-text) !important;
}


/* Погода */
.TVCalendarWeather,
[class*="TVCalendarWeather"] {
	display: flex !important;
	align-items: center !important;
	gap: var(--spacing-sm) !important;
	flex-wrap: wrap !important;
	/* Переопределяем стили от модуля для grid */
	width: auto !important;
	display: flex !important;
}

.TVCalendarAir,
[class*="TVCalendarAir"] {
	font-size: 0.9375rem !important;
	font-weight: 600 !important;
	color: var(--color-text) !important;
	display: flex !important;
	align-items: center !important;
	gap: 0.25rem !important;
}

.TVCalendarWater,
[class*="TVCalendarWater"] {
	font-size: 0.9375rem !important;
	font-weight: 500 !important;
	color: var(--color-text-light) !important;
	display: flex !important;
	align-items: center !important;
	gap: 0.25rem !important;
}

/* Дата */
.TVCalendarDate,
[class*="TVCalendarDate"] {
	font-size: 0.9375rem !important;
	font-weight: 500 !important;
	color: var(--color-text) !important;
	text-align: center !important;
	/* Переопределяем стили от модуля для grid */
	width: auto !important;
	display: block !important;
}

/* Переопределяем стили от .TVDTCalendar для всех ячеек */
.TVDTCalendar .TVCalendarDate,
[class*="TVDTCalendar"] [class*="TVCalendarDate"],
.TVDTCalendar .TVCalendarCountry,
[class*="TVDTCalendar"] [class*="TVCalendarWeather"],
.TVDTCalendar .TVCalendarPrice,
[class*="TVDTCalendar"] [class*="TVCalendarPrice"] {
	width: auto !important;
	max-width: none !important;
	display: flex !important;
}

.TVDTCalendar .TVCalendarWeather {
	width: auto !important;
	display: block !important;
}

/* Цена */
.TVCalendarPrice,
[class*="TVCalendarPrice"] {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: var(--spacing-md) !important;
	/* Переопределяем стили от модуля для grid */
	width: auto !important;
	display: flex !important;
}

.TVCalendarPriceContent,
[class*="TVCalendarPriceContent"] {
	display: flex !important;
	align-items: baseline !important;
	gap: 0.25rem !important;
	cursor: pointer !important;
}

.TVCalendarPriceValue,
[class*="TVCalendarPriceValue"] {
	font-size: 1.25rem !important;
	font-weight: 800 !important;
	color: var(--color-primary) !important;
	line-height: 1.2 !important;
}

.TVCalendarPriceCurrency,
[class*="TVCalendarPriceCurrency"] {
	font-size: 0.875rem !important;
	font-weight: 600 !important;
	color: var(--color-text-light) !important;
}

.TVCalendarBook,
[class*="TVCalendarBook"] {
	width: 24px !important;
	height: 24px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	color: var(--color-primary) !important;
	opacity: 0.6 !important;
	transition: all 0.3s ease !important;
	margin-left: var(--spacing-sm) !important;
	flex-shrink: 0 !important;
}

.TVCalendarRow.TVCalendarList:not(.TVCalendarListHeader):hover .TVCalendarBook,
[class*="TVCalendarRow"][class*="TVCalendarList"]:not([class*="TVCalendarListHeader"]):hover [class*="TVCalendarBook"] {
	opacity: 1 !important;
	transform: translateX(4px) !important;
}

/* Футер календаря */
.TVCalendarFooter,
[class*="TVCalendarFooter"] {
	margin-top: var(--spacing-lg) !important;
	padding-top: var(--spacing-lg) !important;
	padding-bottom: var(--spacing-lg) !important;
	border-top: 1px solid rgba(9, 98, 133, 0.1) !important;
	text-align: center !important;
}

.TVCalShowAll,
[class*="TVCalShowAll"] {
	display: block !important;
	margin: 0 auto !important;
	padding: 0.875rem 2rem !important;
	background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%) !important;
	color: #ffffff !important;
	border-radius: 12px !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.05em !important;
	text-decoration: none !important;
	transition: all 0.3s ease !important;
	border: none !important;
	cursor: pointer !important;
	box-shadow: 0 4px 12px rgba(9, 98, 133, 0.2) !important;
	text-align: center !important;
	width: fit-content !important;
}

.TVCalShowAll:hover,
[class*="TVCalShowAll"]:hover {
	background: linear-gradient(135deg, var(--color-primary-dark) 0%, var(--color-primary) 100%) !important;
	box-shadow: 0 6px 20px rgba(9, 98, 133, 0.3) !important;
	transform: translateY(-2px) !important;
}

/* Адаптивность */
@media (max-width: 1024px) {
	.TVCalendarRow.TVCalendarListHeader,
	[class*="TVCalendarRow"][class*="TVCalendarListHeader"],
	.TVCalendarRow.TVCalendarList,
	[class*="TVCalendarRow"][class*="TVCalendarList"] {
		grid-template-columns: 2fr 1.2fr 0.8fr 1.2fr !important;
		gap: var(--spacing-sm) !important;
		padding: var(--spacing-sm) var(--spacing-md) !important;
	}
	
	.TVCalendarPriceValue,
	[class*="TVCalendarPriceValue"] {
		font-size: 1.125rem !important;
	}
}

@media (max-width: 768px) {
	.price-calendar {
		margin: var(--spacing-xl) 0 !important;
	}
	
	.price-calendar h2 {
		font-size: 1.75rem !important;
		margin-bottom: var(--spacing-lg) !important;
	}
	
	.tv-calendar,
	[class*="tv-calendar"] {
		padding: var(--spacing-md) !important;
	}
	
	.TVModuleFiltersBlock,
	[class*="TVModuleFiltersBlock"] {
		flex-direction: column !important;
	}
	
	.TVFormControl,
	[class*="TVFormControl"] {
		width: 100% !important;
	}
	
	.TVCalendarRow.TVCalendarListHeader,
	[class*="TVCalendarRow"][class*="TVCalendarListHeader"] {
		display: none !important;
	}
	
	.TVCalendarRow.TVCalendarList,
	[class*="TVCalendarRow"][class*="TVCalendarList"] {
		grid-template-columns: 1fr !important;
		gap: var(--spacing-sm) !important;
		padding: var(--spacing-md) !important;
	}
	
	.TVCalendarCountry,
	[class*="TVCalendarCountry"],
	.TVCalendarWeather,
	[class*="TVCalendarWeather"],
	.TVCalendarDate,
	[class*="TVCalendarDate"],
	.TVCalendarPrice,
	[class*="TVCalendarPrice"] {
		justify-content: space-between !important;
		padding: var(--spacing-xs) 0 !important;
		border-bottom: 1px solid rgba(9, 98, 133, 0.05) !important;
	}
	
	.TVCalendarCountry::before,
	[class*="TVCalendarCountry"]::before {
		content: "Страна: " !important;
		font-weight: 600 !important;
		color: var(--color-text-light) !important;
		margin-right: var(--spacing-sm) !important;
	}
	
	.TVCalendarWeather::before,
	[class*="TVCalendarWeather"]::before {
		content: "Погода: " !important;
		font-weight: 600 !important;
		color: var(--color-text-light) !important;
		margin-right: var(--spacing-sm) !important;
	}
	
	.TVCalendarDate::before,
	[class*="TVCalendarDate"]::before {
		content: "Дата: " !important;
		font-weight: 600 !important;
		color: var(--color-text-light) !important;
		margin-right: var(--spacing-sm) !important;
	}
	
	.TVCalendarPrice::before,
	[class*="TVCalendarPrice"]::before {
		content: "Цена: " !important;
		font-weight: 600 !important;
		color: var(--color-text-light) !important;
		margin-right: var(--spacing-sm) !important;
	}
}

@media (max-width: 480px) {
	.price-calendar h2 {
		font-size: 1.5rem !important;
	}
	
	.TVCalendarPriceValue,
	[class*="TVCalendarPriceValue"] {
		font-size: 1rem !important;
	}
	
	.TVCalShowAll,
	[class*="TVCalShowAll"] {
		padding: 0.75rem 1.5rem !important;
		font-size: 0.875rem !important;
		width: 100% !important;
	}
}

