/**
 * Third-Party Z-Index Fixes - Override layer per plugin esterni
 * ============================================
 * Version: v32.1.0 | Apr 2026 — Admin: `body.admin-app` incluso con `:is(.admin-app,.admin-area)` (prima solo `.admin-area` sul body).
 *
 * ✅ CLEANUP: Ridotti gli override a priorità massima aumentando la specificità CSS
 * ✅ Mantenuti solo dove necessario (inline styles da JS)
 *
 * CONFLITTI E MOTIVI DEGLI OVERRIDE:
 *
 * | Plugin     | Selezione           | Default     | Problema                    | Forzatura |
 * |------------|---------------------|-------------|-----------------------------|------------|
 * | Toastr     | #toast-container    | 999999      | Copre tutto (navbar, modali)| Solo fallback |
 * | Select2    | .select2-dropdown   | 1051 (vendor, overridden to 1044 outside modals) | Sopra modali (1055) | Solo fallback |
 * | DataTables | div.dtr-modal       | 100-102     | Responsive child rows       | Sì (inline) |
 * | DataTables | div.dt-button-info  | 2003        | Copre tutto                 | Sì (inline) |
 * | Fancybox   | .fancybox__container| 9999 (JS)   | Solo root; no backdrop      | Sì (inline) |
 * | Summernote | .note-editor.fullscr| 1050        | Fullscreen editor           | Solo fallback |
 *
 * STRATEGIA:
 * - Aumentata specificità CSS per Select2, Summernote, Toastr (body.owner-area, body:is(.admin-app,.admin-area))
 * - Mantenuta priorità massima solo per override inline ([style*="z-index"])
 * - Mantenuta per DataTables e Fancybox (inline styles da JS)
 *
 * ORDINE CARICAMENTO: dopo `z-index-registry` / `modal-stack-unified` (vedi `css-final-overrides` o `admin-final-overrides`).
 * Toastr CSS vendor, se presente, dopo questo file.
 *
 * Se toastr.css viene caricato dopo, la specificità aumentata dovrebbe essere sufficiente.
 * Fallback con priorità massima solo per elementi con inline styles.
 *
 * Registry numerici SSOT: public/assets/css/design-tokens.css (--z-modal, --z-dropdown, …).
 * Non introdurre z-index numerici raw nei fogli owner/guest; usare var(--z-*) o questo file per plugin.
 *
 * GOVERNANCE (PR policy): niente nuove regole forzate senza commento inline (vendor/plugin + motivo).
 * Preferire specificità o selettori attributo prima di aggiungere priorità massima.
 */

/* ========================================================================
   1. DataTables Responsive Modal (100, 101, 102) - MINIMAL OVERRIDE
   ======================================================================== */

/* ✅ FIX: DataTables modals — specificità alta; priorità massima solo per inline style */
/* DataTables responsive modal display (content area) */
body.owner-area div.dtr-modal div.dtr-modal-display,
body:is(.admin-app, .admin-area) div.dtr-modal div.dtr-modal-display,
.owner-tables-container div.dtr-modal div.dtr-modal-display {
    z-index: var(--z-modal); /* 1055 */
}

/* DataTables responsive modal close button */
body.owner-area div.dtr-modal div.dtr-modal-close,
body:is(.admin-app, .admin-area) div.dtr-modal div.dtr-modal-close,
.owner-tables-container div.dtr-modal div.dtr-modal-close {
    z-index: var(--z-modal-close); /* 1060 */
}

/* DataTables Buttons - info popover (default z-index: 2003 would cover everything) */
body.owner-area div.dt-button-info,
body:is(.admin-app, .admin-area) div.dt-button-info,
.owner-tables-container div.dt-button-info {
    z-index: var(--z-dropdown-teleported); /* 1048 - above chrome, below modal stack */
}

/* Fallback: priorità massima solo per inline style da DataTables JS
   (close button omonimo escluso dalla lista: ha token dedicato sotto) */
div.dtr-modal div.dtr-modal-display[style*="z-index"],
div.dt-button-info[style*="z-index"] {
    z-index: var(--z-dropdown-teleported); /* Override inline styles */
}

div.dtr-modal div.dtr-modal-close[style*="z-index"] {
    z-index: var(--z-modal-close); /* Override inline styles */
}

/* ✅ FIX: Toastr container — specificità alta; priorità massima solo se toastr.css carica dopo */
/* Toastr / #toast-container - sopra modali (1090) */
body.owner-area #toast-container,
body:is(.admin-app, .admin-area) #toast-container,
body.user-area #toast-container,
body.guest-area #toast-container {
    z-index: var(--z-toast);
}

/* ========================================================================
   2. Select2 Dropdown (1051) - ACTIVELY USED
   ======================================================================== */

/* ✅ FIX: Select2 dropdown — specificità alta dove possibile (no forzatura) */
/* Select2 dropdown container - owner pricing, admin stripe settings */
body.owner-area .select2-container .select2-dropdown,
body:is(.admin-app, .admin-area) .select2-container .select2-dropdown,
.owner-dashboard .select2-container .select2-dropdown {
    z-index: var(--z-dropdown); /* 1044 - below modals */
}

/* Select2 when open - higher specificity */
body.owner-area .select2-container--open .select2-dropdown,
body:is(.admin-app, .admin-area) .select2-container--open .select2-dropdown,
.owner-dashboard .select2-container--open .select2-dropdown {
    z-index: var(--z-dropdown); /* 1044 */
}

