/* Общие стили */
main {
    min-height: calc(100vh - 100px);
}

/* ===== HEADER ===== */
.site-header {
    background: #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
    height: 50px;          /* как было указано */
}

.nav-pills .nav-link {
    color: #555;
}
.nav-pills .nav-link.active,
.nav-pills .nav-link:hover {
    background-color: #f8f9fa;
}

/* Пользователь справа */
.user-name { font-weight: 500; }
.avatar-img, .avatar-placeholder {
    width: 36px; height: 36px;
    object-fit: cover;
}
.avatar-placeholder {
    display:flex;
    align-items:center;
    justify-content:center;
    background:#6c757d;
    color:#fff;
    font-weight:bold;
}

/* ===== FLASH‑СООБЩЕНИЯ ===== */
#flash-messages .alert {
    border-radius: 0.5rem;
    opacity: 1;          /* начальная прозрачность для fade */
    position: fixed;
    top: 75px;                 /* сверху экрана */
    left: 50%;
    transform: translateX(-50%);
    z-index: 1040;          /* выше чем header (1030) */
}

.card {
	border-radius: 15px !important;
}

/* Стили для подвкладок системных настроек — как у других подвкладок */
#systemSettingsSubtabs.nav-tabs {
	border-bottom: 1px solid #dee2e6 !important;
}
#systemSettingsSubtabs .nav-link {
	border: 1px solid transparent;
	margin-bottom: -1px;
}
#systemSettingsSubtabs .nav-link.active,
#systemSettingsSubtabs .nav-item.show .nav-link {
	border-color: #dee2e6 #dee2e6 #fff !important; /* нижняя граница белая, как у Bootstrap */
}

/* Узкие карточки только для авторизации/форм */
.auth-card {
	max-width: 400px;
}

/* ===== Админ: Статистика / графики logs ===== */
#admin-pane-stats .logs-charts-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: 12px;
	margin-top: 0.75rem;
	align-items: stretch;
}

#admin-pane-stats .logs-chart-tile {
	border: 1px solid #dee2e6;
	border-radius: 0.5rem;
	padding: 0.5rem;
	background: #fff;
}

#admin-pane-stats .logs-chart-title {
	font-size: 0.825rem;
	color: #6c757d;
	text-align: center;
	margin-bottom: 0.25rem;
}

#admin-pane-stats .logs-chart-canvas {
	position: relative;
	height: 240px; /* фиксированная высота — убирает resize-loop */
}

#admin-pane-stats .logs-chart-canvas > canvas {
	width: 100% !important;
	height: 100% !important;
}

/* маленькие графики */
#admin-pane-stats .logs-chart-tile--sm {
	grid-column: span 12;
}
@media (min-width: 992px) {
	#admin-pane-stats .logs-chart-tile--sm { grid-column: span 6; }
}
@media (min-width: 1400px) {
	#admin-pane-stats .logs-chart-tile--sm { grid-column: span 3; } /* 4 в ряд на xxl */
}

/* большие графики (вторая строка) */
#admin-pane-stats .logs-chart-tile--lg {
	grid-column: span 12;
}
@media (min-width: 1200px) {
	#admin-pane-stats .logs-chart-tile--lg { grid-column: span 6; } /* 2 в ряд на xl+ */
}
#admin-pane-stats .logs-chart-tile--lg .logs-chart-canvas {
	height: 320px;
}

/* ===== АНИМАЦИЯ ПРОГРЕСС-БАРА ===== */
.progress-bar-animated {
    background: linear-gradient(45deg, #007bff, #0056b3, #007bff);
    background-size: 200% 200%;
    animation: progress-bar-stripes 1s linear infinite;
}

@keyframes progress-bar-stripes {
    0% {
        background-position: 200% 0;
    }
    100% {
        background-position: -200% 0;
    }
}

/* ===== HEADER ===== */
.site-header {
    position: sticky;          /* фиксируем сверху, но оставляем место для контента */
    top: 0;
    z-index: 1030;             /* выше чем остальное содержимое */
    background: #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
    height: 50px;
}

/* ===== CANVAS СТИЛИ ===== */
.canvas-container {
    height: calc(100vh - 100px); /* Высота экрана минус header */
}


#mainCanvas {
    max-width: 100% !important;
    max-height: 100% !important;
    border: 1px solid #dee2e6;
    background: #ffffff;
}

