body {
    font-family: Arial, sans-serif;
    padding: 20px;
    background-color: #f8f9fa;
    /* A light grey background for the body */
}

.page-heading {
    font-size: 1rem;
    /* Example size, adjust as needed */
}

.page-heading {
    display: flex;
    align-items: center;
    /* This centers vertically inside the flex container */
}

.page-heading .material-icons {
    margin-right: 10px;
}

.page-heading .icon-margin-right {
    margin-right: 10px;
}


/* Same visual spacing as page headings, but for the vertical nav */
#sidebar-menu .icon-margin-right {
    margin-right: 10px;
    /* identical to .page-heading rule */
    line-height: 1;
    display: inline-flex;
    /* keeps both FA & Material icons centred */
}

/* keep your menu from hiding behind the sticky footer */
#sidebar-menu {
    flex: 1 1 auto;
    overflow-y: auto;
    margin-bottom: 4rem;
    /* or whatever the height of #sidebar-user is */
}

/* stick the user block to the bottom of the sidebar */
#sidebar-user {
    position: sticky;
    bottom: 1rem;
    /* lift it up 16px off the bottom edge */
    background: #f8f9fa;
    /* match your sidebar bg */
    padding: .75rem 1rem;
    border-top: 1px solid #dee2e6;
    z-index: 10;
    /* float above the scrolling list */
}

#sidebar-user button#sidebarUserToggle {
    background: none;
    /* you already have this, but just in case */
    border: none;
    /* ditto */
    padding: 0;
    /* match your a‑tag layout */
    outline: none;
    /* kill the UA focus outline */
    box-shadow: none;
    /* kill any UA or framework focus shadow */
}

/* and make sure it stays gone on focus */
#sidebar-user button#sidebarUserToggle:focus {
    outline: none;
    box-shadow: none;
}

/* dropdown pops up above #sidebar-user */
#sidebar-user .dropdown-menu {
    position: absolute !important;      /* anchor to #sidebar-user        */
    top: -80px !important;                  /* align with toggle vertically   */
    left: calc(100% + 26px) !important; /* gap and dock in one 
    margin-left: 8px !important;        /* small gap between panels       */
    /* ------------------------------------------------------------------ */

    min-width: 320px !important;        /* let e-mail fit on one line     */
    width: max-content !important;      /* grow to natural width          */
    transform: none !important;

    border-radius: 4px;
    z-index: 20;
    background-color: #f8f9fa !important;
    border: 1px solid #dee2e6 !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
}

#sidebar-user .dropdown-item {
    justify-content: flex-start !important;
    padding: 5px 15px;
}


#sidebar-user a.dropdown-toggle {
    color: #495057;
    /* Bootstrap’s $body-color */
    text-decoration: none;
    /* no underline */
}

/* 2) Even on hover/focus it stays the same */
#sidebar-user a.dropdown-toggle:hover,
#sidebar-user a.dropdown-toggle:focus {
    color: #495057;
    text-decoration: none;
}

/* 3) Keep the chevron in muted grey */
#sidebar-user a.dropdown-toggle i {
    color: #6c757d;
    /* Bootstrap’s $gray-600 */
}



/* Button styles */
.btn {
    background-color: #d4b25a;
    /* Gold color */
    color: white;
    border: none;
    padding: 0.375rem 0.75rem;
    /* Padding inside buttons */
    border-radius: 0.25rem;
    /* Rounded corners for buttons */
    cursor: pointer;
    /* Pointer cursor on hover */
}


.btn:hover {
    background-color: #cca300;
    /* Darker shade of gold for hover state */
}


