/* Текстовая заставка тура (P360.intro) */

.p360-intro {
    /* z-index выше панели инструментов PSV (у неё 90): пока заставка
       открыта, кадром никто не управляет, и полоса кнопок под затемнением
       выглядела бы как рабочая. */
    position: absolute; inset: 0; z-index: 120;
    display: flex; align-items: center; justify-content: center;
    padding: 24px; overflow: auto;
    background: rgba(6, 9, 14, .62);
    opacity: 0; transition: opacity .28s ease;
}
/* предпросмотр в кабинете показывается поверх всей страницы */
.p360-intro--page { position: fixed; background: rgba(6, 9, 14, .78); }
.p360-intro.is-open { opacity: 1; }
.p360-intro.is-closing { opacity: 0; pointer-events: none; }

/* Обложка тура фоном: сильно затемнена и размыта — она здесь настроение,
   а не картинка, которую разглядывают; читаться должен текст. */
.p360-intro__bg {
    position: absolute; inset: 0; z-index: -1;
    background-size: cover; background-position: center;
    filter: blur(3px) brightness(.42) saturate(.9); transform: scale(1.06);
}

.p360-intro__box {
    position: relative; width: min(560px, 100%);
    background: rgba(16, 20, 27, .92);
    border: 1px solid rgba(255, 255, 255, .12); border-radius: 16px;
    padding: 28px 30px 26px; color: #eef2f8; text-align: center;
    box-shadow: 0 24px 70px rgba(0, 0, 0, .55);
    backdrop-filter: blur(6px);
    transform: translateY(14px) scale(.985); transition: transform .28s ease;
}
.p360-intro.is-open .p360-intro__box { transform: none; }

.p360-intro__title { margin: 0 0 12px; font-size: 1.5rem; line-height: 1.25; }
.p360-intro__text { font-size: .96rem; line-height: 1.6; color: #c9d3e2; text-align: left; }
.p360-intro__text:empty { display: none; }
.p360-intro__text p { margin: 0 0 10px; }
.p360-intro__text p:last-child { margin-bottom: 0; }

.p360-intro__btn {
    margin-top: 22px; padding: 11px 30px; border: 0; border-radius: 10px;
    background: var(--p360-accent, #4c8dff); color: #fff; cursor: pointer;
    font: inherit; font-size: 1rem; font-weight: 600;
    transition: filter .12s ease, transform .12s ease;
}
.p360-intro__btn:hover { filter: brightness(1.1); }
.p360-intro__btn:active { transform: translateY(1px); }
.p360-intro__btn:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

/* пока заставка открыта, панель просмотрщика не должна ловить клики */
.p360-has-intro .psv-navbar,
.p360-has-intro .p360-screen-layer { pointer-events: none; }

@media (max-width: 560px) {
    .p360-intro { padding: 14px; }
    .p360-intro__box { padding: 22px 18px 20px; }
    .p360-intro__title { font-size: 1.25rem; }
}

/* ------------------------------------------------------------------ */
/* Обложка врезки: показывается до первого клика (assets/js/viewer/poster.js) */
/* ------------------------------------------------------------------ */

.p360-poster {
    position: fixed; inset: 0; z-index: 140;
    display: flex; align-items: center; justify-content: center;
    margin: 0; padding: 0; border: 0; background: #05070a;
    cursor: pointer; overflow: hidden; font: inherit; color: #eef2f8;
    transition: opacity .3s ease;
}
.p360-poster.is-gone { opacity: 0; pointer-events: none; }

.p360-poster__bg {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
    transition: transform .4s ease, filter .3s ease;
}
/* лёгкое затемнение снизу — чтобы подпись читалась на любой картинке */
.p360-poster::after {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(to bottom, rgba(0,0,0,.12) 0%, rgba(0,0,0,0) 38%, rgba(0,0,0,.62) 100%);
}
.p360-poster:hover .p360-poster__bg { transform: scale(1.03); }
.p360-poster:focus-visible { outline: 3px solid #4c8dff; outline-offset: -3px; }

.p360-poster__play {
    position: relative; z-index: 1; display: block; line-height: 0;
    filter: drop-shadow(0 6px 20px rgba(0, 0, 0, .55));
    transition: transform .18s ease, opacity .2s ease;
}
.p360-poster:hover .p360-poster__play { transform: scale(1.07); }

.p360-poster__label {
    position: absolute; left: 0; right: 0; bottom: 0; z-index: 1;
    display: flex; flex-direction: column; gap: 2px;
    padding: 14px 18px; text-align: left; text-shadow: 0 1px 3px rgba(0, 0, 0, .6);
    transition: opacity .2s ease;
}
.p360-poster__label b { font-size: 1rem; font-weight: 600; }
.p360-poster__label span { font-size: .82rem; color: #c9d3e2; }

/* Спиннер и сообщение об отказе живут в той же кнопке и включаются
   классами: пока грузится бандл, картинка остаётся на месте — подменять
   её пустотой на секунду хуже, чем оставить как есть. */
.p360-poster__spinner {
    position: absolute; z-index: 2; width: 44px; height: 44px; border-radius: 50%;
    border: 3px solid rgba(255, 255, 255, .25); border-top-color: #fff;
    animation: p360-poster-spin .8s linear infinite; display: none;
}
@keyframes p360-poster-spin { to { transform: rotate(360deg); } }

.p360-poster__failed {
    position: relative; z-index: 2; display: none; max-width: 80%;
    padding: 10px 14px; border-radius: 10px; font-size: .88rem;
    background: rgba(10, 14, 20, .85); border: 1px solid rgba(255, 255, 255, .16);
}

.p360-poster.is-loading { cursor: progress; }
.p360-poster.is-loading .p360-poster__bg { filter: brightness(.6); }
.p360-poster.is-loading .p360-poster__play,
.p360-poster.is-loading .p360-poster__label { opacity: 0; }
.p360-poster.is-loading .p360-poster__spinner { display: block; }

.p360-poster.is-failed { cursor: default; }
.p360-poster.is-failed .p360-poster__bg { filter: brightness(.45); }
.p360-poster.is-failed .p360-poster__spinner { display: none; }
.p360-poster.is-failed .p360-poster__failed { display: block; }

@media (max-width: 480px) {
    .p360-poster__play svg { width: 52px; height: 52px; }
    .p360-poster__label { padding: 10px 12px; }
    .p360-poster__label b { font-size: .92rem; }
}
