/* css/v5-dialog.css */

/* ============================================================
   DIALOG — все модальные окна
   Разновидности: dialog, hint, splash, tutorial
   ============================================================ */

/* ============================================================
   БАЗА
   ============================================================ */

.v5-dialog {
    border: none;
    padding: 0;
    background: transparent;
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    max-width: 100vw;
    max-height: 100vh;
    max-height: 100dvh;
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.v5-dialog::backdrop {
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    animation: v5-backdrop-in 0.2s ease;
}

.v5-dialog-content {
    display: flex;
    flex-direction: column;
    background: var(--v5-primary-light);
    border-radius: var(--v5-radius);
    padding: 0;
    box-shadow: var(--v5-shadow);
    animation: v5-dialog-in 0.2s ease;
    font-size: var(--v5-font-normal);
    overscroll-behavior: contain;
    width: 90vmin;
    height: auto;
    max-height: 90vh;
    max-height: 90dvh;
    max-height: 90svh;
    overflow: hidden;
}



/* Для tutorial — почти полный экран */
.v5-dialog-content--full {
    width: 95%;
    height: 95%;
    max-width: 95%;
    max-height: 95%;
}

/* ============================================================
   АНИМАЦИИ
   ============================================================ */

@keyframes v5-dialog-in {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes v5-backdrop-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes v5-spin {
    to { transform: rotate(360deg); }
}

/* ============================================================
   SPLASH — специфика заставки
   ============================================================ */

.v5-splash-animation {
    backdrop-filter: blur(2px);
    color: #b7d0f0;
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: var(--v5-font-normal);
    line-height: 1.25;
    padding: var(--v5-padding);
    white-space: pre;
    text-align: center;
    width: 90%;
    max-width: 460px;
    min-height: 120px;
    max-height: 180px;
    overflow: auto;
    flex-shrink: 0;
}

.v5-splash-loader {
    width: calc(40px * var(--v5-scale));
    height: calc(40px * var(--v5-scale));
    border: 3px solid rgba(255, 255, 255, 0.2);
    border-top-color: var(--v5-white);
    border-radius: 50%;
    animation: v5-spin 0.9s linear infinite;
    flex-shrink: 0;
}

.v5-splash-progress-container {
    width: calc(200px * var(--v5-scale));
    height: calc(4px * var(--v5-scale));
    background: rgba(255, 255, 255, 0.15);
    border-radius: calc(4px * var(--v5-scale));
    overflow: hidden;
    flex-shrink: 0;
}

.v5-splash-progress-bar {
    width: 0%;
    height: 100%;
    background: #7aa2ff;
    border-radius: calc(4px * var(--v5-scale));
    transition: width 0.3s ease;
}

/* ============================================================
   TUTORIAL — специфика туториала
   ============================================================ */

.v5-tutorial-nav {
    width: 40vmin;
    min-width: calc(120px * var(--v5-scale));
    /*max-width: calc(280px * var(--v5-scale));*/
    flex-shrink: 0;
    background: var(--v5-info-bg);
    border-right: var(--v5-border-width) solid var(--v5-info-base);
    overflow-y: auto;
    padding: var(--v5-padding);
}

.v5-tutorial-chapter {
    padding: calc(10px * var(--v5-scale)) calc(16px * var(--v5-scale));
    cursor: pointer;
    border-radius: var(--v5-radius);
    color: var(--v5-info-base);
    font-size: var(--v5-font-normal);
    transition: background 0.2s;
}

.v5-tutorial-chapter:hover {
    background: var(--v5-info-light);
}

.v5-tutorial-chapter.v5-active {
    background: var(--v5-info-hover);
    color: var(--v5-white);
}

.v5-tutorial-section {
    padding: calc(6px * var(--v5-scale)) calc(16px * var(--v5-scale));
    cursor: pointer;
    border-radius: var(--v5-radius);
    color: var(--v5-info-hover);
    font-size: var(--v5-font-normal);
    transition: background 0.2s;
}

.v5-tutorial-section:hover {
    background: var(--v5-info-light);
}

.v5-tutorial-section.v5-active {
    background: var(--v5-info-light);
    color: var(--v5-info-base);
    font-weight: 500;
}



/* ============================================================
   SPLASH — заставка (НЕ модальное окно)
   ============================================================ */

.v5-splash-screen {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--v5-primary-dark);
    transition: opacity 0.6s ease;
}

.v5-splash-screen.v5-hidden {
    opacity: 0;
    pointer-events: none;
}

.v5-splash-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: var(--v5-white);
    padding: var(--v5-gap-normal);
    gap: var(--v5-gap-normal);
    box-sizing: border-box;
    animation: v5-splash-fade-in 0.6s ease;
    width: 90vmin;
    height: 90vh;

    min-height: 90vh;
    min-width: 90vmin;
    max-height: 90vh;
    max-width: 90vmin;

    overflow: hidden;
    position: relative;
}

