/* ========================================
   ПОДКЛЮЧЕНИЕ ШРИФТОВ
   ======================================== */

@font-face {
    font-family: 'Chakra Petch';
    src: url('../ChakraPetch-Regular.otf') format('opentype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

:root {
    --primary-color: #36526a;
    --primary-hover: #2a4154;
    --accent-color: #ff9f0c;
    --secondary-color: #333;
    --success-color: #10b981;
    --warning-color: #f59e0b;
    --danger-color: #ef4444;
    --info-color: #4f9cf9;

    --bg-color: #f7f7f7;
    --text-color: #555555;
    --text-color-secondary: #888888;
    --border-color: #dcdcdc;
    --filter-control-border: color-mix(in srgb, var(--text-color) 40%, transparent);
    --filter-control-border-soft: color-mix(in srgb, var(--filter-control-border) 40%, transparent);
    --seller-bookings-toolbar-control-height: 32px;
    --seller-bookings-toolbar-control-radius: 4px;
    --seller-bookings-stack-margin-bottom: 8px;
    /* Единая ширина полей поиска (.seller-bookings-search-*) по всему сайту */
    --viva-unified-search-min-width: 220px;
    /* Единый акцент «опасного» действия в тулбаре бронирований (PDF / × / чип) */
    --seller-bookings-accent-warn: #e84c4c;
    /* Fullscreen карточек дашборда + правый внутренний отступ «Мои бронирования» / брони провайдера */
    --booking-max-view-inset: 1.5rem;
    /* data-table: бронирования, каталог экскурсий провайдера, активные провайдеры */
    --viva-data-table-th-padding: 0.35rem 0.5rem;
    --viva-data-table-td-padding: 0.25rem 0.5rem;
    /* Кнопки/иконки в колонке «Действия» data-table — одна высота по всем таблицам */
    --viva-table-action-size: 24px;
    /* 1px HUD-рамка дашборда: чуть темнее --border-color, чтобы линии читались рядом с углами */
    --dashboard-frame-hairline: #bababa;
    --bs-border-color-rgb: 220, 220, 220;
    --input-border-color: #696b6e;
    --hover-bg: #f2f2f2;
    /* Плавающий лейбл (поднят: фокус / значение / .label-raised) */
    --form-label-floating-color: var(--primary-color);
    /* Поднятая подпись: якорь top:18px + translate вверх на 18px (см. .label-raised) */
    --form-label-floating-shift: -1.125rem;
    --auth-header-height: 50px;
    --auth-header-padding: 0.5rem 1rem;
    --bs-app-sidebar-width: 15rem;
    /* Сайдбар: светлая палитра по умолчанию; в тёмной теме переопределяется на html[data-bs-theme=dark] */
    --bs-app-sidebar-menu-header-color: rgba(0, 0, 0, 0.35);
    --bs-app-sidebar-menu-link-color: rgba(0, 0, 0, 0.55);
    --bs-app-sidebar-menu-link-hover-color: #000000;
    --bs-app-sidebar-menu-link-active-color: #000000;
    --bs-app-sidebar-mobile-bg: rgba(255, 255, 255, 0.98);
    /* Затемнение фона за выезжающим меню (канон: max-width 767px) */
    --mobile-nav-scrim: rgba(15, 23, 42, 0.42);
    --sidebar-sync-transition: 0.32s cubic-bezier(0.22, 1, 0.36, 1);
    /* Немного «оживлённее» для drawer на телефоне (переопределяется в mobile block) */
    --sidebar-mobile-drawer-transition: 0.3s cubic-bezier(0.32, 0.72, 0, 1);

    /*
     * Фон страницы: слой body:before/body::after с position:fixed;
     * высота через --viva-body-bg-layer-height (lvh там, где есть поддержка — стабильнее при панелях браузера на планшетах).
     * Подложка (cover): background-attachment scroll — без багов fixed-attachment при скролле.
     * База — светлая тема; [data-bs-theme="dark"] переопределяет только своё.
     */
    --viva-body-bg-layer-height: 100vh;
    --bs-body-font-weight: 300;
    --bs-body-bg-gradient: linear-gradient(180deg, rgb(240 240 240 / 92%), rgb(241 245 249));
    --bs-body-bg-image: url(/images/pattern-light.png), radial-gradient(circle at 3px 3px, rgba(100, 100, 100, 0.4) 2px, transparent 2px);
    --bs-body-bg-image-size: 4.6875rem;
    --bs-body-bg-cover: url(/images/cover-dark.jpg);
    --transition: all 0.3s ease;
    /** Иконки в кнопках: одинаковый «полёт» hover / затухание (как шапка login и .reload-btn svg) */
    --viva-icon-hover-transition: color 0.4s ease, fill 0.4s ease;
    /** Кнопки/сегменты с фоном+текстом+рамкой (login header auth, экспорт бронирований, PES) */
    --viva-surface-interaction-transition: background-color 0.4s ease, color 0.4s ease, border-color 0.4s ease;
    /** Только смена фона с тем же темпом */
    --viva-bg-soft-transition: background-color 0.4s ease;
    /** Только цвет текста/типа (ссылки, вкладки) */
    --viva-text-color-transition-soft: color 0.4s ease;
    --viva-dropdown-arrow-size: 12px;
    --viva-dropdown-arrow-inset: 10px;
    /* Вертикаль стрелки dropdown: по строке ввода (обычные поля с лейблом) */
    --viva-dropdown-arrow-offset-top: 26px;
    --button-radius: 4px;
    --button-padding: 5px 30px;
    --button-min-height: 2rem;

    /*
     * Вторострочный текст и подсказки: одна точка настройки для всего сайта.
     * Классы (.form-hint, .ui-muted-hint-text, подпись переключателя, подсказки карточек PES) остаются
     * разными по смыслу и вёрстке; типографику меняете здесь.
     */
    --viva-muted-hint-font-size: 0.875rem;
    --viva-muted-hint-line-height: 1.45;
    --viva-muted-hint-color: var(--secondary-color);

    /* Заголовки в карточках (класс .card-title): смените это значение — обновится везде */
    --card-title-font-size: 1.2rem;

    /* Dropdown Settings */
    --dropdown-font-size: 0.7rem;
    --dropdown-bg: #ffffff;
    /* Непрозрачная подложка карточек / sticky-toolbar / всплывающих подсказок */
    --card-surface-bg: var(--dropdown-bg);
    --dropdown-border: #ddd;
    --dropdown-border-radius: 2px;
    --dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    --viva-radius-sm: 6px;
    --viva-radius-md: 8px;
    /* Горизонтальный зазор между кнопками в тулбарах / .viva-btn-group (PDF, Excel, фильтры…) */
    --viva-gap-toolbar: 8px;
    /* Компактные группы в ячейках таблицы (.table-actions) */
    --viva-gap-compact: 0.35rem;
    /* Двухколоночные строки форм (.form-row): зазор между колонками */
    --viva-form-row-gap: 1.5rem;
    --viva-ease-fast: 0.2s ease;
    --viva-transition-all-fast: all var(--viva-ease-fast);
    --viva-transition-fade-transform: opacity var(--viva-ease-fast), transform var(--viva-ease-fast);
    --viva-transition-fade-transform-visibility: opacity var(--viva-ease-fast), transform var(--viva-ease-fast), visibility var(--viva-ease-fast);
    --dropdown-item-padding: 6px 14px;
    --viva-chip-padding: 6px 10px;
    --dropdown-item-border: #f0f0f0;
    --dropdown-item-hover-bg: #f8f9fa;

    /*
     * Z-index stack (overlay). Единая шкала: менять только здесь.
     * Новые плавающие слои — var(--viva-z-*), без «случайных» 99999.
     * Ladder (низ → верх): фон → chrome/sidebar → header dropdowns → fullscreen →
     * filters/modal → calendar/time → lightbox → hints → universal dropdown → toast.
     */
    --viva-z-bg-under-deep: -8;
    --viva-z-bg-under: -5;
    --viva-z-bg-base: 0;
    /* Локальная иерархия внутри полей/карточек (не глобальный overlay stack) */
    --viva-z-local-raised: 1;
    --viva-z-local-above: 2;
    --viva-z-local-top: 3;
    --viva-z-local-overlay: 5;
    --viva-z-local-control: 10;
    --viva-z-field-arrow: 12;
    --viva-z-field-clear: 13;
    --viva-z-booking-side-control: 20;
    --viva-z-password-extension-hide: 80;
    --viva-z-sidebar: 1010;
    --viva-z-mobile-nav-scrim: 1020;
    --viva-z-fixed-header: 1030;
    --viva-z-mobile-sidebar: 1040;
    --viva-z-dashboard-card-fullscreen: 1045;
    --viva-z-header-floating: 1050;
    --viva-z-dashboard-loader: 1055;
    --viva-z-messenger-menu: 2000;
    --viva-z-messenger-menu-floating: 2100;
    --viva-z-header-filter-dropdown: 2500;
    --viva-z-modal: 2500;
    --viva-z-modal-elevated: 2600;
    /* Ниже login-page-header (1030): попап даты не перекрывает шапку дашборда */
    --viva-z-calendar: 1025;
    --viva-z-time-picker: 1025;
    --viva-z-table-settings-dropdown-open: 2600;
    --viva-z-tour-photo-lightbox: 2700;
    --viva-z-booking-note-hint: 5000;
    --viva-z-dropdown-universal: 9999;
    --viva-z-loading-overlay: 9999;
    --viva-z-dropdown-elevated: 10000;
    --viva-z-gallery-drag: 10000;
    --viva-z-toast: 11000;

    /* Scrollbar Settings (ползунок = accent; тёмная тема переопределяет --accent-color на html) */
    --scrollbar-height: 5px;
    --scrollbar-border-radius: 1px;
    --scrollbar-track-bg: rgba(255, 255, 255, 0.3);
    --card-scrollbar-offset: 6px;

    /*
     * Канон брейкпоинтов (совпадают с max-width в @media в этом файле):
     * ≤991 — планшет и уже; ≤767 — телефон в альбоме; ≤479 — телефон в портрете.
     * В @media пишите литералы (991px и т.д.): var() там не поддерживается.
     * Переменные — для JS, документации и значений в обычных свойствах.
     */
    --bp-max-tablet: 991px;
    --bp-max-mobile-l: 767px;
    --bp-max-mobile-p: 479px;

    /* Общий шаблон сетки: .stats-grid и строки .form-row */
    --viva-grid-auto-fit-200: repeat(auto-fit, minmax(200px, 1fr));

    /* SVG иконки */
    --caret-down-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='black' class='caret-down' viewBox='0 0 16 16'%3E%3Cpath d='M3.204 5h9.592L8 10.481 3.204 5zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659z'/%3E%3C/svg%3E");
    --caret-down-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath fill='black' d='M3.204 5h9.592L8 10.481 3.204 5zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659z'/%3E%3C/svg%3E");
    /*
     * Маска галочки для кастомных accent-чекбоксов (mask-image: var(--viva-checkbox-check-mask)):
     * мессенджеры в бронировании, .itour-checkbox-option (PES pricing и др.), календарь — .calendar-weekday-multi-toggle, .pe-dates-preset-toggle
     * (подробнее custom-calendar.css). Stroke вместо залитого контура — жирнее при 8×8. Не для .viva-switch и «голых» native.
     */
    --viva-checkbox-check-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M2.65 6.15 L5.05 8.8 L9.55 3.2'/%3E%3C/svg%3E");
}

@supports (height: 100lvh) {
    :root {
        --viva-body-bg-layer-height: 100lvh;
    }
}

/* Тёмная тема: только переопределения токенов */
[data-bs-theme="dark"] {
    --primary-color: #4f9cf9;
    --primary-hover: #3b82f6;
    --secondary-color: #94a3b8;

    --bg-color: #0d101b;
    --text-color: #f1f5f9;
    --text-color-secondary: #cbd5e1;
    --border-color: #334155;
    --bs-border-color-rgb: 51, 65, 85;
    /* Та же линия полей, что в светлой теме: иначе правки в :root «не видны» на сайте в dark */
    --input-border-color: #696b6e;
    --hover-bg: #798e98;

    /* Dropdown для темной темы */
    --dropdown-bg: #1e2835;
    --dropdown-border: #334155;
    --dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
    --dropdown-item-border: #334155;
    --dropdown-item-hover-bg: #798e98;

    /* SVG иконки для темной темы */
    --caret-down-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='white' class='caret-down' viewBox='0 0 16 16'%3E%3Cpath d='M3.204 5h9.592L8 10.481 3.204 5zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659z'/%3E%3C/svg%3E");

    /* Дополнительные переменные для темной темы точно как на референсном сайте */
    --bs-body-bg-gradient: linear-gradient(180deg, rgb(50 70 80 / 85%), rgb(13, 16, 27));
    --bs-body-bg-image: url(/images/pattern-dark.png), radial-gradient(circle at 2px 2px, rgba(255,255,255,0.15) 1px, transparent 1px);
    --bs-app-sidebar-menu-header-color: rgba(255, 255, 255, 0.35);
    --bs-app-sidebar-menu-link-color: rgba(255, 255, 255, 0.55);
    --bs-app-sidebar-menu-link-hover-color: #ffffff;
    --bs-app-sidebar-menu-link-active-color: #ffffff;
    --bs-app-sidebar-mobile-bg: rgba(44, 56, 70, 0.98);
    --mobile-nav-scrim: rgba(0, 0, 0, 0.55);
    --scrollbar-track-bg: rgba(255, 255, 255, 0.18);
}

/*
 * CSS architecture (cleanup target):
 * — Кнопки: .btn + .btn-primary | .btn-cancel-unified | .btn-danger | .btn-outline-primary (см. buttons.css).
 * — Всплывающие списки: .universal-dropdown / .filter-dropdown + общие .viva-dropdown-menu-item.
 * — Caret: --caret-down-svg + .viva-caret-glyph; позиционирование — у носителя (.dropdown-arrow, select-like).
 * — Фильтры шапки таблиц: seller-*-header-filter-*; в CSS — общие блоки через :is(..., ...).
 * Новые override-слои не добавлять: править канонический блок или токен в :root.
 */

html {
    font-family: 'Chakra Petch', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

body {
    margin: 0;
    color: var(--text-color);
    font-family: inherit;
    font-weight: var(--bs-body-font-weight);
    -webkit-font-smoothing: antialiased;
}

:is([data-bs-theme="light"] body, [data-bs-theme="dark"] body, body.auth-page, body.landing-page) {
    position: relative !important;
    background-color: transparent !important;
    z-index: 0 !important;
}

[data-bs-theme="light"] body,
[data-bs-theme="dark"] body {
    font-weight: var(--bs-body-font-weight);
}

[data-bs-theme="dark"] body:before,
[data-bs-theme="light"] body:before {
    content: "" !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: auto !important;
    width: 100% !important;
    height: var(--viva-body-bg-layer-height) !important;
    z-index: -8 !important;
    background-image: var(--bs-body-bg-gradient), var(--bs-body-bg-cover) !important;
    background-position: center center, center center !important;
    background-attachment: scroll, scroll !important;
    background-size: 100% 100%, cover !important;
    pointer-events: none !important;
}

[data-bs-theme="dark"] body:before {
    background-repeat: no-repeat, no-repeat !important;
}

[data-bs-theme="dark"] body::after,
[data-bs-theme="light"] body::after {
    content: "" !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: auto !important;
    width: 100% !important;
    height: var(--viva-body-bg-layer-height) !important;
    background-color: rgba(0, 0, 0, 0) !important;
    background-repeat: repeat !important;
    background-attachment: scroll !important;
    z-index: -5 !important;
    pointer-events: none !important;
}

[data-bs-theme="dark"] body::after {
    background-image: var(--bs-body-bg-image) !important;
    background-size: var(--bs-body-bg-image-size) !important;
}

[data-bs-theme="light"] body:before {
    background-repeat: repeat, no-repeat !important;
}

[data-bs-theme="light"] body::after {
    background-image: var(--bs-body-bg-image) !important;
    background-size: var(--bs-body-bg-image-size) !important;
}

/*
 * Единый скролл на всём сайте (тонкая полоса, accent, без стрелок Windows).
 * WebKit/Chrome: только ::-webkit-scrollbar — не задавать scrollbar-width/scrollbar-color на том же элементе.
 * Firefox: scrollbar-width/color в @supports ниже.
 * Исключения (скролл скрыт): точечные блоки у конкретных виджетов при необходимости.
 * Таблицы бронирований: scrollport и видимая полоса — bookings-table.css + booking-table-scroll.js.
 * .viva-modal-scrollbar — отступ под полосу в карточках дашборда, не стили скролла.
 */
*::-webkit-scrollbar {
    width: var(--scrollbar-height);
    height: var(--scrollbar-height);
}

*::-webkit-scrollbar-button,
*::-webkit-scrollbar-button:vertical:start:decrement,
*::-webkit-scrollbar-button:vertical:end:increment,
*::-webkit-scrollbar-button:horizontal:start:decrement,
*::-webkit-scrollbar-button:horizontal:end:increment,
*::-webkit-scrollbar-button:single-button,
*::-webkit-scrollbar-button:decrement,
*::-webkit-scrollbar-button:increment {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    -webkit-appearance: none !important;
    appearance: none !important;
}

*::-webkit-scrollbar-track {
    background: var(--scrollbar-track-bg);
    border-radius: var(--scrollbar-border-radius);
}

*::-webkit-scrollbar-thumb {
    background: var(--accent-color);
    border-radius: var(--scrollbar-border-radius);
}

*::-webkit-scrollbar-thumb:hover {
    opacity: 0.8;
}

*::-webkit-scrollbar-corner {
    background: var(--scrollbar-track-bg);
}

/* Обёртка «Выделить все»: label как у остальных пунктов (grid + галочка), без линии-разделителя */
.header-filter-select-all-wrap {
    width: 100%;
    box-sizing: border-box;
}

:is(.seller-excursion-header-filter-list, .seller-provider-header-filter-list) .header-filter-select-all-wrap > .itour-checkbox-option {
    width: 100%;
}

.header-filter-select-all-option > span {
    font-weight: 500;
}

/* Grid-список accent-checkbox: фильтры в dropdown таблиц */
.viva-checkbox-grid-list .itour-checkbox-option:not(.header-filter-select-all-option) {
    padding-left: 8px;
    box-sizing: border-box;
}

.viva-checkbox-grid-list .itour-checkbox-option {
    display: grid;
    grid-template-columns: 12px minmax(0, 1fr);
    column-gap: 10px;
    align-items: center;
}

.viva-checkbox-grid-list .itour-checkbox-option > input[type="checkbox"] {
    grid-column: 1;
    grid-row: 1;
}

.viva-checkbox-grid-list .itour-checkbox-option > span {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
}

.viva-checkbox-grid-list .itour-checkbox-option:has(> input[type="checkbox"]:checked)::after {
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    justify-self: center;
    place-self: center;
    position: relative;
    left: auto;
    top: auto;
    transform: none;
    width: 8px;
    height: 8px;
}

.viva-checkbox-grid-list .header-filter-select-all-option > input[type="checkbox"]:indeterminate {
    background: transparent;
    border-color: var(--accent-color);
}

.viva-checkbox-grid-list .header-filter-select-all-option:has(> input[type="checkbox"]:indeterminate)::after {
    content: '';
    grid-column: 1;
    grid-row: 1;
    align-self: center;
    justify-self: center;
    place-self: center;
    position: relative;
    left: auto;
    top: auto;
    transform: none;
    width: 6px;
    height: 1px;
    margin: 0;
    background-color: var(--accent-color);
    -webkit-mask-image: none;
    mask-image: none;
    pointer-events: none;
    box-sizing: border-box;
}

.itour-checkbox-option {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    position: relative;
    margin: 0;
    cursor: pointer;
    --viva-checkbox-mark-x: 6px;
}

:is(
    .itour-checkbox-option input[type="checkbox"],
    .booking-messengers-dropdown-menu .messenger-option input[type="checkbox"]
) {
    appearance: none;
    -webkit-appearance: none;
    width: 12px;
    height: 12px;
    margin: 0;
    flex-shrink: 0;
    box-sizing: border-box;
    border: 1px solid var(--accent-color);
    border-radius: 3px;
    background: transparent;
    cursor: pointer;
}

.itour-checkbox-option input[type="checkbox"]:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.itour-checkbox-option:has(> input[type="checkbox"]:disabled) {
    opacity: 0.7;
    cursor: default;
}

.itour-checkbox-option span {
    font-size: 12px;
    color: var(--secondary-color);
    line-height: 1.2;
}

:is(
    .itour-checkbox-option:has(> input[type="checkbox"]:checked),
    .booking-messengers-dropdown-menu .messenger-option:has(> input[type="checkbox"]:checked)
)::after {
    content: '';
    position: absolute;
    left: var(--viva-checkbox-mark-x);
    top: 50%;
    width: 8px;
    height: 8px;
    margin: 0;
    transform: translate(-50%, -50%);
    background-color: var(--accent-color);
    -webkit-mask-image: var(--viva-checkbox-check-mask);
    mask-image: var(--viva-checkbox-check-mask);
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    pointer-events: none;
    box-sizing: border-box;
}

/* Tri-state: частичный выбор — полоска в accent-checkbox (inline-flex) */
.itour-checkbox-option:has(> input[type="checkbox"]:indeterminate) > input[type="checkbox"] {
    background: transparent;
    border-color: var(--accent-color);
}

.itour-checkbox-option:has(> input[type="checkbox"]:indeterminate)::after {
    content: '';
    position: absolute;
    left: var(--viva-checkbox-mark-x, 6px);
    top: 50%;
    width: 8px;
    height: 1px;
    margin: 0;
    transform: translate(-50%, -50%);
    background-color: var(--accent-color);
    -webkit-mask-image: none;
    mask-image: none;
    border-radius: 1px;
    pointer-events: none;
    box-sizing: border-box;
}

/* Единый switch (эталон: PES «Дата и лимит мест») */
.viva-switch {
    --viva-switch-track-w: 38px;
    --viva-switch-track-h: 18px;
    --viva-switch-thumb: 12px;
    --viva-switch-pad: 3px;
    position: relative;
    display: inline-block;
    width: var(--viva-switch-track-w);
    height: var(--viva-switch-track-h);
    flex-shrink: 0;
    vertical-align: middle;
    cursor: pointer;
}

.viva-switch-input {
    -webkit-appearance: none;
    appearance: none;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
}

.viva-switch-slider {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-color: #a8a8a8;
    border-radius: var(--viva-switch-track-h);
    transition: background-color 0.3s ease;
}

.viva-switch-slider::before {
    content: '';
    position: absolute;
    height: var(--viva-switch-thumb);
    width: var(--viva-switch-thumb);
    left: var(--viva-switch-pad);
    top: calc((var(--viva-switch-track-h) - var(--viva-switch-thumb)) / 2);
    background: #fff;
    border-radius: 50%;
    transform: translate3d(0, 0, 0);
    will-change: transform;
    transition: transform 0.34s cubic-bezier(0.22, 1, 0.36, 1);
}

.viva-switch-input:checked + .viva-switch-slider {
    background-color: #22a06b;
}

.viva-switch-input:checked + .viva-switch-slider::before {
    transform: translate3d(
        calc(var(--viva-switch-track-w) - var(--viva-switch-thumb) - (var(--viva-switch-pad) * 2)),
        0,
        0
    );
}

.viva-switch-input:focus-visible + .viva-switch-slider {
    outline: 1px solid var(--accent-color);
    outline-offset: 2px;
}

.viva-switch:has(.viva-switch-input:disabled) {
    opacity: 0.45;
    cursor: not-allowed;
}

.viva-switch-input:disabled {
    cursor: not-allowed;
}

.viva-switch-field {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0;
    font-weight: normal;
    cursor: pointer;
}

.viva-switch-field__text {
    font-size: 14px;
    color: var(--text-color);
    min-width: 0;
}

/* Табличный выбор строк — чекбоксы строго по центру колонки */
.bookings-table .data-table :is(th, td).viva-table-select-col {
    width: 44px;
    min-width: 44px;
    max-width: 44px;
    padding: 0.25rem 0;
    vertical-align: middle;
    text-align: center;
    box-sizing: border-box;
}

.viva-table-select-check {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}

.viva-table-select-check .itour-checkbox-option {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    gap: 0;
    margin: 0;
    --viva-checkbox-mark-x: 50%;
}

.viva-table-select-check .itour-checkbox-option > input[type="checkbox"] {
    flex-shrink: 0;
    margin: 0;
}

.viva-table-select-check .itour-checkbox-option > span:empty,
.viva-checkbox-grid-list .itour-checkbox-option > span:empty {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* «Выбрать все» в шапке таблицы — 14×14; строки остаются 12×12 */
.bookings-table .data-table thead .viva-table-select-col .viva-table-select-check .itour-checkbox-option > input[type="checkbox"] {
    width: 14px;
    height: 14px;
    min-width: 14px;
    min-height: 14px;
}

.bookings-table .data-table thead .viva-table-select-col .viva-table-select-check .itour-checkbox-option:has(> input[type="checkbox"]:checked)::after {
    width: 10px;
    height: 10px;
}

.viva-checkbox-grid-list {
    width: 100%;
    box-sizing: border-box;
}

/* Total PAX / time picker — см. css/booking-pax-time.css */

   АДАПТИВНАЯ ВЕРСТКА
   ========================================
   Повторяющиеся @media (один и тот же max-width) нельзя сваливать в один блок
   в начале/конце файла: порядок правил в таблице стилей важен. На ширине, где
   истинны и (max-width: 991px), и (max-width: 767px), сработают оба — победит
   то, что объявлено позже (например узкий дашборд: сначала правила ≤991px,
   затем ≤767px — см. блок «DASHBOARD RESPONSIVE»). Локальные @media у компонента
   допустимы; «осиротевшие» правило для той же точки лучше добавлять сюда,
   в уже существующий блок с тем же условием — без отрыва от соседних breakpoint.
   ======================================== */

/* ===== ПЛАНШЕТЫ (≤991px) ===== */

/* ===== МОБИЛЬНЫЕ ГОРИЗОНТАЛЬНО (≤767px) ===== */
@media (max-width: 767px) {
    /* ≤767px: скрываем гамбургер десктопного сайдбара (базовые стили — .desktop-toggler выше) */

    .content-area {
        padding: 1rem;
    }
}

/* ===== МОБИЛЬНЫЕ ВЕРТИКАЛЬНО (≤479px) ===== */
@media (max-width: 479px) {

    .form-row {
        grid-template-columns: 1fr !important;
        column-gap: 0;
        row-gap: var(--viva-form-row-gap, 1.5rem);
    }

    /* Кнопки используют единый --button-padding: 5px 30px */
}

/* Секции дашборда на всю ширину (каталог, настройки, гайды, таблицы) */
.dashboard-section--stretch {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    width: 100%;
}

.dashboard-section--stretch > .dashboard-card {
    width: 100%;
    max-width: 100%;
}

#providerSelfExcursionsCard .seller-bookings-toolbar {
    margin-bottom: 1rem;
}

/* Провайдер → «Список продавцов»: тулбар фильтров в стиле бронирований / каталога */
:is(#providerSellersListCard, #bossTeamListCard) .seller-bookings-toolbar {
    justify-content: flex-end;
    flex-wrap: wrap;
}

:is(#providerSellersListCard, #bossTeamListCard) .seller-bookings-toolbar > .seller-bookings-search-row {
    flex: 0 0 var(--viva-unified-search-min-width);
    width: var(--viva-unified-search-min-width);
}

#addProviderSelfExcursionBtn {
    white-space: nowrap;
}

#providerExcursionSettingsCard.dashboard-card--maximized .dashboard-card-heading {
    flex-shrink: 0;
}

#providerExcursionSettingsCard.dashboard-card--maximized .provider-excursion-settings-tabs {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

#providerExcursionSettingsCard.dashboard-card--maximized .provider-excursion-settings-tabs > .pes-settings-accordion {
    flex: 1;
    min-height: 0;
    min-width: 0;
    overflow: auto;
}

