/* CRM — мобильная и планшетная адаптация (вертикальный скролл) */

:root {
	--crm-brand: #38CB50;
	--crm-brand-soft: #e8f8eb;
	--crm-sidebar: #364048;
	--crm-bg: #fff;
	--crm-border: #dce3ea;
	--crm-muted: #6c757d;
	--crm-radius: 8px;
	--crm-focus: 0 0 0 3px rgba(56, 203, 80, 0.35);
}

.crm-brand-mark {
	color: var(--crm-brand);
}

.crm-brand-subtitle {
	color: var(--crm-muted);
}

/* --- Сайдбар (off-canvas) --- */
.crm-sidebar-overlay {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.45);
	z-index: 1040;
}

.crm-sidebar-overlay.is-open {
	display: block;
}

.crm-mobile-top {
	display: flex;
	align-items: center;
	padding: 0.5rem 0.75rem;
	background: #fff;
	border-bottom: 1px solid #dee2e6;
	position: sticky;
	top: 0;
	z-index: 1020;
	transition: transform 0.25s ease;
}

@media (max-width: 991.98px) {
	.crm-mobile-top.is-hidden {
		transform: translateY(-100%);
		pointer-events: none;
	}

	.routes-page-header {
		transition: transform 0.25s ease, top 0.25s ease;
	}

	.routes-page-header.is-hidden {
		transform: translateY(calc(-100% - 56px));
		pointer-events: none;
	}
}

#crm-menu-toggle {
	min-width: 44px;
	min-height: 44px;
	padding: 0.5rem 0.75rem;
}

.btn:focus-visible {
	box-shadow: var(--crm-focus);
	outline: none;
}