.v5-splash-logo {
    width: calc(64px * var(--v5-scale));
    height: calc(64px * var(--v5-scale));
    flex-shrink: 0;
    animation: v5-splash-logo-pulse 1.8s ease-in-out infinite;
}

/* ============================================================
   ФУТЕР МОДАЛКИ — учёт safe-area (iPhone home-индикатор)
   ============================================================ */

.v5-dialog .v5-frame-footer {
    padding-bottom: calc(var(--v5-padding) + env(safe-area-inset-bottom, 0px));
}


/* ============================================================
   TUTORIAL — выезжающая панель с ярлычком (портрет)
   ============================================================ */

.v5-tutorial-body {
    position: relative;
}

.v5-tutorial-nav-wrap {
    display: flex;
    flex-direction: row;
    height: 100%;
    flex-shrink: 0;
}

/* ============================================================
   ЯРЛЫЧОК
   ============================================================ */

.v5-tutorial-nav-handle {
    display: none;
    flex-shrink: 0;
    width: calc(28px * var(--v5-scale));
    background: var(--v5-info-bg);
    border: var(--v5-border-width) solid var(--v5-info-base);
    border-left: none;
    border-radius: 0 var(--v5-radius) var(--v5-radius) 0;
    cursor: pointer;
    user-select: none;
    align-items: center;
    justify-content: center;
    color: var(--v5-info-base);
    transition: background 0.2s;
}

.v5-tutorial-nav-handle:hover {
    background: var(--v5-info-light);
}

.v5-tutorial-nav-handle-icon {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    line-height: 1;
    letter-spacing: 2px;
    font-size: calc(16px * var(--v5-scale));
}

/* ============================================================
   BACKDROP
   ============================================================ */

.v5-tutorial-backdrop {
    display: none;
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 5;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
}

.v5-tutorial-backdrop.v5-active {
    opacity: 1;
    pointer-events: auto;
}

/* ============================================================
   ПОРТРЕТ — панель уезжает, ярлычок остаётся
   ============================================================ */

/* ============================================================
   ПОРТРЕТ — панель сжимается до ширины ярлычка, контент рядом
   ============================================================ */

@media (orientation: portrait) {
    .v5-tutorial-nav-wrap {
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        z-index: 10;
        display: flex;
        flex-direction: row;
        transform: translateX(calc(-100% + 28px * var(--v5-scale)));
        transition: transform 0.25s ease;
        box-shadow: 4px 0 12px rgba(0, 0, 0, 0.2);
    }

    .v5-tutorial-nav-wrap.v5-tutorial-nav-wrap--open {
        transform: translateX(0);
    }

    .v5-tutorial-nav {
        position: static;
        width: min(80vw, 320px);
        min-width: 0;
        transform: none;
        height: 100%;
        flex-shrink: 0;
        scrollbar-width: thin;
        scrollbar-gutter: stable;
    }

    .v5-tutorial-nav::-webkit-scrollbar {
    width: var(--v5-scrollbar-width);
}

.v5-tutorial-nav::-webkit-scrollbar-track {
    background: transparent;
}

.v5-tutorial-nav::-webkit-scrollbar-thumb {
    background: var(--v5-primary-secondary);
    border-radius: calc(var(--v5-scrollbar-width) / 2);
}

.v5-tutorial-nav::-webkit-scrollbar-thumb:hover {
    background: var(--v5-primary-base);
}

    .v5-tutorial-nav-handle {
        display: flex;
        flex-shrink: 0;
        height: 100%;
        width: calc(28px * var(--v5-scale));
    }

    .v5-tutorial-content {
        padding-left: calc(28px * var(--v5-scale) + var(--v5-gap-normal));
        padding-right: var(--v5-gap-normal);
    }

    .v5-tutorial-backdrop {
        display: block;
    }
}


/* ============================================================
   АНИМАЦИИ SPLASH
   ============================================================ */

@keyframes v5-splash-fade-in {
    from { opacity: 0; transform: scale(0.92); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes v5-splash-logo-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.06); }
}