.button-cell {
    min-width: 80px;
    text-align: right !important;
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.dropdown-toggle {
    background-color: transparent;
    border: none;
    padding-left: 2px;
    padding-right: 4px;
}

.dropdown-toggle::after {
    display: none;
    /* Hide the little arrow */
}

.dropdown-menu {
    margin-top: -1px;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    z-index: 1000;
}

.dropdown-menu li a:hover {
    text-decoration: none;
}

/* Style for the filter button */

.btn-icon {
    background-color: transparent;
    /* Makes the background transparent */
    display: flex;
    border: none;
    /* Removes border */
    padding: 0;
    /* Removes padding */
    cursor: pointer;
    /* Pointer cursor on hover */
    vertical-align: middle;
    /* Aligns the button vertically in line with the text */
    margin-left: 4px;
    /* Space between header text and button */
    margin-right: 10px;
}


.checkmark {
    color: #d4b25a;
    display: none;
    /* Hide by default */
    text-align: right;
    padding-left: 10px;
    float: right;
    /* Position to the right */
}

.dropdown-item {
    padding: 5px 5px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.dropdown-item.active {
    background-color: transparent;
    /* Light grey background for active item */
    color: black
}

.dropdown-item:active {
    background-color: #f2f2f2;
    /* Light grey background for active item */
    color: black
}

.dropdown-item.active .checkmark {
    display: inline-block;
    /* Show when active */
}


.message {
    min-width: 140px;
    max-width: 400px;
}

/* Style adjustments for loading spinner and message */
#loadingIndicator .spinner-border {
    margin-bottom: 10px;
    /* Added space below spinner */
}

#loadingIndicator p {
    font-size: 1rem;
    /* Ensuring the text is neither too big nor too small */
    color: #6c757d;
    /* A neutral, friendly color for the text */
}

/* Adjust modal width */
@media (min-width: 576px) {
    .custom-size {
        max-width: 80%;
        /* Preferred width of the modal */
    }
}

/* Class to be used for th elements that require flex */
.th-flex {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* Adjust as necessary */
}


/* Collapsible buttons styling */
.collapsible {
    background-color: #f9f9f9;
    width: 100%;
    color: #444;
    cursor: pointer;
    padding: 18px;
    border: none;
    text-align: center;
    /* Center the text inside the button */
    outline: none;
    font-size: 15px;
    transition: background-color 0.3s;
    /* Smooth transition for hover effect */
}

/* Add this to your stylesheet */
.fa-caret-right,
.fa-caret-down {
    transition: transform 0.3s ease;
}

.fa-caret-right {
    transform: rotate(0deg);
    /* Default state, pointing right */
}

.fa-caret-right.expanded {
    transform: rotate(90deg);
    /* Rotated state, pointing down */
}


.content {
    padding: 0 18px;
    background-color: #f8f8f8;
    transition: max-height 0.6s ease-out;
    /* Smooth transition for expanding */
    position: relative;
    z-index: 1;
    box-shadow: 2px 2px 8px #888888;
    margin-top: 8px;
    padding-top: 10px;
    padding-bottom: 10px;
    overflow-y: hidden;
    white-space: nowrap;
}

.center-text {
    text-align: center !important;
}

/* Global styles for the directory tree modal */
#directoryTree ul,
#directoryTree li {
    list-style: none;
    padding-left: 20px;
    padding-right: 20px;
    margin-top: 5px;
}


#directoryTree {
    margin-top: 20px;
}

#registryTree {
    margin-top: 20px;
}

/* Scoped styles for the registry tree */
#registryTree ul,
#registryTree li {
    list-style: none;
    padding-left: 20px;
    padding-right: 20px;
    margin-top: 5px;
}

/* Root UL style, do not add vertical lines for this */
#registryTree ul[role="tree"] {
    list-style-type: none;
    /* Remove default bullets */
    margin: 0;
    padding-left: 20px;
    /* Space for the lines */
    position: relative;
    /* Allow child nodes to align properly */
}

/* Vertical line for child groups of "Registry" node */
#registryTree ul[role="group"] {
    list-style-type: none;
    /* Remove default bullets */
    margin: 0;
    padding-left: 20px;
    position: relative;
}

/* Arrow/caret icon should be on top */
#registryTree li[role="treeitem"] span i {
    position: relative;
    z-index: 3;
    /* Ensure arrow/caret icon is above the lines */
}

