/* ===== GLOBAL FOCUS ===== */
:focus:not(:focus-visible) {
    outline: none;
}

:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px;
}

/* ===== Fancybox Accessibility Fix ===== */
#fancybox-wrap:focus-visible,
#fancybox-content:focus-visible,
#fancybox-close:focus-visible,
#fancybox-left:focus-visible,
#fancybox-right:focus-visible,
#fancybox-wrap *:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* FancyBox overrides — jquery.fancybox.min.css suppresses .fancybox-close-small:focus */
.fancybox-close-small:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px;
}

.fancybox-close-small:focus {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #005fcc !important;
}

/* Test 1 — :focus alternatives for vendor outline suppressors */
.dropdown-toggle:focus,
.navbar-toggle:focus,
.carousel-control:focus,
.jstree-anchor:focus,
.facw-content-editable:focus,
select.facw-dd-source:focus,
.facw-dd-date-input::-webkit-datetime-edit-fields-wrapper:focus,
.facw-dd-date-input::-webkit-datetime-edit:focus {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #005fcc !important;
}
.fixed_width_carousel_button_colored:focus:not(:focus-visible),
.full_width_carousel_button_colored:focus:not(:focus-visible),
.rotate_colored_button:focus:not(:focus-visible),
.rotate_transparent_button:focus:not(:focus-visible),
.simple_carousel_transparent_button:focus:not(:focus-visible),
.simple_second_carousel_button_colored:focus:not(:focus-visible),
.video_carousel_colored_button:focus:not(:focus-visible) {
    outline: none !important;
}

/* ===== Override 3rd-party focus suppression ===== */
.fixed_width_carousel_button_colored:focus-visible,
.full_width_carousel_button_colored:focus-visible,
.rotate_colored_button:focus-visible,
.rotate_transparent_button:focus-visible,
.simple_carousel_transparent_button:focus-visible,
.simple_second_carousel_button_colored:focus-visible,
.video_carousel_colored_button:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* ===== BOOTSTRAP SELECT FULL COVERAGE ===== */
.bootstrap-select .dropdown-toggle:focus-visible,
.bootstrap-select .dropdown-menu > .inner:focus-visible,
.bootstrap-select .dropdown-menu li a:focus-visible,
.bootstrap-select .dropdown-menu li:focus-visible {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

/* Bootstrap overrides — bootstrap suppresses outline on :focus for toggles/controls */
.btn:focus-visible,
.form-control:focus-visible,
.custom-select:focus-visible,
.dropdown-toggle:focus-visible,
.navbar-toggle:focus-visible,
.navbar-toggler:focus-visible,
.carousel-control:focus-visible,
.carousel-control-prev:focus-visible,
.carousel-control-next:focus-visible,
.page-link:focus-visible,
a:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px;
    box-shadow: none !important;
}

