/**
 * ND54 — финальный слой вёрстки для всего сайта и всех кабинетов.
 * Подключать последним (после theme, role CSS, design-system).
 * Chrome, Firefox, Safari (iOS/macOS), Edge, Opera, Samsung Internet, Яндекс.Браузер.
 */

:root {
    --nd54-z-sticky: 1040;
    --nd54-z-mobile-nav: 1035;
    --nd54-z-dropdown: 1060;
    --nd54-z-modal-backdrop: 1050;
    --nd54-z-modal: 1055;
    --nd54-z-toast: 1070;
    --nd54-z-notif: 1060;
    --nd54-z-role-modal: 10080;
    --nd54-z-custom-modal: 10090;
    --nd54-mobile-nav-h: 72px;
    --nd54-shell-pad-x: max(12px, env(safe-area-inset-left, 0px));
    --nd54-shell-pad-x-right: max(12px, env(safe-area-inset-right, 0px));
    --nd54-shell-pad-bottom: max(12px, env(safe-area-inset-bottom, 0px));
}

/* --- Без горизонтального «пореза» --- */
html {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

@supports (overflow: clip) {
    html,
    body {
        overflow-x: clip;
    }
}

body {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    overflow-x: hidden;
}

#page-wraper,
.dashboard-wrapper,
.dashboard-container,
.nd54-druz-shell,
.nd54-press-dashboard,
.nd54-zayavitel-dashboard,
.cabinet-wrap,
.cabinet-wrapper,
.container,
.container-fluid {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.dashboard-wrapper,
.dashboard-container {
    padding-left: var(--nd54-shell-pad-x);
    padding-right: var(--nd54-shell-pad-x-right);
}

/* --- Sticky / header: не обрезать выпадающие меню --- */
.nd54-cab-sticky-zone,
.ruk-sticky-zone {
    overflow: visible !important;
    max-width: 100%;
}

.main-header,
.profile-header,
.nd54-druz-hero,
header.card {
    overflow: visible;
    max-width: 100%;
    min-width: 0;
}

.header-actions,
.nd54-druz-hero .d-flex {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
    max-width: 100%;
}

.header-brand {
    min-width: 0;
    flex: 1 1 auto;
}

.header-brand h1,
.header-brand h2,
.header-brand .header-tagline,
.header-brand small {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* --- Z-index: единая шкала --- */
.modal-backdrop {
    z-index: var(--nd54-z-modal-backdrop) !important;
}

.modal.fade {
    z-index: var(--nd54-z-modal) !important;
}

#roleModal.role-modal {
    z-index: var(--nd54-z-role-modal) !important;
}

#taskModalCustom.custom-modal--open {
    z-index: var(--nd54-z-custom-modal) !important;
}

#notifDropdown.dropdown-menu,
.notif-dropdown-wrap .dropdown-menu {
    z-index: var(--nd54-z-notif) !important;
}

.nd54-cab-sticky-zone .dropdown-menu,
.main-header .dropdown-menu {
    z-index: var(--nd54-z-dropdown) !important;
}

.toast-container,
.nd54-toast-stack {
    z-index: var(--nd54-z-toast) !important;
}

.nd54-cab-mobile-nav,
.ruk-mobile-nav {
    z-index: var(--nd54-z-mobile-nav);
}

/* --- Bootstrap-модалки: не ломать на мобильных --- */
.modal.fade .modal-dialog {
    margin: 1rem auto;
    max-width: min(calc(100vw - 2rem), var(--bs-modal-width, 500px));
}

.modal.fade .modal-content {
    margin: 0;
    width: auto;
    max-width: 100%;
}

.modal-body {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    max-height: min(70vh, calc(var(--nd54-vh, 1vh) * 70));
}

body.modal-open {
    overflow: hidden;
    touch-action: none;
}

/* transform на карточках ломает position:fixed у модалок */
body.modal-open .glass-card,
body.modal-open .card:hover,
body.modal-open .kpi-card,
body.modal-open .exec-card,
body.modal-open .quick-action-item {
    transform: none !important;
}

/* --- Dropdown уведомлений --- */
.notif-dropdown-wrap {
    position: relative;
}

#notifDropdown.dropdown-menu {
    width: min(420px, calc(100vw - 24px));
    max-width: min(420px, calc(100vw - 24px));
    max-height: min(70vh, calc(var(--nd54-vh, 1vh) * 70));
    overflow-y: auto;
}

.dropdown-menu {
    max-width: min(100vw - 24px, 480px);
}

/* --- Горизонтальный скролл вместо наложения --- */
.table-responsive {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.main-nav-tabs,
.sub-nav-tabs,
.workspace-tabs,
.nav-tabs,
.filter-bar .d-flex,
.executive-strip .exec-head {
    max-width: 100%;
    min-width: 0;
}

.main-nav-tabs,
.sub-nav-tabs,
.workspace-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

/* --- Toolbar / поиск --- */
.nd54-cab-toolbar,
.ruk-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
}