#displayTree .modal {
    display: flex;
    width: none;
    /* Allow the modal to expand to fit content */
    align-items: center;
    justify-content: center;
}

#directoryTree .custom-size {
    display: flex;
    /* Enable flexbox */
    width: fit-content;
    margin-top: 20px;
    overflow-x: auto;
    /* Enable horizontal scrolling if content overflows */
}


#directoryTree .modal-content {
    display: flex;
    flex-direction: column;
    background-color: #fff;
    /* White background for the modal content */
    border-radius: 0.3rem;
    /* Slightly rounded corners for the modal */
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
    /* Subtle shadow for depth */
}

.directory-chart-container {
    width: fit-content;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    background-color: #fff;
    /* White background for the modal content */
    border-radius: 0.3rem;
    /* Slightly rounded corners for the modal */
    /* box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);  */
}

.timeline-chart-container {
    width: fit-content;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    background-color: #fff;
    border-radius: 0.3rem;
}

#timeline .chart-container {
    justify-content: center;
    height: 300px;
    margin-left: 0;
    margin-right: 0;
    margin-top: calc(55vh - 150px);
}

/* Specific styles for folder and file entries */
#directoryTree .folder,
#directoryTree .file {
    width: fit-content;
    white-space: nowrap;
    /* Prevents text from wrapping */
    cursor: pointer;
    /* Indicates these elements are interactive */
    padding-left: 20px;
    padding-right: 20px;
}

ul.no-bullets {
    list-style-type: none;
}

#sidebar-menu a.sidebar-active {
    background-color: #dae0e5 !important;
}

#sidebar-menu a:hover {
    background-color: #e9ecef !important;
    /* Lighter gray for hover */
}

/* Normal expanded sidebar */
#sidebarWrapper {
    height: 100vh;
    width: 220px;
    flex-shrink: 0;
    /* Don’t let flex parent shrink it */
    background-color: #f8f9fa;
    /* Make sure background fills the full width */
    display: flex;
    flex-direction: column;
    /* So heading is on top, list below */
    transition: width 0.2s ease;
}

/* Collapsed sidebar */
#sidebarWrapper.sidebar-collapsed {
    width: 70px;
    /* shrink to icon-only width */
}

/* Hide the brand text in collapsed mode */
#sidebarWrapper.sidebar-collapsed .brand-text {
    display: none;
}

/* Hide link text but keep icons visible in collapsed mode */
#sidebarWrapper.sidebar-collapsed .link-text {
    display: none;
}

#sidebarWrapper.sidebar-collapsed .list-group-item i {
    margin-right: 0;
    text-align: center;
    width: 100%;
}

.sidebar-toggle-btn {
    border: none;
    background: transparent;
    outline: none;
    cursor: pointer;
}

.sidebar-toggle-btn i {
    font-size: 24px;
    line-height: 1;
}

#sidebarWrapper:not(.sidebar-collapsed) #sidebar-menu:hover~#customTooltip {
    visibility: hidden;
    pointer-events: none;
}

.sidebar-toggle-btn {
    outline: none;
    box-shadow: none;
}

/* Also cover focus states explicitly */
.sidebar-toggle-btn:focus,
.sidebar-toggle-btn:active,
.sidebar-toggle-btn:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

/* If the icon gets focus separately, also remove it there */
.sidebar-toggle-btn i:focus {
    outline: none !important;
    box-shadow: none !important;
}


/* Style for the container that holds the dropdown content */
.collapsible-content {
    background-color: #f8f8f8;
    /* Lighter gray background */
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
    /* Subtle shadow for depth */
    margin-top: 5px;
    /* Adds a little space between button and content */
    padding: 1px 5px;
    /* Padding inside the content box */
    border-radius: 3px;
    /* Optional: Adds rounded corners */
    overflow: hidden;
    /* Hides anything outside the border radius */
    display: none;
    /* Starts off hidden */
}

/* Style for the content inside the dropdown */
pre {
    margin: 0;
    /* Removes default margin */
    background-color: transparent;
    /* Ensures background matches the container */
    white-space: pre-wrap;
    /* Allows text to wrap */
    overflow-x: auto;
    /* Ensures content is scrollable horizontally if needed */
}