/* Телефон и планшет: страница не шире экрана, скролл только вниз */
@media (max-width: 991.98px) {
	html,
	body {
		max-width: 100%;
		overflow-x: hidden;
	}

	.wrapper,
	.wrapper > .row {
		min-width: 0;
		max-width: 100%;
	}

	.routes-page-header {
		top: 56px;
	}

	#crm-sidebar {
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		width: min(280px, 85vw);
		max-width: 85vw;
		flex: 0 0 auto;
		z-index: 1050;
		transform: translateX(-100%);
		transition: transform 0.25s ease;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
		min-height: 100vh;
		padding-bottom: 2rem;
	}

	#crm-sidebar.is-open {
		transform: translateX(0);
		box-shadow: 4px 0 16px rgba(0, 0, 0, 0.2);
	}

	.aside-menu {
		padding-top: 1rem;
	}

	.aside-menu li {
		padding: 10px 12px 10px 14px;
		font-size: 14px;
		display: flex;
		align-items: center;
		white-space: nowrap;
	}

	#crm-main-col {
		width: 100% !important;
		max-width: 100% !important;
		flex: 0 0 100% !important;
		min-width: 0;
	}

	#crm-main-col .container,
	#main-content,
	#main-content > section,
	section.container {
		width: 100%;
		max-width: 100%;
		min-width: 0;
		padding-left: 0.75rem;
		padding-right: 0.75rem;
		box-sizing: border-box;
	}

	#main-content {
		overflow-x: hidden;
	}

	.navbar {
		flex-wrap: wrap;
		padding: 0.5rem 0;
		width: 100%;
		max-width: 100%;
	}

	.navbar-brand {
		font-size: 1rem;
		white-space: normal;
		line-height: 1.3;
		max-width: calc(100% - 3rem);
	}

	.crm-brand-subtitle {
		display: block;
		font-size: 0.7rem !important;
		margin-top: 0.15rem;
	}

	.dropdown-menu {
		margin-left: 0 !important;
	}

	section h2 {
		font-size: 1.35rem;
	}

	section > .d-flex.align-items-center,
	.routes-page-header,
	.routes-page-header-main,
	.routes-header-actions {
		flex-wrap: wrap;
		gap: 0.5rem;
		max-width: 100%;
		min-width: 0;
	}

	section > .d-flex.align-items-center h2,
	.routes-page-header-main h2 {
		width: 100%;
		margin-bottom: 0;
	}

	section > .d-flex.align-items-center .btn,
	section > .d-flex.align-items-center select.form-control,
	.routes-page-header-main .btn,
	.routes-page-header-main select.form-control,
	.routes-header-actions .btn {
		flex: 1 1 auto;
		min-width: 0;
	}

	section > .d-flex.align-items-center select.form-control.w-25,
	.routes-page-header-main .routes-city-filter {
		width: 100% !important;
		max-width: 100% !important;
		flex: 1 1 100%;
	}

	.routes-header-actions {
		margin-left: 0;
		width: 100%;
	}

	/* Карточки: одна колонка, не вылезают за рамку */
	#notifications-list .card,
	#card-list .card,
	#archive_list .card,
	#card-list .routes-city-group .card,
	#archive_list .routes-city-group .card {
		width: 100% !important;
		min-width: 0 !important;
		max-width: 100% !important;
		margin-left: 0;
		margin-right: 0;
		margin-bottom: 0.75rem;
		box-sizing: border-box;
		overflow: hidden;
	}

	#card-list .route-card-header,
	#archive_list .route-card-header,
	#trip-route-modal .route-card-header {
		overflow: hidden;
		padding-right: 2rem;
	}

	#card-list .route-card-header-left,
	#archive_list .route-card-header-left,
	#trip-route-modal .route-card-header-left {
		flex-wrap: wrap;
		max-width: 100%;
		min-width: 0;
	}

	#card-list .route-card-title,
	#archive_list .route-card-title,
	#trip-route-modal .route-card-title {
		white-space: normal;
		overflow-wrap: anywhere;
	}

	#card-list .route-card-body,
	#archive_list .route-card-body,
	#trip-route-modal .route-card-body,
	#card-list .route-card-columns,
	#archive_list .route-card-columns,
	#trip-route-modal .route-card-columns {
		max-width: 100%;
		min-width: 0;
		overflow: hidden;
	}

	#card-list .route-card-col-info .ddrive,
	#archive_list .route-card-col-info .ddrive {
		width: 100%;
		max-width: 100%;
		table-layout: auto;
	}

	#card-list .sendTelegram,
	#archive_list .sendTelegram {
		overflow-wrap: anywhere;
		word-break: break-word;
	}

	#card-list .route-card-col-passengers,
	#archive_list .route-card-col-passengers,
	#trip-route-modal .route-card-col-passengers {
		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;
		max-width: 100%;
	}

	#card-list .table_clients,
	#archive_list .table_clients,
	#trip-route-modal .table_clients {
		width: max-content !important;
		min-width: 640px !important;
		max-width: none !important;
		table-layout: fixed !important;
	}

	#card-list .route-passenger-actions,
	#archive_list .route-passenger-actions,
	#trip-route-modal .route-passenger-actions {
		flex-wrap: wrap;
		position: sticky;
		left: 0;
		width: 100%;
		max-width: 100%;
		box-sizing: border-box;
	}

	#card-list .route-passenger-actions .btn,
	#archive_list .route-passenger-actions .btn,
	#trip-route-modal .route-passenger-actions .btn {
		flex: 1 1 auto;
		min-width: 0;
		white-space: normal;
	}

	#trip-route-modal .route-passenger-actions .btn-close-trip-modal {
		flex: 0 0 auto;
	}

	#card-list .route-card-summary,
	#archive_list .route-card-summary {
		overflow-wrap: normal;
		position: sticky;
		left: 0;
		width: 100%;
		max-width: 100%;
		box-sizing: border-box;
		flex-direction: column;
		flex-wrap: nowrap;
		white-space: normal;
	}

	#trip-route-modal .route-card-summary {
		overflow-wrap: normal;
		position: sticky;
		left: 0;
		width: 100%;
		max-width: 100%;
		box-sizing: border-box;
		flex-wrap: nowrap;
		white-space: nowrap;
	}

	#route-section .routes-applications-panel,
	#route-section .routes-trips-panel,
	.routes-cards-wrap,
	.routes-category-strips {
		width: 100%;
		max-width: 100%;
		box-sizing: border-box;
	}

	#route-section .routes-applications-panel,
	#route-section .routes-trips-panel {
		width: calc(100% - 1rem);
		margin-left: 0.5rem;
		margin-right: 0.5rem;
	}

	#card-list .route-card-header-columns,
	#archive_list .route-card-header-columns,
	#trip-route-modal .route-card-header-columns,
	#card-list .route-card-columns,
	#archive_list .route-card-columns,
	#trip-route-modal .route-card-columns {
		flex-wrap: wrap;
	}

	#card-list .route-card-header-col-info,
	#archive_list .route-card-header-col-info,
	#trip-route-modal .route-card-header-col-info,
	#card-list .route-card-header-col-passengers,
	#archive_list .route-card-header-col-passengers,
	#trip-route-modal .route-card-header-col-passengers,
	#card-list .route-card-col-info,
	#archive_list .route-card-col-info,
	#trip-route-modal .route-card-col-info,
	#card-list .route-card-col-passengers,
	#archive_list .route-card-col-passengers,
	#trip-route-modal .route-card-col-passengers {
		flex: 1 1 100%;
		max-width: 100%;
		min-width: 0;
	}

	#card-list .btn-change-car,
	#archive_list .btn-change-car {
		min-width: 0;
		width: 100%;
		margin-left: 0;
	}

	/* Остальные таблицы: скролл внутри обёртки */
	.table-scroll-wrap {
		max-width: 100%;
		overflow-x: auto;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
	}

	table.table-resizable,
	.universal-table {
		width: 100% !important;
		min-width: 0 !important;
		max-width: 100% !important;
		table-layout: fixed !important;
	}

	/* Заявки / Путёвки: не сжимать, листать пальцем влево-вправо */
	#route-section .routes-applications-panel,
	#route-section .routes-trips-panel {
		overflow: hidden;
	}

	#route-section .routes-trips-list,
	#route-section .routes-trips-panel .routes-trips-list,
	#route-section .routes-trips-panel.expanded .routes-trips-list {
		width: 100%;
		max-width: 100%;
		overflow-x: auto !important;
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
	}

	#route-section .routes-applications-list,
	#route-section .routes-applications-panel.expanded .routes-applications-list {
		width: 100%;
		max-width: 100%;
		overflow-x: hidden;
		overflow-y: auto;
	}

	#route-section .routes-applications-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-rows: auto;
	}

	#route-section .application-card {
		min-height: 0;
	}

	#route-section #routes-trips-table,
	#route-section .routes-trips-table,
	#route-section #routes-trips-table.table-resizable {
		width: max-content !important;
		min-width: 720px !important;
		max-width: none !important;
		table-layout: fixed !important;
	}

	.table-resizable th,
	.table-resizable td,
	.universal-table th,
	.universal-table td,
	.routes-trips-table th,
	.routes-trips-table td,
	.table_clients th,
	.table_clients td {
		font-size: 0.78rem;
	}

	#routes-trips-table.table-resizable > colgroup > col.col-trips-passengers {
		width: 112px !important;
		min-width: 112px !important;
	}

	.col-resize-grip {
		display: none !important;
	}

	/* Жёсткие десктопные ширины */
	.tabs,
	.control-tabs,
	.detail-tabs {
		min-width: 0 !important;
		max-width: 100% !important;
		width: 100%;
	}

	.tabs > label,
	.control-tabs > label,
	.detail-tabs > label {
		display: inline-block;
		padding: 12px 14px;
		font-size: 0.85rem;
		max-width: 100%;
	}

	#routes-list .rows_edit,
	#routes-list .rows_edit p {
		width: 100% !important;
		max-width: 100%;
		box-sizing: border-box;
	}

	.price-input-group {
		flex-wrap: wrap;
		max-width: 100%;
	}

	.price-picker-menu {
		min-width: 0;
		max-width: calc(100vw - 2rem);
	}

	.block_calendar_choose {
		left: 50% !important;
		transform: translateX(-50%);
		width: min(320px, calc(100vw - 2rem));
		padding: 2.5rem 1rem 1.5rem;
		top: 10%;
	}

	.block_calendar_choose__close,
	.block_calendar_choose__back {
		right: 1rem !important;
	}

	.block_choose_car_day_time {
		left: 50% !important;
		transform: translateX(-50%);
		width: calc(100vw - 1rem);
		max-width: 500px;
		top: 5%;
		height: 90%;
		max-height: none;
	}

	.calendar_for_notes--header {
		width: 32px;
		height: 32px;
	}

	.pagination {
		flex-wrap: wrap;
		justify-content: center;
	}

	.pagination .page-link {
		padding: 0.35rem 0.6rem;
		font-size: 0.85rem;
	}

	.modal-dialog,
	.modal-lg,
	.modal-xl {
		margin: 0.5rem;
		max-width: calc(100% - 1rem);
	}

	.modal-footer {
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.35rem;
	}

	.modal-footer .btn {
		flex: 1 1 calc(50% - 0.35rem);
		min-width: 0;
	}

	#delete-client-modal .d-flex.justify-content-end {
		flex-wrap: wrap;
		justify-content: center !important;
		gap: 0.35rem;
	}

	#delete-client-modal .d-flex.justify-content-end .btn {
		flex: 1 1 calc(50% - 0.35rem);
		margin-left: 0 !important;
	}

	#scheduleMonth,
	#scheduleDispatcher {
		max-width: 100%;
	}

	#main-content .w-50,
	.modal-body .w-50,
	.input-detail {
		width: 100% !important;
		max-width: 100%;
	}
}

