/**
 * ================================================================
 * Z-INDEX SCALE v1.0 - ESCALA CENTRALIZADA DE CAMADAS
 * ================================================================
 *
 * @description Arquivo centralizado para gerenciar z-index do ERP
 * @version 1.0.0
 * @date 2026-02-01
 * @author ERP.DOTCOMPANY
 *
 * HIERARQUIA DE CAMADAS (do menor para o maior):
 *
 * CAMADA          | Z-INDEX  | USO
 * ----------------|----------|----------------------------------------
 * Base            | 0        | Conteudo normal
 * Elevated        | 10       | Elementos levemente elevados
 * Dropdown        | 100      | Menus dropdown, autocomplete
 * Sticky          | 200      | Headers sticky, navbars fixas
 * Sidebar         | 300      | Sidebar/menu lateral
 * Overlay         | 400      | Overlays escuros
 * Modal           | 500      | Modals e dialogs
 * Popover         | 600      | Popovers e tooltips
 * Toast           | 700      | Notificacoes toast
 * Tooltip         | 800      | Tooltips
 * Loading         | 900      | Telas de carregamento
 * Maximum         | 9999     | Elementos criticos (loaders globais)
 *
 * IMPORTANTE:
 * - NUNCA use z-index arbitrarios (ex: 99999)
 * - Use as variaveis definidas aqui
 * - Se precisar de um nivel entre dois, use incrementos de 10
 *
 * ================================================================
 */

:root {
  /* ================================================================
     ESCALA PRINCIPAL DE Z-INDEX
     ================================================================ */

  /* Base - Conteudo normal */
  --z-base: 0;
  --z-below: -1;

  /* Elevated - Elementos levemente elevados */
  --z-elevated: 10;
  --z-elevated-1: 11;
  --z-elevated-2: 12;
  --z-elevated-3: 13;

  /* Dropdown - Menus dropdown, autocomplete, selects */
  --z-dropdown: 100;
  --z-autocomplete: 110;
  --z-select-options: 120;
  --z-datepicker: 130;
  --z-colorpicker: 140;

  /* Sticky - Headers sticky, navbars fixas */
  --z-sticky: 200;
  --z-sticky-header: 210;
  --z-sticky-nav: 220;
  --z-sticky-toolbar: 230;

  /* Sidebar - Menu lateral */
  --z-sidebar: 300;
  --z-sidebar-overlay: 310;
  --z-sidebar-expanded: 320;

  /* Overlay - Backgrounds escuros */
  --z-overlay: 400;
  --z-overlay-light: 410;
  --z-overlay-dark: 420;

  /* Modal - Modals e dialogs */
  --z-modal-backdrop: 500;
  --z-modal: 510;
  --z-modal-header: 520;
  --z-modal-content: 530;
  --z-modal-footer: 540;
  --z-modal-close: 550;

  /* Popover - Popovers contextuais */
  --z-popover: 600;
  --z-popover-arrow: 610;

  /* Toast - Notificacoes */
  --z-toast: 700;
  --z-toast-container: 710;
  --z-notification: 720;
  --z-alert: 730;

  /* Tooltip - Tooltips */
  --z-tooltip: 800;
  --z-tooltip-arrow: 810;

  /* Loading - Telas de carregamento */
  --z-loading: 900;
  --z-loading-overlay: 910;
  --z-loading-spinner: 920;
  --z-progress-bar: 930;

  /* Maximum - Elementos criticos */
  --z-maximum: 9999;
  --z-critical: 9999;
  --z-global-loader: 9999;

  /* ================================================================
     ALIASES SEMANTICOS
     ================================================================ */

  /* Menus */
  --z-menu: var(--z-dropdown);
  --z-context-menu: var(--z-dropdown);
  --z-submenu: calc(var(--z-dropdown) + 10);

  /* Formularios */
  --z-form-validation: var(--z-elevated);
  --z-input-icon: var(--z-elevated-1);
  --z-input-addon: var(--z-elevated-2);

  /* Navegacao */
  --z-header: var(--z-sticky-header);
  --z-navbar: var(--z-sticky-nav);
  --z-breadcrumb: var(--z-elevated);
  --z-tab-bar: var(--z-sticky);

  /* Componentes especificos */
  --z-fab: var(--z-sticky);           /* Floating Action Button */
  --z-chat-widget: var(--z-toast);    /* Widget de chat */
  --z-search-overlay: var(--z-modal); /* Busca global */

  /* Ajax/Loading */
  --z-ajax-loader: var(--z-loading);
  --z-page-loader: var(--z-maximum);
  --z-skeleton: var(--z-base);
}

/* ================================================================
   CLASSES UTILITARIAS DE Z-INDEX
   ================================================================ */

/* Base */
.z-base { z-index: var(--z-base); }
.z-below { z-index: var(--z-below); }

/* Elevated */
.z-elevated { z-index: var(--z-elevated); }
.z-elevated-1 { z-index: var(--z-elevated-1); }
.z-elevated-2 { z-index: var(--z-elevated-2); }
.z-elevated-3 { z-index: var(--z-elevated-3); }