/* ===== Bootstrap Tags Input Accessibility Fix (bootstrap-tagsinput.css) ===== */
.bootstrap-tagsinput:focus-within {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

/* Ensure actual input focus is visible */
.bootstrap-tagsinput input:focus-visible {
    outline: none; /* avoid double outline */
}

/* ===== RANGE SLIDER ACCESSIBILITY FIX ===== */
.custom-range:focus-visible {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

/* purely visual enhancement */
.custom-range::-webkit-slider-thumb,
.custom-range::-moz-range-thumb,
.custom-range::-ms-thumb {
    box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 95, 204, 0.25);
}

/* ===== THIRD PARTY ACCESSIBILITY ===== */
.select2-container:focus-visible,
.ui-widget:focus-visible,
.fancybox-content:focus-visible {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

/* ===== CLOCKPICKER ACCESSIBILITY FIX ===== */
.clockpicker-button:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

.clockpicker-button.am-button:focus-visible,
.clockpicker-button.pm-button:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}
/* ===== CLOCK PICKER TIME SELECTION ===== */
.clockpicker-tick:focus-visible {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
    background-color: rgba(0, 95, 204, 0.15);
    border-radius: 50%;
}

.clockpicker-tick[tabindex]:focus-visible {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

.clockpicker-button:focus-visible {
    box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.2);
}

/* ===== DATA TABLES ACCESSIBILITY OVERRIDES (jquery.dataTables.min.css) ===== */
/* Pagination buttons (important accessibility gap) */
.dataTables_wrapper .dataTables_paginate .paginate_button:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* Filter input */
.dataTables_wrapper .dataTables_filter input:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* Length dropdown/select */
.dataTables_wrapper .dataTables_length select:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* Table body cells when keyboard navigation is enabled (optional future-proofing) */
table.dataTable tbody tr:focus-within {
    outline: 2px solid #005fcc;
    outline-offset: -2px;
}

/* Selected row keyboard visibility enhancement */
table.dataTable tbody tr.selected:focus-within {
    outline: 2px solid #005fcc;
    outline-offset: -2px;
}

/* =========================================================
   DATA TABLES (BOOTSTRAP INTEGRATION) ACCESSIBILITY OVERRIDES
   File: dataTables.bootstrap.css (DO NOT MODIFY VENDOR FILE)
   ========================================================= */

/* ===== Sorting headers must be keyboard visible ===== */
table.dataTable thead .sorting:focus-visible,
table.dataTable thead .sorting_asc:focus-visible,
table.dataTable thead .sorting_desc:focus-visible,
table.dataTable thead .sorting_asc_disabled:focus-visible,
table.dataTable thead .sorting_desc_disabled:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* Ensure clickable header cells are focusable visually */
table.dataTable thead th:focus-visible,
table.dataTable thead td:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* ===== Fix missing focus on sorting icon pseudo-elements ===== */
/* (icons are purely visual; focus must be on parent cell) */
table.dataTable thead th.sorting,
table.dataTable thead th.sorting_asc,
table.dataTable thead th.sorting_desc {
    position: relative;
}

    /* Ensure focus is not lost when clicking icon area */
    table.dataTable thead th.sorting:focus,
    table.dataTable thead th.sorting_asc:focus,
    table.dataTable thead th.sorting_desc:focus {
        outline: 2px solid #005fcc !important;
        outline-offset: 2px;
    }

/* ===== Scroll head alignment safety ===== */
div.dataTables_scrollHead table.dataTable th:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* ===== Mobile responsiveness focus fix ===== */
@media screen and (max-width: 767px) {
    div.dataTables_wrapper div.dataTables_length:focus-within,
    div.dataTables_wrapper div.dataTables_filter:focus-within,
    div.dataTables_wrapper div.dataTables_paginate:focus-within {
        outline: 2px solid #005fcc;
        outline-offset: 2px;
    }
}

/* Keyboard + audit focus fallback */
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
a:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
}

/* ===== Summernote Accessibility Fix ===== */
.note-editor a:focus-visible,
.note-editor .form-control:focus-visible,
.note-editor .dropdown-toggle:focus-visible,
.note-editor .btn-group > .btn:focus-visible,
.note-editor .btn-group-vertical > .btn:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* ensure focus is not lost when vendor disables outline */
.note-editor a:focus:not(:focus-visible),
.note-editor .form-control:focus:not(:focus-visible),
.note-editor .dropdown-toggle:focus:not(:focus-visible),
.note-editor .btn-group > .btn:focus:not(:focus-visible) {
    outline: none !important; /* reset vendor conflict */
}

/* ===== GLOBAL FORM FOCUS FIX FOR STYLE.CSS OVERRIDES ===== */
/* Restore visible focus for all inputs in floating label system */
.floating-labels .form-control:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* fallback if focus-visible not supported */
.floating-labels .form-control:focus {
    outline: 2px solid #005fcc;
    outline-offset: 2px;
}

/* DataTables select accessibility fix */
.dataTables_length select:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* DataTables search input */
.dataTables_filter input:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* custom demo fields */
#demo-show-entries:focus-visible,
#demo-input-search2:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-offset: 2px;
}

/* ensure gradient focus doesn't replace accessibility indicator */
.floating-labels .form-control:focus {
    box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.2) !important;
}

/* ===== WORKS-4708 — final focus layer (loads last in MasterPageWorks) ===== */

#btnAddToProjectNew:focus,
#btnAddToProjectNew:focus-visible,
.facw-add-to-project-btn:focus,
.facw-add-to-project-btn:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 4px rgba(0, 95, 204, 0.35) !important;
}

/* Form controls — FieldWidth / Placeholder-input (Test 6) */
input.Placeholder-input:focus,
input.Placeholder-input:focus-visible,
input.Placeholder-input-WithIcon:focus,
input.Placeholder-input-WithIcon:focus-visible,
input.FieldWidth:focus,
input.FieldWidth:focus-visible,
input.FieldWidthWithIcon:focus,
input.FieldWidthWithIcon:focus-visible,
select.FieldWidth:focus,
select.FieldWidth:focus-visible,
textarea.FieldWidth:focus,
textarea.FieldWidth:focus-visible,
#facw-file-input:focus,
#facw-file-input:focus-visible,
div.facw-content-editable:focus,
div.facw-content-editable:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
}