/* Как у .bookings-table .data-table: один горизонтальный inset у th/td — текст заголовка в колонке на одной линии с ячейками */
#providerSelfExcursionsTable th {
    padding: var(--viva-data-table-th-padding);
}

#providerSelfExcursionsTable td {
    padding: var(--viva-data-table-td-padding);
}

#providerSelfExcursionsTable th:nth-child(2),
#providerSelfExcursionsTable th:nth-child(3),
#providerSelfExcursionsTable th:nth-child(4),
#providerSelfExcursionsTable td:nth-child(2),
#providerSelfExcursionsTable td:nth-child(3),
#providerSelfExcursionsTable td:nth-child(4) {
    text-align: center;
}

/* «Мои экскурсии» (провайдер): единая линия строки, без разрывов в колонке «Действия» */
#providerSelfExcursionsTable tbody td {
    border-bottom: none;
}

#providerSelfExcursionsTable tbody tr {
    box-shadow: inset 0 -1px 0 0 var(--border-color);
}

#providerSelfExcursionsTable tbody tr:last-child {
    box-shadow: none;
}

.seller-booking-detail-body .seller-booking-detail-grid {
    gap: 1.25rem;
}

/* Textarea with floating label */
textarea.form-input {
    resize: vertical;
    min-height: 40px;
    height: 40px;
    overflow-y: hidden;
    line-height: 1.2;
    background-repeat: no-repeat;
    background-position:
        calc(100% - 4px) calc(100% - 3px),
        calc(100% - 4px) calc(100% - 3px),
        calc(100% - 4px) calc(100% - 3px);
    background-size: 14px 14px, 14px 14px, 14px 14px;
    background-image:
        linear-gradient(
            135deg,
            transparent 62%,
            var(--accent-color) 62%,
            var(--accent-color) 66%,
            transparent 66%
        ),
        linear-gradient(
            135deg,
            transparent 74%,
            var(--accent-color) 74%,
            var(--accent-color) 78%,
            transparent 78%
        ),
        linear-gradient(
            135deg,
            transparent 86%,
            var(--accent-color) 86%,
            var(--accent-color) 90%,
            transparent 90%
        );
}

/* Оставляем только кастомный уголок, скрываем нативные "серые палочки" браузера */
textarea.form-input::-webkit-resizer {
    background: transparent;
}

/* Чипсы: фильтры таблиц, вложения бронирования, подтверждение */
:is(.seller-bookings-filter-chip, .seller-booking-attachments__chip) {
    padding: var(--viva-chip-padding);
}
