/* Cross-browser utility to hide native scrollbars while keeping scroll functionality */
.scrollbar-hide {
    -ms-overflow-style: none; /* IE and Edge */
    scrollbar-width: none; /* Firefox */
}
.scrollbar-hide::-webkit-scrollbar {
    display: none; /* Chrome, Safari, Opera */
}

/* Simple fade-in animation for messages */
.message-fade-in {
    animation: fadeIn 0.3s ease-in;
}
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Positioned send button relative to a containing element (absolute) */
#sendButton {
    position: absolute;
    bottom: 15px;
    right: -50px;
}

/* Message input sizing and smooth height transition (for auto-resize behavior) */
#messageInput {
    transition: height 0.3s ease-in-out;
    height: 48px;
    max-height: 600px;
    overflow-y: hidden; /* hide vertical scrollbar while preserving content clipping */
    resize: none; /* disable user resizing */
}

/* Slide-in side menu: off-canvas by default, visible when .open */
.menu-slide {
    transform: translateX(100%);
    transition: transform 0.5s ease-in-out;
}
.menu-slide.open {
    transform: translateX(0);
}

/* Tiny search input width forced with important (beware responsiveness) */
#searchInput {
    width: 0.8vw !important;
}

/* Table base styles: collapsed borders for cleaner look */
table {
    border-collapse: collapse;
}

/* Cell padding, alignment and border color */
th, td {
    padding: 12px 15px;
    text-align: left;
    border: 1px solid #4A5568; /* dark gray border */
}

/* Header styling: dark background and light text */
th {
    background-color: #2D3748; /* dark background */
    color: #E2E8F0; /* light text */
    font-weight: 600;
}

/* Zebra striping for even rows */
tr:nth-child(even) {
    background-color: #4A5568; /* alternate row background */
}

/* Hover state for rows to improve affordance */
tr:hover {
    background-color: #2B6CB0; /* hover background */
    color: white; /* hover text color */
}

/* Selected row visual state */
tr.selected {
    background-color: #63B3ED; /* selected row color */
}

/* Cell background and text color to match dark table theme */
td {
    background-color: #374151; /* cell background */
    color: #E2E8F0; /* light text */
}

/* Modal enter/leave animation classes (Tailwind-like naming)
   - .modal-enter / .modal-leave: initial state
   - *-active: transition to final state */
.modal-enter {
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
    transform: scale(0.9);
    opacity: 0;
}
.modal-enter-active {
    transform: scale(1);
    opacity: 1;
}
.modal-leave {
    transition: transform 0.3s ease-in, opacity 0.3s ease-in;
    transform: scale(1);
    opacity: 1;
}
.modal-leave-active {
    transform: scale(0.9);
    opacity: 0;
}

/* Centering and container styles for object modals */
#objectModalEdit {
    display: flex;
    justify-content: center;
    align-items: center;
}
#objectModalEditContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}
#objectModalNew {
    display: flex;
    justify-content: center;
    align-items: center;
}
#objectModalNewContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}

/* Centering and container styles for category modals */
#categoryModalEdit {
    display: flex;
    justify-content: center;
    align-items: center;
}
#categoryModalEditContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}
#categoryModalNew {
    display: flex;
    justify-content: center;
    align-items: center;
}
#categoryModalNewContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}

/* Centering and container styles for subcategory modals */
#subcategoryModalEdit {
    display: flex;
    justify-content: center;
    align-items: center;
}
#subcategoryModalEditContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}
#subcategoryModalNew {
    display: flex;
    justify-content: center;
    align-items: center;
}
#subcategoryModalNewContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}

/* Centering and container styles for OOField modals */
#ooFieldModalEdit {
    display: flex;
    justify-content: center;
    align-items: center;
}
#ooFieldModalEditContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}
#ooFieldModalNew {
    display: flex;
    justify-content: center;
    align-items: center;
}
#ooFieldModalNewContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}

/* Centering and container styles for OOField modals */
#ticketDataExtractionModal {
    display: flex;
    justify-content: center;
    align-items: center;
}
#ticketDataExtractionModalContainer {
    padding: 20px;
    border: 3px solid #FFFFFF;
    border-radius: 10px;
}

/* Aligns the new MTO button to the right within its container */
#newMTOButton {
    text-align: right;
}