/* Фиксированная ширина canvas контейнера */
.canvas-wrapper {
    overflow: auto !important;
}

.canvas-content {
    width: 100%;
    height: 100%;
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
    align-items: center !important;
}

/* Обеспечиваем правильную работу центрального блока с Bootstrap grid */
.central-canvas-block {
    flex-shrink: 0 !important;
}

/* Исправляем проблему с footer на малых экранах */
body {
    overflow-x: auto !important;
}

/* Обеспечиваем достаточную ширину для основного layout-рядa (не трогаем строки внутри модалок) */
main > .container-fluid > .row {
    min-width: 1270px !important; /* Минимальная ширина: 250px (проекты) + 1020px (canvas) = 1270px */
}

.site-footer {
    position: relative !important;
    z-index: 100 !important;
    background: #f8f9fa !important;
    border-top: 1px solid #dee2e6 !important;
    margin-top: auto !important;
}

/* Убираем конфликты с фиксированной шириной - убираем фиксированную минимальную ширину для лучшей адаптивности */

/* ===== МОДАЛЬНЫЕ ОКНА ===== */
/* Адаптивность для модального окна обработки PSD */
#psdProcessingModal .modal-dialog {
    max-width: 90vw;
    width: 90vw;
}

@media (min-width: 992px) {
    #psdProcessingModal .modal-dialog {
        max-width: 80vw;
        width: 80vw;
    }
}

@media (min-width: 1200px) {
    #psdProcessingModal .modal-dialog {
        max-width: 70vw;
        width: 70vw;
    }
}

/* Обеспечиваем корректное отображение блоков предпросмотра */
#psdLayersPreview .row {
    margin: 0;
}

#psdLayersPreview .col-lg-3,
#psdLayersPreview .col-lg-9 {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

#psdLayersPreview .col-lg-7,
#psdLayersPreview .col-lg-5 {
    padding-left: 0.25rem;
    padding-right: 0.25rem;
}

/* Адаптивность для мобильных устройств */
@media (max-width: 768px) {
    #psdLayersPreview .col-12 {
        margin-bottom: 0.5rem;
    }
    
    #psdLayersPreview .border {
        min-height: 200px;
    }
}

/* ===== СТИЛИ ДЛЯ БЛОКА СЛОЕВ ===== */
/* Предотвращаем горизонтальную прокрутку */
.layer-item {
    word-wrap: break-word !important;
    overflow-wrap: break-word !important;
    hyphens: auto !important;
}

.layer-item .d-flex {
    flex-wrap: nowrap !important;
    min-width: 0 !important;
}
.group-item .d-flex {
    flex-wrap: nowrap !important;
    min-width: 0 !important;
}

.layer-main {
    min-width: 0 !important;
    overflow: hidden !important;
}

.layer-actions {
    flex-shrink: 0 !important;
    margin-left: 0.5rem !important;
}

.layer-actions-dropdown {
    position: relative;
    display: inline-block;
}

.layer-actions-dropdown > summary {
    list-style: none;
}

.layer-actions-dropdown > summary::-webkit-details-marker {
    display: none;
}

.layer-actions-dropdown .layer-actions-menu {
    position: absolute;
    right: 0;
    top: calc(100% + 4px);
    z-index: 40;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 0.35rem;
    padding: 0.25rem;
    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.12);
    flex-wrap: nowrap !important;
}

/* Имя слоя с переносом строк */
.layer-name {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    hyphens: none !important;
    line-height: 1.2 !important;
    flex-shrink: 1 !important;
    min-width: 0 !important;
    max-width: 100% !important;
}


/* Контейнер с кнопками */
.layer-item > div:last-child {
    flex-shrink: 0 !important;
    margin-left: 0.5rem !important;
}

/* Убираем минимальную ширину для canvas wrapper */
.canvas-wrapper {
    min-width: unset !important;
}

