/* SladMir — visibility by body[data-app-state] + body[data-shell]. Scroll lock: scroll-lock.js */

/* ── startup / booting / error: loader overlay; app shell blocked ── */
body[data-app-state="startup"] [data-mini-shell="app"],
body[data-app-state="booting"] [data-mini-shell="app"],
body[data-app-state="error"] [data-mini-shell="app"] {
  visibility: hidden;
  pointer-events: none;
}

/* ── auth: gate / pickers; app shell stays blocked ── */
body[data-app-state="auth"] [data-mini-shell="app"] {
  visibility: hidden;
  pointer-events: none;
}

body[data-app-state="startup"] #mini-auth-gate:not(.hidden),
body[data-app-state="booting"] #mini-auth-gate:not(.hidden),
body[data-app-state="error"] #mini-auth-gate:not(.hidden),
body[data-app-state="auth"] #mini-auth-gate:not(.hidden),
body[data-app-state="auth"] #mini-role-picker:not(.hidden),
body[data-app-state="auth"] #mini-club-picker:not(.hidden),
body[data-app-state="auth"] #mini-employee-club-picker:not(.hidden),
body[data-app-state="auth"] #mini-employee-module-picker:not(.hidden),
body[data-app-state="auth"] #mini-mgr-onboarding:not(.hidden),
body[data-app-state="ready"] #mini-club-picker:not(.hidden),
body[data-app-state="auth"] #mgr-club-settings-section:not(.hidden),
body[data-app-state="ready"] #mgr-club-settings-section:not(.hidden) {
  visibility: visible;
  pointer-events: auto;
}

/* ── ready: client / manager — main app shell is interactive ── */
body[data-app-state="ready"][data-shell="client"] [data-mini-shell="app"],
body[data-app-state="ready"][data-shell="manager"] [data-mini-shell="app"],
body[data-app-state="ready"][data-shell="client"] main.app,
body[data-app-state="ready"][data-shell="manager"] main.app {
  visibility: visible;
  pointer-events: auto;
}

/* ── ready: role cabinets replace client shell ── */
body[data-app-state="ready"][data-shell="supplier"] [data-mini-shell="app"],
body[data-app-state="ready"][data-shell="picker"] [data-mini-shell="app"],
body[data-app-state="ready"][data-shell="employee"] [data-mini-shell="app"] {
  visibility: hidden;
  pointer-events: none;
}

body[data-app-state="ready"][data-shell="supplier"] .mini-supplier-cabinet:not(.hidden),
body[data-app-state="ready"][data-shell="picker"] .mini-picker-cabinet:not(.hidden) {
  visibility: visible;
  pointer-events: auto;
}

/* Checkout + employee visinv may open above role shells */
body[data-app-state="booting"][data-shell="employee"] #visinv-dialog[open],
body.employee-mode[data-app-state="booting"] #visinv-dialog[open],
body[data-app-state="ready"] #mini-cart-panel:not(.hidden),
body[data-app-state="ready"] #mini-cart-backdrop:not(.hidden),
body[data-app-state="ready"] #mini-checkout-dialog[open],
body[data-app-state="ready"][data-shell="employee"] #visinv-dialog[open] {
  visibility: visible;
  pointer-events: auto;
}

/* Открытые диалоги профиля/корзины — поверх shell, даже если app-shell скрыт */
body[data-app-state="auth"] #mgr-employees-dialog[open],
body[data-app-state="auth"] #mgr-accesses-dialog[open],
body[data-app-state="ready"] dialog[data-mini-shell="app"][open],
body[data-app-state="ready"] #mini-favorites-dialog[open],
body[data-app-state="ready"] #mini-hidden-products-dialog[open],
body[data-app-state="ready"] #mini-sku-list-dialog[open],
body[data-app-state="ready"] #mini-orders-dialog[open],
body[data-app-state="ready"] #mini-unsold-dialog[open],
body[data-app-state="ready"] #mini-product-dialog[open] {
  visibility: visible !important;
  pointer-events: auto !important;
}

/* Employee entry: visinv — единственный UI, не прятать app-locks */
body.mini-employee-entry #visinv-dialog[open],
body.employee-mode #visinv-dialog[open] {
  visibility: visible !important;
  pointer-events: auto !important;
}

/* Standalone profile panels: диалог — весь экран, не ждать data-app-state=ready */
body.mini-standalone-panel-mode #mini-orders-dialog[open],
body.mini-standalone-panel-mode #visinv-dialog[open],
body.mini-standalone-panel-mode #inv-compare-dialog[open] {
  visibility: visible !important;
  pointer-events: auto !important;
}