.grouped-list>li {
    margin-top: 20px;
}

.info {
    align-content: center;
}


.list-group-item.active {
    background-color: #ced4da !important;
    /* A light gray color */
    color: #000;
    /* Black text color */
    border: 1px solid rgba(0, 0, 0, .125);
}


.load-time {
    margin-top: 10px;
    font-size: 14px;
    color: #666;
    text-align: left;
}

.no-wrap {
    white-space: nowrap;
    overflow: hidden;
    /* Ensures the content does not spill over */
    text-overflow: ellipsis;
    /* Adds an ellipsis if the text overflows the container's bound */
    z-index: 1000;
}


#inputContainer {
    display: flex;
    justify-content: flex-start;
    /* Align items to the start of the container */
    gap: 10px;
    /* Space between elements */
    max-width: 600px;
    /* Set a maximum width for the input container */
    margin-bottom: 20px;
    /* Space between input row and progress bar */
    align-items: center;
}

#messageArea {
    display: none;
    /* Hidden by default and will be displayed as needed */
    margin-top: 5px;
    /* Smaller margin for tighter vertical spacing */
    padding: 5px 10px;
    /* Smaller padding to reduce height */
    line-height: 1.5;
    /* Adjust line height to align with the text in the input and button */
    vertical-align: middle;
    /* Align vertically with adjacent inline elements */
    font-size: 0.9rem;
    /* Adjust font size if necessary for better fit */
    border-radius: 5px;
    /* Optional: rounded corners for aesthetics */
}

/* Adjust the input and button for consistent height and alignment */
#idInput,
#importButton {
    height: 38px;
    /* Ensure both have the same height for uniformity */
    vertical-align: middle;
    /* Align vertically with other elements */
}


.form-group {
    display: flex;
    /* This makes the children of .form-group (select, input, button) line up in a row */
    align-items: center;
    gap: 10px;
    width: 100%;
    /* Take full width to utilize space effectively */
}

#inputGroup {
    display: flex;
    align-items: center;
    gap: 10px;
}

.form-control {
    flex-grow: 1;
    min-width: 160px;
    /* Adjust as needed */
}

#typeSelect {
    flex-grow: 0;
    /* Prevents select from expanding too much */
}

#idInput {
    flex-grow: 2;
    /* Allows input to take more space */
}

#importButton {
    white-space: nowrap;
    /* Prevent button text from wrapping */
}

.status-message {
    flex-grow: 2;
    text-align: right;
    /* Align the status message to the right */
}

/* Make sure the table is below everything and takes full width */
.status-history {
    width: 100%;
}

.input-group-append .btn {
    margin-left: -1px;
    /* Fixes a small gap between input and button */
}

.progress-bar {
    height: 30px;
    background-color: blue;
    /* Foreground showing progress */
    text-align: center;
    color: white;
    /* For text inside the progress bar */
    transition: width 0.4s ease;
    /* Smooth transition for changes */
}

.date-picker-container {
    width: 90px;
    display: flex;
    gap: 8px;
    height: 40px;
    align-items: center;
}

.ra-date-label {
    width: 100px;
    align-items: center;
    justify-content: center;
    /* Align the text horizontally in the middle */
    margin: 0;
    /* Remove default margin */
}


#refreshButton {
    margin-right: 60px;
    /* Space between the fetch button and the passed prechecks label */
}

.info-icon {
    font-size: 18px;
    /* Adjust size to fit your design */
    color: #646464;
    /* Subtle grey color, customizable */
    cursor: help;
    /* Changes cursor to help cursor, indicating an interactive element */
    margin-left: 5px;
    /* Adds space between the text and the icon */
    vertical-align: middle;
    /* Aligns icon with the middle of the text */
    padding-bottom: 12px;
    /* Adjust as needed */
}

.flex-align-start {
    display: flex;
    align-items: center;
    align-self: flex-start;
}