/* Select2 inside Bootstrap modal must stay above modal + backdrop.
   Bootstrap stack: backdrop 1050, modal 1055. */
body.owner-area .modal .select2-container--open .select2-dropdown,
body:is(.admin-app, .admin-area) .modal .select2-container--open .select2-dropdown,
.owner-dashboard .modal .select2-container--open .select2-dropdown {
    z-index: calc(var(--z-modal) + 6);
}

/* Select2 often appends dropdown to <body>; while a modal is open, keep it above backdrop/modal. */
body.modal-open .select2-container--open .select2-dropdown {
    z-index: calc(var(--z-modal) + 6);
}

/* ========================================================================
   3. Summernote Editor (1050, 100) - ACTIVELY USED (Admin withdraw)
   ======================================================================== */

/* ✅ FIX: Summernote fullscreen — specificità alta (no forzatura) */
/* Summernote fullscreen mode - should be above modals */
body.owner-area .note-editor.note-frame.fullscreen,
body:is(.admin-app, .admin-area) .note-editor.note-frame.fullscreen,
body.owner-area .note-editor.note-airframe.fullscreen,
body:is(.admin-app, .admin-area) .note-editor.note-airframe.fullscreen {
    z-index: var(--z-lightbox); /* 1105 */
}

/* ========================================================================
   4. Fancybox Lightbox (9999 default) - ACTIVELY USED (Guest listing gallery)
   ======================================================================== */

/* ✅ FIX: Fancybox — specificità alta; priorità massima solo per inline da JS */
/* Fancybox container - listing detail image gallery (solo il root: sopra modali guest) */
body.guest-area .fancybox__container,
body.guest-area .fancybox-container,
body.owner-area .fancybox__container,
body.owner-area .fancybox-container {
    z-index: var(--z-lightbox); /* 1105 - Above modals */
}

/*
 * Fancybox v5 — stacking INTERNO (vendor fancybox.css): backdrop z-index:-1, carousel z-index:10, toolbar z-index:20.
 * ✅ OK sovrascrivere solo il ROOT .fancybox__container con var(--z-lightbox) vs modali Bootstrap.
 * ❌ NON aggiungere z-index su: .fancybox__backdrop, .fancybox__carousel, .fancybox__viewport, .fancybox__slide
 *    (stesso problema del backdrop: valori “pagina” rompono l’ordine tra figli del container).
 * Toolbar: override sotto è opzionale/ridondante (vendor già 20 > carousel 10); serve se in futuro il JS
 *    mettesse inline uno z-index strano — vedi anche [style*="z-index"].
 */

/* Fancybox toolbar/buttons */
body.guest-area .fancybox__toolbar,
body.guest-area .fancybox-toolbar,
body.owner-area .fancybox__toolbar,
body.owner-area .fancybox-toolbar {
    z-index: calc(var(--z-lightbox) + 5); /* 1110 - Above lightbox content */
}

/* Fallback: priorità massima per inline style da Fancybox JS */
.fancybox__container[style*="z-index"],
.fancybox-container[style*="z-index"] {
    z-index: var(--z-lightbox); /* Override inline styles */
}

.fancybox__toolbar[style*="z-index"],
.fancybox-toolbar[style*="z-index"] {
    z-index: calc(var(--z-lightbox) + 5); /* Override inline styles */
}

/* ========================================================================
   Z-Index Hierarchy Guarantees (After Cleanup)
   ======================================================================== */

/* 
   GUARANTEED z-index order (no conflicts):
   
   Layer Name              | Value    | Use Case
   ─────────────────────────────────────────────────────────────────
   Content                 | 0-99     | Regular page content
   Dropdown (Select2)      | 1044     | Owner pricing, admin stripe dropdowns
   Sticky/Fixed            | 1020-30  | Navbar, booking card
   Offcanvas               | 1040-45  | Sidebar panel + backdrop
   Modal/Dialog            | 1050-60  | Form modals, booking modal, close buttons
   Toast                   | 1090     | Notifications
   Lightbox (Fancybox root)| 1105     | .fancybox__container vs modali (backdrop interno: default Fancybox)
   Lightbox Controls       | 1110     | Fancybox toolbar/buttons
   
   ✅ No conflicts: All third-party plugins now use CSS variables
   ✅ Clean architecture: Only necessary overrides for USED plugins
   ✅ Future proof: New plugins can use --z-* variables from design-tokens
   ✅ P0 FIXED: Fancybox no longer covers navbar (1105 < navbar emergency escape)
 */

/* ========================================================================
   Cleanup Notes
   ======================================================================== */

/*
   ❌ REMOVED: RowReorder plugin override
      Reason: Files present but never used in project (no drag-drop tables)
      
   ❌ REMOVED: SearchPanes plugin override
      Reason: Files present but never used (no advanced DataTables filtering)
      
   ❌ REMOVED: DataTables Buttons override
      Reason: Not actively used in critical paths
   ✅ KEPT: Fancybox - essential for guest listing image gallery
      
   ✅ KEPT: Select2 - essential for owner/admin dropdowns
   ✅ KEPT: Summernote - essential for admin text editing
   
   If future development needs RowReorder or SearchPanes,
   add the plugin properly and use --z-* variables from design-tokens.css
 */

/* Fixed alerts/toasts (no inline z-index in JS) — registry token */