@media (max-width: 575.98px) {
	.tabs > label,
	.control-tabs > label,
	.detail-tabs > label {
		padding: 12px 10px;
		font-size: 0;
	}

	.tabs > label:before,
	.control-tabs > label:before,
	.detail-tabs > label:before {
		margin: 0;
		font-size: 18px;
	}

	.login-wrapper h1.display-3 {
		font-size: 2rem;
	}

	.login-form-col {
		padding: 1.25rem !important;
	}

	#route-section .routes-applications-grid {
		grid-template-columns: 1fr;
	}
}

/* Альбомная ориентация: исходные ширины панелей, категорий и путёвок */
@media (max-width: 991.98px) and (orientation: landscape) {
	#route-section.container,
	#archive-section.container {
		padding-left: 0.5rem;
		padding-right: 0.5rem;
	}

	#route-section .routes-applications-panel,
	#route-section .routes-trips-panel,
	.routes-category-strips,
	#card-list .routes-city-group,
	#archive_list .routes-city-group,
	#card-list .card,
	#archive_list .card {
		width: calc(100% - 1rem) !important;
		max-width: calc(100% - 1rem) !important;
		min-width: 0;
		box-sizing: border-box;
	}

	#card-list .routes-city-group .routes-time-body > .card,
	#archive_list .routes-city-group .routes-time-body > .card {
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.routes-cards-wrap {
		width: 100%;
		max-width: 100%;
	}

	#card-list .route-card-header-columns,
	#archive_list .route-card-header-columns,
	#trip-route-modal .route-card-header-columns {
		flex-wrap: nowrap;
	}

	#card-list .route-card-col-info,
	#archive_list .route-card-col-info,
	#trip-route-modal .route-card-col-info {
		flex: 0 0 32ch;
		width: 32ch;
		max-width: 32ch;
		min-width: 32ch;
		box-sizing: border-box;
		font-size: 14px;
	}

	#card-list .route-card-header-col-passengers,
	#archive_list .route-card-header-col-passengers,
	#trip-route-modal .route-card-header-col-passengers,
	#card-list .route-card-col-passengers,
	#archive_list .route-card-col-passengers,
	#trip-route-modal .route-card-col-passengers {
		flex: 1 1 320px;
		max-width: none;
		min-width: 0;
	}

	#card-list .btn-change-car,
	#archive_list .btn-change-car {
		min-width: 140px;
		width: auto;
		margin-left: auto;
	}
}