.custom-tooltip {
    display: none;
    /* Hidden by default */
    position: fixed;
    /* Positioning relative to the viewport */
    padding: 8px 10px;
    /* Padding inside the tooltip */
    font-size: 14px;
    /* Larger font size for better readability */
    background-color: #fff;
    /* White background */
    border: 1px solid #ddd;
    /* Light grey border */
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    /* Subtle shadow for depth */
    border-radius: 8px;
    /* Rounded corners */
    z-index: 1000;
    /* High z-index to ensure it appears above other elements */
    pointer-events: none;
    /* Ensures that mouse events pass through the tooltip */
}

/* Ensure both tables have the same table layout and width */
#statusTableHeader,
#statusTable {
    table-layout: fixed;
    width: 100%;
}

/* Ensure columns have consistent padding and borders */
#statusTableHeader th,
#statusTable td {
    padding: 10px;
    border: none;
    text-align: left;
    /* Adjust as needed */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Optional: Add a bottom border to the header for visual separation */
#statusTableHeader th {
    border-bottom: 2px solid #ddd;
}


#statusHistoryContainer {
    flex: 1;
    /* Take up remaining space */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    overflow-y: auto;
    /* Prevent unwanted overflow */
}

#statusTableBody {
    flex: 1;
    /* Dynamic height for table content */
    overflow-y: auto;
    padding-right: 20px;
    /* Space for scrollbar */
    margin-top: -32px;
}


.filler {
    flex: 0 0 10%;
    /* Fixed 10% height relative to parent container */
}



/* Fade-in animation */
@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}


/* Slide-in animation */
@keyframes slideIn {
    from {
        transform: translateY(-20px);
        opacity: 0;
    }

    to {
        transform: translateY(0);
        opacity: 1;
    }
}



.modal-actions button {
    margin-left: 10px;
    padding: 10px 20px;
    border: none;
    cursor: pointer;
    border-radius: 6px;
    font-weight: bold;
    font-size: 16px;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}




/* Define the pulse animation */
@keyframes pulse-color {

    0%,
    100% {
        font-weight: normal;
        opacity: 1;
        color: #3498db;
        /* A nice blue */
    }

    50% {
        font-weight: bold;
        opacity: 0.8;
        color: #e74c3c;
        /* A contrasting red */
    }
}

/* Class to apply the pulse animation to the info icon */
.animate-info-icon {
    animation: pulse-color 1s infinite ease-in-out;
}

.info-tooltip {
    visibility: hidden;
    /* Initially hidden */
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
}

.infoSpan:hover .info-tooltip,
.infoSpan:focus .info-tooltip,
.infoSpan.show-tooltip .info-tooltip {
    visibility: visible;
    /* Show on hover, focus, or when show-tooltip class is added */
    opacity: 1;
}


table.dataTable thead th.dt-colresizable-hover {
    cursor: col-resize !important;
}

.dynamic-text {
    flex-grow: 1;
}

.modal-backdrop {
    width: auto !important;
}

.modal-dialog.modal-xl {
    max-width: 90vw !important;
}


/* Remove any leftover thumbnail backgrounds */
.dropzone .dz-preview .dz-image {
    background: none !important;
}

/* Hide any <img data-dz-thumbnail> if still present */
.dropzone .dz-preview .dz-image img {
    display: none !important;
}

/* Adjust the "Remove file" link, if you want it smaller or differently colored: */
.dropzone .dz-preview .dz-remove {
    font-size: 0.9rem;
    color: #4285F4;
    margin-top: 1rem;
}

/* Center items horizontally if the container is wide */
.dropzone .dz-preview {
    display: inline-block;
    vertical-align: top;
    margin: 1rem;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(360deg);
    }
}

@keyframes fadeOutUp {
    0% {
        opacity: 1;
        transform: translateY(0);
    }

    100% {
        opacity: 0;
        transform: translateY(-50%);
    }
}

.dropzone-hide {
    animation: fadeOutUp 0.5s ease forwards;
}

.hidden {
    display: none;
}

.red-dot {
    color: red !important;
}