/* board.css — стили для коллаборативной доски (Miro-аналог). */

/* ── Иконка "Доски" в левом рейле ─────────────────────────────────────────── */
.app-rail-item--boards { color: var(--text-secondary, #b9bbbe); }
.app-rail-item--boards:hover { color: #a0e9b5; background: rgba(160, 233, 181, 0.12); }
.app-rail-item--boards.app-rail-item--active { color: #a0e9b5; background: rgba(160, 233, 181, 0.18); }

/* ── Каталог досок (/boards) ──────────────────────────────────────────────── */
.boards-page {
    padding: 24px 32px;
    max-width: 1400px;
    margin: 0 auto;
    color: var(--text-primary, #f0f2f5);
}
.boards-header {
    display: flex; align-items: center; gap: 12px;
    margin-bottom: 24px;
}
.boards-back-btn {
    background: transparent; border: 0; color: var(--text-secondary, #b9bbbe);
    cursor: pointer; padding: 4px; border-radius: 6px;
    display: inline-flex; align-items: center; justify-content: center;
}
.boards-back-btn:hover { background: rgba(255,255,255,0.06); color: var(--text-primary, #f0f2f5); }
.boards-title { font-size: 22px; font-weight: 700; margin: 0; }
.boards-header-actions { margin-left: auto; display: flex; gap: 12px; align-items: center; }
.boards-limit-badge {
    background: rgba(88,101,242,0.18); color: #a8b3ff; padding: 4px 10px;
    border-radius: 12px; font-size: 12px; font-weight: 500;
}

.boards-btn {
    background: rgba(255,255,255,0.06); color: var(--text-primary, #f0f2f5);
    border: 0; padding: 8px 16px; border-radius: 6px; font-size: 14px;
    cursor: pointer; transition: background .15s;
}
.boards-btn:hover { background: rgba(255,255,255,0.12); }
.boards-btn:disabled { opacity: .5; cursor: not-allowed; }
.boards-btn--primary { background: #5865f2; color: white; }
.boards-btn--primary:hover { background: #4752c4; }

.boards-plan-banner {
    background: linear-gradient(135deg, #2d3044 0%, #5865f2 100%);
    border-radius: 14px; padding: 32px; display: flex; gap: 24px;
    align-items: center; margin-bottom: 24px;
}
.boards-plan-icon { font-size: 64px; line-height: 1; }
.boards-plan-text h2 { margin: 0 0 8px; font-size: 22px; }
.boards-plan-text p { margin: 0 0 16px; color: rgba(255,255,255,.85); font-size: 14px; }

.boards-loading, .boards-empty {
    text-align: center; padding: 48px 16px;
    color: var(--text-secondary, #72767d); font-size: 15px;
}
.boards-empty-emoji { font-size: 56px; margin-bottom: 16px; }
.boards-empty .boards-btn { margin-top: 18px; }

.boards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 16px;
}
.boards-card {
    background: var(--bg-secondary, #1e2029); border: 1px solid var(--border-color, #2d3044);
    border-radius: 10px; overflow: hidden; cursor: pointer;
    transition: transform .15s, box-shadow .15s;
    position: relative;
}
.boards-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.32); }
.boards-card-preview {
    aspect-ratio: 16/10;
    background: linear-gradient(135deg, #2a2d3e 0%, #1a1d2e 100%);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;
}
.boards-card-preview img { width: 100%; height: 100%; object-fit: cover; }
.boards-card-placeholder { font-size: 56px; opacity: .35; }
.boards-card-body { padding: 12px 14px; }
.boards-card-title { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.boards-card-meta { display: flex; gap: 10px; font-size: 12px; color: var(--text-secondary, #72767d); }
.boards-card-role { background: rgba(88,101,242,.18); color: #a8b3ff; padding: 2px 8px; border-radius: 8px; }
.boards-card-date { margin-left: auto; }
.boards-card-del {
    position: absolute; top: 8px; right: 8px;
    width: 28px; height: 28px; border-radius: 50%; border: 0;
    background: rgba(0,0,0,.5); color: white; font-size: 18px; cursor: pointer;
    opacity: 0; transition: opacity .15s;
}
.boards-card:hover .boards-card-del { opacity: 1; }
.boards-card-del:hover { background: #d93b3b; }

.boards-error {
    margin-top: 16px; padding: 10px 14px;
    background: rgba(217,59,59,.15); color: #ff8585; border-radius: 6px; font-size: 13px;
}

/* ── Редактор доски (/boards/{id}) ────────────────────────────────────────── */
.board-editor {
    display: flex; flex-direction: column;
    height: 100%; width: 100%; min-height: 0;
    background: var(--bg-primary, #15171f);
    color: var(--text-primary, #f0f2f5);
}
.board-loading {
    flex: 1; display: flex; align-items: center; justify-content: center;
    color: var(--text-secondary, #72767d);
}
.board-editor-topbar {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 16px;
    background: var(--bg-secondary, #1e2029);
    border-bottom: 1px solid var(--border-color, #2d3044);
}
.board-btn-icon {
    background: transparent; border: 0; color: var(--text-secondary, #b9bbbe);
    width: 32px; height: 32px; border-radius: 6px; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
}
.board-btn-icon:hover { background: rgba(255,255,255,0.08); color: var(--text-primary, #f0f2f5); }
.board-title { margin: 0; font-size: 15px; font-weight: 600; cursor: pointer; }
.board-title:hover { opacity: 0.85; }
.board-title-input {
    font-size: 15px; font-weight: 600;
    background: transparent; border: 1px solid var(--border-color, #2d3044);
    color: inherit; padding: 4px 10px; border-radius: 4px; min-width: 220px;
}
.board-topbar-spacer { flex: 1; }
.board-btn {
    background: rgba(255,255,255,0.08); color: var(--text-primary, #f0f2f5);
    border: 0; padding: 6px 12px; border-radius: 6px; cursor: pointer; font-size: 13px;
}
.board-btn:hover { background: rgba(255,255,255,0.14); }
.board-btn-primary { background: #5865f2; color: white; }
.board-btn-primary:hover { background: #4752c4; }

.board-editor-main {
    flex: 1; display: flex; min-height: 0;
}

/* ── Холст ─────────────────────────────────────────────────────────────────── */
.board-canvas {
    flex: 1; min-width: 0; min-height: 0;
    background:
        radial-gradient(circle at 10px 10px, rgba(255,255,255,0.04) 1px, transparent 1px),
        var(--bg-primary, #15171f);
    background-size: 20px 20px;
    cursor: default;
    user-select: none;
    touch-action: none;
}

/* ── Toolbar ───────────────────────────────────────────────────────────────── */
.board-toolbar {
    display: flex; flex-direction: column;
    background: var(--bg-secondary, #1e2029);
    border-right: 1px solid var(--border-color, #2d3044);
    width: 52px; flex-shrink: 0;
    position: relative; overflow: visible;
}
.board-toolbar-scroll {
    display: flex; flex-direction: column; gap: 4px;
    align-items: center;
    padding: 8px 6px;
    overflow-y: auto; overflow-x: hidden;
    flex: 1;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.08) transparent;
}
.board-tool {
    width: 38px; height: 38px; border-radius: 8px;
    background: transparent; border: 0; cursor: pointer;
    color: var(--text-secondary, #b9bbbe);
    display: flex; align-items: center; justify-content: center;
    transition: background .12s, color .12s;
    padding: 0;
}
.board-tool:hover { background: rgba(255,255,255,0.08); color: var(--text-primary, #f0f2f5); }
.board-tool--active { background: rgba(88,101,242,0.22); color: #a8b3ff; }
.board-tool--color, .board-tool--width-wrap { position: relative; }
.board-tool--color input[type=color] {
    position: absolute; inset: 0; opacity: 0; cursor: pointer;
    border: 0; padding: 0;
}
.board-tool-color-dot {
    width: 22px; height: 22px; border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.6);
    pointer-events: none;
}
.board-tool--width-wrap { padding: 0; }
.board-tool--width-wrap > .board-tool {
    position: relative;
}
.board-tool-width-badge {
    position: absolute; bottom: 0; right: 2px;
    background: #5865f2; color: white;
    font-size: 9px; font-weight: 700;
    padding: 1px 4px; border-radius: 6px;
    line-height: 1;
}
.board-width-popover {
    background: var(--bg-secondary, #1e2029);
    border: 1px solid var(--border-color, #2d3044);
    border-radius: 8px;
    padding: 12px; width: 200px;
    z-index: 200;
    box-shadow: 0 6px 18px rgba(0,0,0,.4);
    display: flex; flex-direction: column; gap: 10px;
}
.board-width-popover-preview {
    height: 40px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,.25);
    border-radius: 6px;
}
.board-width-popover-dot {
    border-radius: 50%;
    max-width: 60px; max-height: 60px;
    min-width: 4px; min-height: 4px;
}
.board-width-popover input[type=range] {
    width: 100%;
    accent-color: #5865f2;
}
.board-width-popover-presets {
    display: flex; gap: 4px;
}
.board-width-popover-presets button {
    flex: 1; background: rgba(255,255,255,.06);
    color: var(--text-secondary, #b9bbbe);
    border: 0; padding: 6px 0; border-radius: 4px;
    font-size: 12px; cursor: pointer;
}
.board-width-popover-presets button:hover { background: rgba(255,255,255,.12); }
.board-width-popover-presets button.sel { background: rgba(88,101,242,.3); color: #a8b3ff; }
.board-tool--danger:hover { color: #ff8585; }

/* ── Группа «Фигуры» в тулбаре ─────────────────────────────────────────── */
.board-tool--shapes-wrap { position: relative; padding: 0; }
.board-tool--shapes-wrap > .board-tool { width: 100%; height: 100%; position: relative; }
.board-tool-shape-caret {
    position: absolute; right: 2px; bottom: 0;
    font-size: 9px; opacity: 0.6; line-height: 1;
    pointer-events: none;
}
.board-shape-popover {
    background: var(--bg-secondary, #1e2029);
    border: 1px solid var(--border-color, #2d3044);
    border-radius: 8px;
    padding: 6px;
    z-index: 200;
    box-shadow: 0 6px 18px rgba(0,0,0,.4);
    display: grid;
    grid-template-columns: repeat(2, 36px);
    grid-auto-rows: 36px;
    gap: 4px;
}
.board-shape-popover-btn {
    display: flex; align-items: center; justify-content: center;
    background: transparent;
    color: var(--text-secondary, #b9bbbe);
    border: 0; border-radius: 4px;
    cursor: pointer; padding: 0;
    width: 36px; height: 36px;
}
.board-shape-popover-btn:hover { background: rgba(255,255,255,.08); color: var(--text-primary, #f0f2f5); }
.board-shape-popover-btn.sel { background: rgba(88,101,242,.3); color: #a8b3ff; }

/* ── Inline-редактор для стикеров и текста на доске ─────────────────────── */
.board-inline-editor {
    box-sizing: border-box;
    border: 2px solid #5865f2;
    outline: none;
    resize: none;
    overflow: auto;
    line-height: 1.2;
    font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
    box-shadow: 0 4px 16px rgba(0,0,0,.35);
}

.board-toolbar-sep {
    width: 28px; height: 1px;
    background: var(--border-color, #2d3044);
    margin: 6px 0;
}

/* ── Presence (аватары участников) ─────────────────────────────────────────── */
.board-presence { display: flex; gap: 4px; align-items: center; }
.board-presence-item { position: relative; }
.board-presence-av {
    width: 28px; height: 28px; border-radius: 50%;
    background: var(--bg-tertiary, #2d3044);
    border: 2px solid #5865f2;
    overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; font-weight: 600; color: var(--text-primary, #f0f2f5);
}
.board-presence-av img { width: 100%; height: 100%; object-fit: cover; }
.board-presence-role {
    position: absolute; bottom: -2px; right: -2px;
    width: 14px; height: 14px; font-size: 10px;
    background: var(--bg-secondary, #1e2029);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
}

/* ── Share modal ───────────────────────────────────────────────────────────── */
.board-modal-backdrop {
    position: fixed; inset: 0; background: rgba(0,0,0,.65); z-index: 1000;
    display: flex; align-items: center; justify-content: center;
}
.board-modal {
    background: var(--bg-secondary, #1e2029);
    border: 1px solid var(--border-color, #2d3044);
    border-radius: 12px; width: 100%; max-width: 480px;
    max-height: 84vh; overflow-y: auto;
    box-shadow: 0 24px 64px rgba(0,0,0,.5);
}
.board-modal-head {
    display: flex; align-items: center; padding: 16px 20px;
    border-bottom: 1px solid var(--border-color, #2d3044);
}
.board-modal-head h3 { margin: 0; font-size: 16px; flex: 1; }
.board-modal-close {
    background: transparent; border: 0; font-size: 24px; line-height: 1;
    color: var(--text-secondary, #b9bbbe); cursor: pointer;
}
.board-modal-body { padding: 20px; }
.board-share-row { margin-bottom: 16px; }
.board-share-row > label { display: block; font-size: 12px; font-weight: 600; color: var(--text-secondary, #b9bbbe); margin-bottom: 6px; }
.board-share-row > label input[type=checkbox] { margin-right: 8px; }
.board-share-row select {
    width: 100%; padding: 8px 10px;
    background: var(--bg-tertiary, #2d3044); border: 1px solid var(--border-color, #2d3044);
    color: var(--text-primary, #f0f2f5); border-radius: 6px; font-size: 14px;
}
.board-share-row small { display: block; margin-top: 4px; font-size: 11px; color: var(--text-secondary, #72767d); }

.board-share-list-title { font-size: 12px; font-weight: 600; color: var(--text-secondary, #b9bbbe); margin: 8px 0; }
.board-share-list { list-style: none; padding: 0; margin: 0; }
.board-share-list li {
    background: var(--bg-tertiary, #2d3044); padding: 8px 10px; border-radius: 6px; margin-bottom: 8px;
    font-size: 12px;
}
.board-share-list input {
    width: 100%; padding: 6px 8px; font-size: 12px;
    background: rgba(0,0,0,.25); border: 0; color: var(--text-primary, #f0f2f5); border-radius: 4px;
    cursor: pointer; margin-bottom: 6px;
}
.board-share-meta { display: block; color: var(--text-secondary, #72767d); font-size: 11px; margin: 4px 0; }
.board-btn-mini {
    background: transparent; border: 1px solid var(--border-color, #444);
    color: var(--text-secondary, #b9bbbe); padding: 3px 8px; border-radius: 4px;
    font-size: 11px; cursor: pointer;
}
.board-btn-mini:hover { color: #ff8585; border-color: #d93b3b; }

/* ── Guest prompt (/b/{token}) ─────────────────────────────────────────────── */
.board-guest-prompt {
    margin: auto; max-width: 460px; padding: 32px;
    background: var(--bg-secondary, #1e2029); border: 1px solid var(--border-color, #2d3044);
    border-radius: 12px; text-align: center;
}
.board-guest-prompt h2 { margin: 0 0 12px; font-size: 18px; }
.board-guest-prompt p { color: var(--text-secondary, #b9bbbe); font-size: 13px; margin-bottom: 16px; }
.board-guest-name {
    width: 100%; padding: 10px 14px;
    background: var(--bg-tertiary, #2d3044); border: 1px solid var(--border-color, #2d3044);
    color: var(--text-primary, #f0f2f5); border-radius: 6px; font-size: 15px;
    margin-bottom: 16px;
}
.board-guest-color-row {
    display: flex; gap: 6px; align-items: center;
    justify-content: center; font-size: 12px;
    color: var(--text-secondary, #b9bbbe);
    margin-bottom: 18px;
}
.board-guest-color {
    width: 24px; height: 24px; border-radius: 50%; border: 2px solid transparent;
    cursor: pointer; padding: 0;
}
.board-guest-color--sel { border-color: white; }
.board-guest-badge {
    background: rgba(217, 119, 6, .18); color: #fbbf24;
    padding: 3px 10px; border-radius: 8px; font-size: 11px;
}

/* ── Адаптивность: на узком экране тулбар внизу ────────────────────────────── */
@media (max-width: 640px) {
    .board-editor-main { flex-direction: column-reverse; }
    .board-toolbar {
        flex-direction: row; width: 100%; height: auto;
        border-right: 0; border-top: 1px solid var(--border-color, #2d3044);
        flex-shrink: 0;
    }
    .board-toolbar-scroll {
        flex-direction: row;
        overflow-x: auto; overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        padding: 6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
        padding-left: max(8px, env(safe-area-inset-left, 0px));
        padding-right: max(8px, env(safe-area-inset-right, 0px));
        gap: 2px;
        flex: unset; width: 100%;
    }
    /* Крупные touch-таргеты: 44×44 минимум по HIG */
    .board-tool {
        width: 44px; height: 44px; border-radius: 10px;
        flex-shrink: 0;
    }
    .board-tool svg { width: 22px; height: 22px; }
    .board-tool-color-dot { width: 26px; height: 26px; }
    .board-tool-width-badge { font-size: 10px; padding: 1px 5px; }
    .board-tool-shape-caret { font-size: 10px; right: 3px; bottom: 1px; }

    .board-toolbar-sep { width: 1px; height: 32px; margin: 0 4px; flex-shrink: 0; }

    /* Поповеры: позиция задаётся через inline style (position:fixed), здесь только размеры */
    .board-shape-popover {
        grid-template-columns: repeat(3, 44px);
        grid-auto-rows: 44px;
        padding: 8px; gap: 6px;
    }
    .board-shape-popover-btn { width: 44px; height: 44px; }
    .board-shape-popover-btn svg { width: 22px; height: 22px; }
    .board-width-popover { width: 240px; padding: 14px; }
    .board-width-popover-presets button { padding: 10px 0; font-size: 13px; }

    /* Топбар — компактнее, без переноса */
    .board-editor-topbar {
        padding: 6px 8px;
        padding-top: calc(6px + env(safe-area-inset-top, 0px));
        padding-left: max(8px, env(safe-area-inset-left, 0px));
        padding-right: max(8px, env(safe-area-inset-right, 0px));
        gap: 6px;
        flex-wrap: nowrap;
        overflow: hidden;
    }
    .board-btn-icon { width: 36px; height: 36px; flex-shrink: 0; }
    .board-title {
        font-size: 14px;
        white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
        flex: 1; min-width: 0;
    }
    .board-title-input { font-size: 14px; min-width: 0; flex: 1; }
    .board-topbar-spacer { flex: 0; min-width: 0; }
    .board-btn {
        padding: 8px 10px; font-size: 12px; flex-shrink: 0;
        min-height: 36px;
    }
    .board-presence-av { width: 24px; height: 24px; font-size: 10px; }
    .board-presence {
        max-width: 90px;
        overflow: hidden;
        flex-shrink: 1;
    }
}

/* Очень узкие экраны — экспорт-кнопке оставляем только иконку */
@media (max-width: 420px) {
    .board-editor-topbar .board-btn { padding: 8px; }
}