/* Центральный блок с фиксированной шириной */
.canvas-container {
    width: 100% !important;
    margin: 0 auto !important;
}

/* Обеспечиваем корректное отображение блоков */
.container-fluid {
    min-width: unset !important;
}

/* Блок слоев */
.stage-layers-sidebar,
[data-stage-layers-sidebar],
#layersBlock {
    overflow-x: hidden !important;
    min-width: 320px !important;
}

/* Список слоев */
.layers-list {
    overflow-x: hidden !important;
    word-wrap: break-word !important;
}

.layer-drag-grip {
    cursor: grab;
    flex-shrink: 0;
    line-height: 1;
    user-select: none;
    touch-action: none;
}

.layer-drag-grip:active {
    cursor: grabbing;
}

.layer-drag-grip-placeholder {
    display: inline-block;
    width: 1.25rem;
    flex-shrink: 0;
}

.layer-item.layer-drop-target,
.group-item.layer-drop-target {
    outline: 2px dashed #0d6efd;
    outline-offset: 2px;
    background-color: rgba(13, 110, 253, 0.06) !important;
}

/* Кнопки в блоке слоев */
.stage-layers-sidebar .btn,
[data-stage-layers-sidebar] .btn,
#layersBlock .btn {
    flex-shrink: 0 !important;
}

/* Элементы управления слоями */
.stage-layers-sidebar .d-flex.gap-1,
[data-stage-layers-sidebar] .d-flex.gap-1,
#layersBlock .d-flex.gap-1 {
    flex-wrap: nowrap !important;
    min-width: 0 !important;
}

/* Стили для групп слоев */
.group-item {
    position: relative;
    border-left: 3px solid #007bff !important;
    background: linear-gradient(90deg, #f8f9fa 0%, #ffffff 100%) !important;
}

.group-item .group-toggle {
    background: none;
    border: none;
    padding: 2px 6px;
    margin-right: 8px;
    cursor: pointer;
    color: #6c757d;
    transition: color 0.2s;
}

.group-item .group-toggle:hover {
    color: #007bff;
}

.group-item .group-toggle i {
    transition: transform 0.2s;
}

.group-item.collapsed .group-toggle i {
    transform: rotate(-90deg);
}

/* Стили для вложенных слоев */
.layer-item[data-parent-group] {
    position: relative;
    border-left: 2px solid #dee2e6 !important;
    background: #f8f9fa !important;
    margin-left: 20px !important;
}

/* ===== СТИЛИ ДЛЯ ВРЕМЕННОЙ ШКАЛЫ ===== */
.timeline-block {
    background-color: #f8f9fa !important;
    border: 1px solid #dee2e6 !important;
    border-radius: 0.375rem !important;
}

.timeline-block h6 {
    color: #495057 !important;
    font-weight: 600 !important;
}

.timeline-content {
    min-height: 60px;
}

.layer-item[data-parent-group]::before {
    content: '';
    position: absolute;
    left: -2px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: #dee2e6;
}

.layer-item[data-parent-group]:last-child::before {
    height: 50%;
}

.layer-item[data-parent-group]::after {
    content: '';
    position: absolute;
    left: -2px;
    top: 50%;
    width: 10px;
    height: 2px;
    background: #dee2e6;
}

/* Скрытие вложенных слоев при сворачивании группы */
.group-item.collapsed + .layer-item[data-parent-group] {
    display: none;
}

.group-item.collapsed ~ .layer-item[data-parent-group] {
    display: none;
}

/* ===== СТИЛИ ДЛЯ ВКЛАДОК СТАДИЙ ===== */
#stagesTabContent {
    position: relative;
    overflow: hidden;
}

/* Скрываем все вкладки по умолчанию */
#stagesTabContent .tab-pane {
    display: none !important;
    width: 100%;
    height: 100%;
}

/* Показываем только активную вкладку */
#stagesTabContent .tab-pane.active {
    display: block !important;
}

#stagesTabContent .tab-pane.show {
    display: block !important;
}

/* Убеждаемся, что активная вкладка занимает всё пространство */
#stagesTabContent .tab-pane.active.show {
    display: block !important;
}