.nd54-cab-global-search,
.ruk-global-search {
    flex: 1 1 200px;
    min-width: 0;
    max-width: 100%;
}

.nd54-cab-global-search input,
.ruk-global-search input {
    width: 100%;
    min-width: 0;
}

/* --- Сетки кабинетов --- */
.exec-grid,
.heatmap-grid,
.premium-insights,
.row {
    max-width: 100%;
}

.section-pane,
.tab-content-main,
.tab-content,
.press-content,
.nd54-druz-shell > .container-fluid {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

/* --- Нижняя мобильная навигация + safe-area --- */
.nd54-cab-mobile-nav,
.ruk-mobile-nav {
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

@media (max-width: 991.98px) {
    body.nd54-cabinet--ruk,
    body.nd54-cabinet--druz,
    body.nd54-cabinet--press,
    body.nd54-cabinet--candidate {
        padding-bottom: calc(var(--nd54-mobile-nav-h) + var(--nd54-shell-pad-bottom) + 16px);
        scroll-padding-bottom: calc(var(--nd54-mobile-nav-h) + var(--nd54-shell-pad-bottom) + 16px);
    }

    body.nd54-cabinet--ruk .tab-content-main,
    body.nd54-cabinet--ruk #rukWorkspaceAnchor {
        scroll-margin-top: 96px;
    }

    .nd54-press-dashboard .press-shell,
    .nd54-press-dashboard .tab-content,
    .nd54-press-dashboard main {
        padding-bottom: calc(var(--nd54-mobile-nav-h) + var(--nd54-shell-pad-bottom) + 20px) !important;
    }

    .nd54-druz-dashboard .dashboard-container {
        padding-bottom: calc(var(--nd54-mobile-nav-h) + var(--nd54-shell-pad-bottom) + 12px);
    }
}

/* --- Шапка на узких экранах --- */
@media (max-width: 767.98px) {
    .main-header {
        flex-direction: column;
        align-items: stretch !important;
        text-align: left;
        padding: 16px;
        gap: 12px;
    }

    .header-actions {
        width: 100%;
        justify-content: flex-start;
    }

    .profile-header,
    .nd54-druz-hero {
        flex-direction: column;
        align-items: flex-start !important;
    }

    .filter-bar {
        flex-direction: column;
        align-items: stretch !important;
    }

    .modal-dialog {
        margin: 0.5rem auto;
        max-width: calc(100% - 1rem);
    }
}

@media (max-width: 575.98px) {
    .exec-grid {
        grid-template-columns: 1fr !important;
    }

    .premium-insights {
        grid-template-columns: 1fr !important;
    }

    .heatmap-grid {
        grid-template-columns: 1fr !important;
    }
}

@media (max-width: 991.98px) {
    .exec-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}

/* --- iOS / Safari --- */
@supports (-webkit-touch-callout: none) {
    html.nd54-site-bg,
    body.nd54-druz-dashboard,
    body.nd54-cabinet {
        background-attachment: scroll !important;
    }

    .menu {
        max-height: -webkit-fill-available;
    }
}

/* --- Чат, карточки, чипы --- */
.chat-container,
.chat-messages,
.chat-sidebar {
    min-width: 0;
    max-width: 100%;
}

.card,
.glass-card,
.premium-panel,
.kpi-card {
    max-width: 100%;
    min-width: 0;
}

.badge,
.status-chip,
.sub-nav-tab {
    max-width: 100%;
}

.preset-btn,
.nd54-hub-pill {
    max-width: none;
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: keep-all;
}

/* --- Формы на всю ширину контейнера --- */
.form-control,
.form-select,
.input-group {
    max-width: 100%;
    min-width: 0;
}

/* --- Публичный сайт: меню и футер --- */
.menu {
    max-width: 100vw;
}

.nd54-site-footer {
    padding-left: var(--nd54-shell-pad-x);
    padding-right: var(--nd54-shell-pad-x-right);
    padding-bottom: var(--nd54-shell-pad-bottom);
}

/* --- iframe / embed --- */
iframe,
embed,
object,
video {
    max-width: 100%;
}

/* --- Печать --- */
@media print {
    html.nd54-cab-fixed-header body.nd54-cabinet .nd54-cab-sticky-zone,
    html.nd54-cab-fixed-header body.nd54-cabinet .ruk-sticky-zone,
    .nd54-cab-mobile-nav,
    .ruk-mobile-nav,
    .nd54-cab-sticky-zone {
        position: static !important;
        box-shadow: none !important;
    }

    .nd54-cab-header-spacer {
        display: none !important;
        height: 0 !important;
    }

    body {
        overflow: visible !important;
        padding-bottom: 0 !important;
    }
}
