/* Плеер видео тура: общие стили для отдельной страницы и модального окна.
 *
 * Раньше эти правила жили только внутри <style> в tour_video_detail.html,
 * то есть были недоступны модалке на странице тура. Вынесены в файл,
 * чтобы обе точки входа выглядели одинаково и правились в одном месте.
 */

/* Размер круглых кнопок шапки. Одно значение и для самих кнопок, и для
   крайних колонок грида - разойтись они не могут. */
.video-player-shell {
    --hdr-btn: 40px;
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    background: #000;
    overflow: hidden;
}

/* ШАПКА: прозрачная поверх видео */
.video-player-shell .video-overlay-header {
    position: absolute;
    top: 0; left: 0; right: 0;
    z-index: 100;
    /* max(), а не fallback в env(): в браузере без выреза
       env(safe-area-inset-top) равен 0, а не "не задано", поэтому
       запасные 20px из env(..., 20px) не подставлялись никогда и шапка
       прижималась к самому верху. max() даёт отступ и на обычном экране,
       и под чёлкой iPhone. */
    padding-top: calc(max(env(safe-area-inset-top, 0px), 20px) + 10px);
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 30px;
    background: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, transparent 100%);
    /* Grid, а не flex: у крайних колонок фиксированная ширина, и заголовок
       физически не может отобрать у кнопок ни пикселя. На flex со
       space-between кнопки ужимались при длинном названии и становились
       овалами, причём по-разному - ширина иконки внутри у них разная. */
    display: grid;
    grid-template-columns: var(--hdr-btn) minmax(0, 1fr) var(--hdr-btn);
    align-items: center;
    gap: 10px;
    pointer-events: none; /* чтобы не мешало управлять видео */
}

.video-player-shell .video-overlay-header a,
.video-player-shell .video-overlay-header button {
    pointer-events: auto;
}

.video-player-shell .video-title-text {
    color: #fff;
    font-size: 0.95rem;
    font-weight: 600;
    margin: 0;
    text-shadow: 0 2px 4px rgba(0,0,0,0.8);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* min-width: 0 обязателен: у грид-элемента авто-минимум равен ширине
       содержимого, и длинное название растянуло бы колонку за пределы
       экрана вместо того, чтобы обрезаться. */
    min-width: 0;
    text-align: center;
}

/* ЦЕНТР: видео во весь рост */
.video-player-shell .video-viewport {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #000;
    min-height: 0;
}

.video-player-shell .video-viewport {
    position: relative;
}

.video-player-shell .video-viewport video {
    width: 100%;
    height: 100%;
    object-fit: contain; /* сохраняет пропорции без искажений */
}

/* Запасная кнопка Play: показывается, когда браузер отклонил автозапуск.
   Крупная и по центру - системную кнопку на чёрном фоне легко не найти. */
.video-player-shell .video-play-fallback {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 84px;
    height: 84px;
    min-width: 84px;
    min-height: 84px;
    aspect-ratio: 1;
    flex-shrink: 0;
    padding: 0 0 0 6px; /* оптическая компенсация: треугольник смещён вправо */
    box-sizing: border-box;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.92);
    color: #111;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 20;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.45);
}

.video-player-shell .video-play-fallback[hidden] { display: none !important; }

.video-player-shell .video-play-fallback:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 3px;
}

/* ФУТЕР: кнопка WhatsApp */
.video-player-shell .video-overlay-footer {
    position: absolute;
    bottom: 0; left: 0; right: 0;
    z-index: 100;
    padding: 20px 15px calc(max(env(safe-area-inset-bottom, 0px), 10px) + 10px);
    background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
}

.video-player-shell .wa-order-btn {
    background: #25D366;
    color: #fff !important;
    border-radius: 14px;
    padding: 16px;
    text-decoration: none;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-weight: 800;
    font-size: 1.05rem;
    box-shadow: 0 4px 15px rgba(0,0,0,0.4);
}

/* Кнопки управления.
 *
 * Размер задан переменной: колонки грида берут её же, поэтому ширина
 * колонки и размер кнопки не могут разойтись. min-width/min-height и
 * flex-shrink: 0 - страховка на случай, если кнопку положат в
 * flex-контейнер. aspect-ratio держит квадрат, даже если высоту зададут
 * в относительных единицах.
 */
.video-player-shell .round-action-btn {
    width: var(--hdr-btn);
    height: var(--hdr-btn);
    min-width: var(--hdr-btn);
    min-height: var(--hdr-btn);
    aspect-ratio: 1;
    flex-shrink: 0;
    box-sizing: border-box;
    padding: 0;
    border-radius: 50%;
    background: rgba(255,255,255,0.15);
    border: 1px solid rgba(255,255,255,0.2);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    cursor: pointer;
}

.video-player-shell .round-action-btn:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

/* ---------------------------------------------------------------- */
/* Модальное окно поверх страницы тура                               */
/* ---------------------------------------------------------------- */

/* position: fixed, а не Bootstrap .modal: окно полноэкранное и своё,
   без диалоговой рамки и отступов. */
.video-modal {
    position: fixed;
    inset: 0;
    /* Выше плавающей кнопки WhatsApp (.whatsapp-btn, z-index: 9999) и
       мобильного меню - иначе они висят поверх видео. */
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.92);
    opacity: 0;
    transition: opacity .18s ease;
}

.video-modal[hidden] { display: none !important; }
.video-modal.is-open { opacity: 1; }

.video-modal__dialog {
    position: relative;
    width: 100%;
    height: 100%;
    /* На десктопе плеер вертикальный (ролики снимают под телефон),
       поэтому ограничиваем ширину - как на отдельной странице. */
    max-width: 500px;
    background: #000;
}

@media (min-width: 768px) {
    .video-modal__dialog {
        height: min(100%, 92vh);
        border-radius: 14px;
        overflow: hidden;
    }
}

/* Пока фрагмент грузится - короткое сообщение вместо пустоты. */
.video-modal__loading {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.7);
    font-size: 0.9rem;
}

/* Блокировка фона: position: fixed на body, чтобы iOS Safari не
   прокручивал страницу под окном. Смещение компенсируется в скрипте. */
body.video-modal-open {
    position: fixed;
    width: 100%;
    overflow: hidden;
}