/* Dropdown */
.z-dropdown { z-index: var(--z-dropdown); }
.z-autocomplete { z-index: var(--z-autocomplete); }
.z-select { z-index: var(--z-select-options); }
.z-datepicker { z-index: var(--z-datepicker); }

/* Sticky */
.z-sticky { z-index: var(--z-sticky); }
.z-header { z-index: var(--z-sticky-header); }
.z-navbar { z-index: var(--z-sticky-nav); }

/* Sidebar */
.z-sidebar { z-index: var(--z-sidebar); }
.z-sidebar-overlay { z-index: var(--z-sidebar-overlay); }

/* Overlay */
.z-overlay { z-index: var(--z-overlay); }
.z-overlay-light { z-index: var(--z-overlay-light); }
.z-overlay-dark { z-index: var(--z-overlay-dark); }

/* Modal */
.z-modal-backdrop { z-index: var(--z-modal-backdrop); }
.z-modal { z-index: var(--z-modal); }

/* Popover */
.z-popover { z-index: var(--z-popover); }

/* Toast */
.z-toast { z-index: var(--z-toast); }
.z-notification { z-index: var(--z-notification); }

/* Tooltip */
.z-tooltip { z-index: var(--z-tooltip); }

/* Loading */
.z-loading { z-index: var(--z-loading); }
.z-loader { z-index: var(--z-loading-spinner); }

/* Maximum */
.z-maximum { z-index: var(--z-maximum); }
.z-critical { z-index: var(--z-critical); }

/* ================================================================
   APLICACAO AUTOMATICA EM COMPONENTES CONHECIDOS
   ================================================================ */

/* Dropdowns e Menus */
.dropdown-menu,
[role="menu"],
[role="listbox"],
.autocomplete-results,
.search-results {
  z-index: var(--z-dropdown);
}

/* Selects customizados */
.select-options,
.choices__list--dropdown,
.tom-select-dropdown,
.smart-select-dropdown {
  z-index: var(--z-select-options);
}

/* Datepickers */
.flatpickr-calendar,
.datepicker,
.daterangepicker,
.smart-date-picker {
  z-index: var(--z-datepicker);
}

/* Headers e Navbars */
header,
.header,
.navbar,
nav[role="navigation"] {
  z-index: var(--z-sticky-header);
}

/* Sidebar */
aside,
.sidebar,
.menu-lateral,
.offcanvas {
  z-index: var(--z-sidebar);
}

/* Overlays */
.overlay,
.backdrop,
.modal-backdrop,
.offcanvas-backdrop {
  z-index: var(--z-overlay);
}

/* Modals */
.modal,
.dialog,
[role="dialog"],
.swal2-container {
  z-index: var(--z-modal);
}

/* Popovers */
.popover,
[role="tooltip"],
.tippy-box {
  z-index: var(--z-popover);
}

/* Toasts e Notificacoes */
.toast,
.toast-container,
.notification,
.alert-dismissible,
.swal2-toast-container {
  z-index: var(--z-toast);
}

/* Tooltips */
.tooltip,
[data-tooltip],
.bs-tooltip-auto {
  z-index: var(--z-tooltip);
}

/* Loading */
.loading-overlay,
.page-loader,
.ajax-loading,
#loading-screen {
  z-index: var(--z-loading);
}

/* Loader Global */
.global-loader,
#global-loading,
.page-loading-screen {
  z-index: var(--z-maximum);
}

/* ================================================================
   COMPONENTES ESPECIFICOS DO ERP
   ================================================================ */

/* Chat Widget MCP */
.mcp-chat-widget,
.mcp-chat-toggle {
  z-index: var(--z-chat-widget);
}

/* FAB (Floating Action Button) */
.fab,
.floating-action-button,
.btn-fab {
  z-index: var(--z-fab);
}

/* Busca Global */
#busca-global,
.search-overlay,
.global-search {
  z-index: var(--z-search-overlay);
}

/* Ajax Loader */
.ajax-loader,
.ajax-loading-indicator {
  z-index: var(--z-ajax-loader);
}

/* Smart Select */
.smart-select-container .smart-select-dropdown {
  z-index: var(--z-select-options);
}

/* Smart Date */
.smart-date-picker,
.smart-date-dropdown {
  z-index: var(--z-datepicker);
}

/* Currency Input */
.currency-dropdown,
.currency-suggestions {
  z-index: var(--z-dropdown);
}

/* Signature Pad Modal */
.signature-modal {
  z-index: var(--z-modal);
}

/* Print Overlay */
.print-overlay,
.print-loading {
  z-index: var(--z-loading);
}

/* ================================================================
   REGRAS DE STACKING CONTEXT
   ================================================================ */

/**
 * Elementos que criam novo stacking context:
 * - position: relative/absolute/fixed/sticky com z-index
 * - transform, filter, perspective
 * - opacity < 1
 * - isolation: isolate
 *
 * CUIDADO: z-index so funciona em elementos posicionados!
 */

/* Garantir que containers importantes criem stacking context */
.stacking-context {
  position: relative;
  z-index: var(--z-base);
  isolation: isolate;
}

/* Reset de z-index para evitar conflitos */
.z-auto {
  z-index: auto;
}

.z-inherit {
  z-index: inherit;
}