/* Buttons (Test 6) */
button.btn-link:focus,
button.btn-link:focus-visible,
button.dropdown-toggle:focus,
button.dropdown-toggle:focus-visible,
button#facw-tree-dropdown-menu-button:focus,
button#facw-tree-dropdown-menu-button:focus-visible,
input.btn-blue-new:focus,
input.btn-blue-new:focus-visible,
input.btn.btn-primary:focus,
input.btn.btn-primary:focus-visible,
button.btn.text-dark.bg-white.dropdown-toggle:focus,
button.btn.text-dark.bg-white.dropdown-toggle:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
}

/* Links and misc anchors (Test 6) */
a#notification-off:focus,
a#notification-off:focus-visible,
a.js-show-add-budget-account-modal:focus,
a.js-show-add-budget-account-modal:focus-visible,
a.my-link-button:focus,
a.my-link-button:focus-visible,
a.help:focus,
a.help:focus-visible,
a[href]:focus,
a[href]:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
}

/* Search bar, dropdowns, footer */
#beamer-button:focus,
#beamer-button:focus-visible,
#beamer-button .nav-link:focus,
#beamer-button .nav-link:focus-visible,
.works-search-input:focus,
.works-search-input:focus-visible,
.works-search-icon:focus,
.works-search-icon:focus-visible,
.works-search-clear:focus,
.works-search-clear:focus-visible,
.works-search-suggestion:focus,
.works-search-suggestion:focus-visible,
.facw-dd-toggle:focus,
.facw-dd-toggle:focus-visible,
.facw-tree-dropdown:focus,
.facw-tree-dropdown:focus-visible,
.btn-checkbox-bell:focus,
.btn-checkbox-bell:focus-visible,
.search-wo-btn:focus,
.search-wo-btn:focus-visible,
.dropdown-item:focus,
.dropdown-item:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
}

/* Dark background — nav/sidebar (Tests 3/4/6) */
.navbar a:focus,
.navbar a:focus-visible,
.navbar button:focus,
.navbar button:focus-visible,
.navbar-default a:focus,
.navbar-default a:focus-visible,
.navbar-default button:focus,
.navbar-default button:focus-visible,
.navbar-nav a:focus,
.navbar-nav a:focus-visible,
.navbar-nav button:focus,
.navbar-nav button:focus-visible,
#nav-side-bar a:focus,
#nav-side-bar a:focus-visible,
#nav-side-bar button:focus,
#nav-side-bar button:focus-visible,
a.navbar-brand:focus,
a.navbar-brand:focus-visible,
.navbar-toggle:focus,
.navbar-toggle:focus-visible,
a.nav-link:focus,
a.nav-link:focus-visible,
.nav-link.dropdown-toggle:focus,
.nav-link.dropdown-toggle:focus-visible,
a.translate-trigger:focus,
a.translate-trigger:focus-visible,
#drop_translate:focus,
#drop_translate:focus-visible,
#sidebarProfileDropdown:focus,
#sidebarProfileDropdown:focus-visible,
.sidebar-item:focus,
.sidebar-item:focus-visible,
a.account-icon:focus,
a.account-icon:focus-visible,
a.VIpgJd-ZVi9od-xl07Ob-lTBxed:focus,
a.VIpgJd-ZVi9od-xl07Ob-lTBxed:focus-visible {
    outline: 2px solid #ffffff !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 4px #005fcc !important;
}

/* ===== AI Assistant (Tron) overrides ===== */
.ai-assistant-fab:focus,
.ai-assistant-fab:focus-visible,
#ai-assistant-input:focus,
#ai-assistant-input:focus-visible,
#ai-assistant-send-btn:focus,
#ai-assistant-send-btn:focus-visible,
.ai-assistant-chat-window button:focus,
.ai-assistant-chat-window button:focus-visible,
.ai-assistant-chat-window a:focus,
.ai-assistant-chat-window a:focus-visible,
.ai-assistant-chat-window input:focus,
.ai-assistant-chat-window input:focus-visible,
.ai-assistant-chat-window textarea:focus,
.ai-assistant-chat-window textarea:focus-visible,
.ai-assistant-close:focus,
.ai-assistant-close:focus-visible,
.ai-assistant-header button:focus,
.ai-assistant-header button:focus-visible {
    outline: 2px solid #005fcc !important;
    outline-style: solid !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px #fff, 0 0 0 4px #005fcc !important;
}
