Files
eveAI/eveai_client/platform/static/assets/css/eveai.css
Josako 5c982fcc2c - Added EveAI Client to project
- Improvements to EntitlementsDomain & Services
- Prechecks in Document domain
- Add audit information to LicenseUsage
2025-05-17 15:56:14 +02:00

1174 lines
29 KiB
CSS

/* Overriding Colors *****************************************************************************/
:root {
--bs-primary: #76599a;
--bs-secondary: #b14f9d;
--bs-success: #1c6c12;
--bs-info: #423372;
--bs-warning: #eb7f31;
--bs-danger: #9c2d66;
}
/* Overriding the background gradient and text colors ********************************************/
.bg-gradient-success {
background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
}
.shadow-success {
box-shadow: 0px 4px 20px 0px rgba(118, 89, 154, 0.5); /* Adjusting shadow color */
}
.border-radius-lg {
border-radius: 1rem; /* Assuming you want to keep the large border-radius */
}
.text-white {
color: #f8e1a9 !important; /* Adjust text to the EveAI success color */
}
.text-sm {
font-size: 0.875rem; /* Adjust size if needed, keeping original */
}
/* Override for the link with text-success and text-gradient classes *****************************/
.text-success {
color: var(--bs-primary) !important; /* Use EveAI primary color */
}
.text-gradient {
background-image: linear-gradient(90deg, var(--bs-primary), var(--bs-secondary));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.font-weight-bold {
font-weight: 700; /* Retain bold text */
}
/* Navbar customization **************************************************************************/
.navbar-light .navbar-brand {
color: var(--bs-primary) !important; /* Primary color for the brand text */
}
.navbar-light .navbar-nav .nav-link {
color: var(--bs-secondary) !important; /* Secondary color for the nav links */
}
/* Ensure consistent alignment for all dropdown icons */
.navbar-nav .nav-link i.material-icons {
font-size: 24px; /* Ensures all icons are the same size */
vertical-align: middle; /* Align icons vertically with text */
margin-right: 8px; /* Space between icon and text */
line-height: 1; /* Prevents misalignment due to line-height issues */
}
.navbar-nav .nav-link {
display: flex;
align-items: center; /* Aligns icon and text vertically */
padding: 0; /* Remove any additional padding */
}
/* Adjust the size and spacing of the material-symbols-outlined icons */
.navbar-nav .nav-link .material-symbols-outlined {
font-size: 20px; /* Adjust the icon size */
vertical-align: middle; /* Ensure vertical alignment with text */
margin-right: 8px; /* Add space between the icon and the text */
line-height: 1; /* Maintain alignment */
}
.navbar-light .navbar-nav .nav-link:hover,
.navbar-light .navbar-nav .nav-link:focus {
color: var(--bs-primary) !important; /* Primary color on hover/focus */
}
.bg-white {
background-color: var(--bs-light) !important; /* Adjust the background to a custom light color if needed */
}
.btn.bg-gradient-primary {
background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
color: var(--bs-white) !important; /* Ensures text is readable on the gradient */
border: none;
}
.navbar-toggler .navbar-toggler-bar {
background-color: var(--bs-secondary); /* Adjusts color of the toggler bars */
}
.dropdown-menu {
background-color: var(--bs-light); /* Light background for dropdown */
border-radius: 0.375rem; /* Retains rounded corners */
}
.dropdown-item {
color: var(--bs-primary) !important; /* Primary color for dropdown items */
}
.dropdown-item:hover,
.dropdown-item:focus {
background-color: var(--bs-secondary) !important; /* Secondary color for hover/focus background */
color: var(--bs-white) !important; /* White text on hover/focus */
}
.btn.bg-gradient-primary {
background: linear-gradient(90deg, var(--bs-primary) 0%, var(--bs-secondary) 100%);
color: var(--bs-white) !important;
}
/* Page header customization *********************************************************************/
.page-header {
background-size: cover;
background-position: center;
min-height: 25vh;
position: relative;
}
.page-header .mask {
background: linear-gradient(90deg, var(--bs-primary), var(--bs-secondary)) !important; /* Gradient overlay */
opacity: 0.8; /* Adjust opacity to let the background image show through */
}
.page-header h1 {
color: var(--bs-success) !important; /* Use the success color for the header text */
margin-top: -1.5rem; /* Adjusted margin to align text properly */
}
.page-header p.lead {
color: var(--bs-info) !important; /* Use the info color for the lead text */
padding-left: 1.5rem;
padding-right: 1.5rem;
}
/* Ensure consistent padding */
.page-header .container {
padding-top: 3rem;
padding-bottom: 3rem;
}
.page-header .col-lg-7 {
margin-top: -5rem; /* Adjust margin to improve vertical alignment */
}
/* Card and table customization ******************************************************************/
.card {
border: 1px solid var(--bs-secondary) !important; /* Secondary color for the card border */
border-radius: 0.5rem; /* Keeps the border-radius consistent */
box-shadow: 0 4px 8px rgba(118, 89, 154, 0.2); /* Soft shadow with primary color */
}
.table {
color: var(--bs-body-color) !important; /* Ensure the text color matches the theme */
background-color: var(--bs-light) !important; /* Light background color */
border-collapse: separate !important; /* Ensure borders do not collapse */
border-spacing: 0; /* Remove spacing between table cells */
border-radius: 0.375rem; /* Rounded corners */
overflow: hidden; /* Ensure the rounded corners apply to the entire table */
border: 1px solid var(--bs-secondary) !important; /* Apply border with secondary color */
}
.table thead th {
color: var(--bs-info) !important; /* Info color for the table headers */
background-color: var(--bs-light) !important; /* Background for table headers */
border-bottom: 1px solid var(--bs-secondary) !important; /* Secondary color for the header bottom border */
}
/* Ensures corners are colored */
.table thead th:first-child {
border-top-left-radius: 0.375rem !important;
}
.table thead th:last-child {
border-top-right-radius: 0.375rem !important;
}
.table tbody tr:last-child td:first-child {
border-bottom-left-radius: 0.375rem !important;
}
.table tbody tr:last-child td:last-child {
border-bottom-right-radius: 0.375rem !important;
}
.table tbody tr {
border-top: 1px solid var(--bs-gray-300) !important; /* Subtle border between rows */
}
.table tbody tr:hover {
background-color: var(--bs-secondary) !important; /* Secondary color on row hover */
color: var(--bs-white) !important; /* White text on hover */
}
.table tbody tr:hover a,
.table tbody tr:hover p,
.table tbody tr:hover td {
color: var(--bs-white) !important; /* Ensure all text, links, and paragraphs change to white */
}
.table tbody tr:hover .text-xs {
color: var(--bs-white) !important; /* Ensure the smaller text also changes to white */
}
.table .text-xs {
color: var(--bs-body-color) !important; /* Consistent text color in the table cells */
}
input[type="radio"] {
accent-color: var(--bs-primary); /* Primary color for radio buttons */
}
/* Buttons customization */
.btn-primary {
background-color: var(--bs-primary) !important;
border-color: var(--bs-primary) !important;
color: var(--bs-white) !important;
}
.btn-secondary {
background-color: var(--bs-secondary) !important;
border-color: var(--bs-secondary) !important;
color: var(--bs-white) !important;
}
/* Adjust the form group margin */
.form-group {
margin-top: 1.5rem; /* Adjust for better spacing */
}
/* Card footer customization *********************************************************************/
.card-footer {
/*background-color: var(--bs-light) !important; !* Light background for the footer *!*/
padding-top: 1rem; /* Adjust padding for consistent spacing */
padding-bottom: 1rem; /* Adjust padding for consistent spacing */
/*border-top: 1px solid var(--bs-secondary) !important; !* Border with secondary color *!*/
padding-left: 0 !important;
padding-right: 0 !important;
}
.card-footer .pagination {
padding-left: 0 !important; /* Remove extra padding */
padding-right: 0 !important; /* Remove extra padding */
}
/* Pagination customization */
.pagination {
display: flex;
justify-content: center;
padding-left: 0;
list-style: none;
border-radius: 0.375rem;
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important; /* Add some padding inside the pagination */
padding-right: 0 !important; /* Add some padding inside the pagination */
}
.pagination .page-item {
margin-left: 0 !important;
margin-right: 0 !important;
}
.page-item.disabled .page-link {
color: var(--bs-gray-500) !important; /* Disabled state color */
background-color: var(--bs-gray-200) !important; /* Disabled state background */
border-color: var(--bs-gray-300) !important; /* Disabled state border */
}
.page-item.active .page-link {
z-index: 1;
color: var(--bs-white) !important; /* Active page color */
background-color: var(--bs-primary) !important; /* Active page background */
border-color: var(--bs-primary) !important; /* Active page border */
}
.page-item .page-link {
border-radius: 50% !important; /* Ensure circular buttons */
margin: 0 5px; /* Add some spacing between buttons */
}
.page-link {
color: var(--bs-primary) !important; /* Default link color */
background-color: var(--bs-light) !important; /* Light background for links */
border: 1px solid var(--bs-secondary) !important; /* Border with secondary color */
border-radius: 0.375rem; /* Rounded corners */
padding: 0.5rem 0.75rem;
margin: 0 0.25rem; /* Adjust margin for spacing */
}
.page-link:hover {
color: var(--bs-white) !important; /* Hover state text color */
background-color: var(--bs-secondary) !important; /* Hover state background */
border-color: var(--bs-secondary) !important; /* Hover state border */
}
.page-link i.fa {
margin-right: 0.25rem; /* Add spacing between icon and text */
}
/* Align text centrally */
.text-center {
text-align: center !important;
}
/* Form and Input Fields *************************************************************************/
.form-group label.form-label {
color: var(--bs-secondary) !important; /* Secondary color for labels */
font-weight: 500; /* Slightly bolder labels */
}
.form-group:last-of-type {
margin-bottom: 2rem; /* Adjust this value to control spacing */
}
.form-control {
background-color: var(--bs-light) !important; /* Light background for input fields */
border-color: var(--bs-secondary) !important; /* Secondary color for borders */
color: var(--bs-body-color) !important; /* Text color consistent with the theme */
}
.form-control:disabled {
background-color: var(--bs-gray-100) !important; /* Gray background for disabled fields */
color: var(--bs-gray-600) !important; /* Dimmed text color for disabled fields */
}
.form-check-input:checked {
background-color: var(--bs-primary) !important; /* Primary color for checked checkboxes */
border-color: var(--bs-primary) !important; /* Primary color for checkbox border */
}
.form-check-label {
color: var(--bs-body-color) !important; /* Consistent text color for check labels */
}
/* Tabs Navigation *******************************************************************************/
.nav-pills .nav-link {
color: var(--bs-primary) !important; /* Primary color for inactive tab text */
border-radius: 0.375rem !important; /* Rounded corners for tabs */
transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transitions */
}
.nav-pills .nav-link.active {
background-color: var(--bs-primary) !important; /* Primary background for active tab */
color: var(--bs-white) !important; /* White text for active tab */
}
.nav-pills .nav-link:hover {
background-color: var(--bs-secondary) !important; /* Secondary background on hover */
color: var(--bs-white) !important; /* White text on hover */
}
/* Tabs Content */
.tab-pane {
padding-top: 1rem; /* Consistent padding inside tabs */
}
.moving-tab {
background-color: var(--bs-primary) !important; /* Primary color for the moving tab indicator */
}
/* Buttons */
.btn-primary:hover {
background-color: var(--bs-secondary) !important;
border-color: var(--bs-secondary) !important;
}
#copy-message {
color: var(--bs-success) !important; /* Success color for the copy message */
}
/* Danger Button Styling */
.btn-danger {
background-color: var(--bs-danger) !important; /* Use the danger color from the EveAI theme */
border-color: var(--bs-danger) !important;
color: var(--bs-white) !important; /* Ensure text is white for readability */
transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transition on hover */
}
.btn-danger:hover {
background-color: darken(var(--bs-danger), 10%) !important; /* Darken the background on hover */
border-color: darken(var(--bs-danger), 10%) !important; /* Darken the border on hover */
color: var(--bs-white) !important; /* Ensure the text remains white and readable */
}
/* Success Alert Styling */
.alert-success {
background-color: var(--bs-success) !important; /* EveAI success background color */
color: var(--bs-dark) !important; /* Dark color for the text for better readability */
border-color: var(--bs-success) !important; /* Matching border color */
border-radius: 0.375rem; /* Rounded corners for the alert box */
padding: 1rem; /* Consistent padding */
box-shadow: 0px 4px 10px rgba(118, 89, 154, 0.2); /* Soft shadow for some depth */
}
.alert-success .alert-heading {
color: var(--bs-dark) !important; /* Ensure the heading stands out */
font-weight: 600; /* Slightly bolder heading */
}
.alert-success p {
margin-bottom: 0; /* Remove extra margin from paragraphs inside alerts */
}
.form-control {
border: 1px solid #d2d6da;
padding: 0.625rem 0.75rem;
}
.form-control:focus {
color: #495057;
background-color: transparent;
border-color: #d2d6da;
outline: 0;
box-shadow: none;
}
/* Markdown content styling **********************************************************************/
.markdown-content {
line-height: 1.5;
}
.markdown-content p {
margin-bottom: 0.75rem;
}
.markdown-content h1 {
font-size: 1.5rem;
margin-top: 1rem;
margin-bottom: 0.75rem;
}
.markdown-content h2 {
font-size: 1.25rem;
margin-top: 0.875rem;
margin-bottom: 0.625rem;
}
.markdown-content h3,
.markdown-content h4,
.markdown-content h5,
.markdown-content h6 {
font-size: 1.125rem;
margin-top: 0.75rem;
margin-bottom: 0.5rem;
}
.markdown-content ul,
.markdown-content ol {
margin-bottom: 1rem;
padding-left: 1.5rem;
}
.markdown-content li {
margin-bottom: 0.25rem;
}
.markdown-content code {
background-color: rgba(0, 0, 0, 0.1);
padding: 0.2em 0.4em;
border-radius: 3px;
font-family: monospace;
font-size: 0.875em;
}
.markdown-content pre {
background-color: rgba(0, 0, 0, 0.1);
padding: 0.75rem;
border-radius: 5px;
overflow-x: auto;
margin-bottom: 1rem;
}
.markdown-content pre code {
background-color: transparent;
padding: 0;
font-size: 0.875em;
white-space: pre;
}
.markdown-content blockquote {
border-left: 4px solid rgba(0, 0, 0, 0.2);
padding-left: 1rem;
margin-left: 0;
color: rgba(0, 0, 0, 0.6);
}
.markdown-content table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
.markdown-content table th,
.markdown-content table td {
border: 1px solid rgba(0, 0, 0, 0.2);
padding: 0.5rem;
}
.markdown-content table th {
background-color: rgba(0, 0, 0, 0.05);
}
/* AI Message styles *****************************************************************************/
/* Adjust colors for dark message bubbles */
.ai-message .markdown-content {
color: white;
}
.ai-message .markdown-content code {
background-color: rgba(255, 255, 255, 0.2);
color: #fff;
}
.ai-message .markdown-content pre {
background-color: rgba(255, 255, 255, 0.1);
}
.ai-message .markdown-content blockquote {
border-left-color: rgba(255, 255, 255, 0.3);
color: rgba(255, 255, 255, 0.8);
}
.ai-message .markdown-content table th,
.ai-message .markdown-content table td {
border-color: rgba(255, 255, 255, 0.3);
}
.ai-message .markdown-content table th {
background-color: rgba(255, 255, 255, 0.1);
}
/* Hide Select2's custom elements */
.select2-container-hidden {
position: absolute !important;
left: -9999px !important;
}
.select2-dropdown-hidden {
display: none !important;
}
/* Ensure the original select is visible and styled */
select.select2 {
display: block !important;
width: 100% !important;
height: auto !important;
padding: .375rem .75rem !important;
font-size: 1rem !important;
line-height: 1.5 !important;
color: #495057 !important;
background-color: #fff !important;
background-clip: padding-box !important;
border: 1px solid #ced4da !important;
border-radius: .25rem !important;
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out !important;
}
/* Style for multiple select */
select.select2[multiple] {
height: auto !important;
}
/* REQUIRED FIELD SETTINGS ***********************************************************************/
/* Required field indicator styling */
.field-label-wrapper {
display: flex;
align-items: baseline; /* Changed from center to baseline for proper text alignment */
gap: 0.25rem;
}
.required-field-indicator {
display: inline-flex;
align-items: baseline; /* Match the wrapper's alignment */
}
.required-field-indicator .required-icon {
font-size: 0.7rem;
transition: transform 0.2s ease-in-out;
opacity: 0.8;
line-height: 1; /* Ensure proper vertical alignment */
}
/* Hover animation */
.field-label-wrapper:hover .required-icon {
transform: scale(1.2);
opacity: 1;
}
/* Animation when field is invalid */
.is-invalid + .field-label-wrapper .required-icon {
color: var(--bs-danger);
animation: pulse 1s infinite;
}
@keyframes pulse {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(1.2);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
/* Hide visually but maintain accessibility */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* TAB ERROR STYLES ----------------------------------------------------------- */
/* Style for tabs with errors */
.nav-link.has-error {
position: relative;
}
.nav-link.has-error::after {
content: '';
position: absolute;
top: 0;
right: 0;
width: 8px;
height: 8px;
background-color: var(--bs-danger);
border-radius: 50%;
transform: translate(50%, -50%);
}
/* Enhance the invalid field visualization */
.form-control:invalid {
border-color: var(--bs-danger);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
/* Add smooth transition for tab changes */
.tab-pane {
transition: opacity 0.15s linear;
}
.tab-pane.fade {
opacity: 0;
}
.tab-pane.fade.show {
opacity: 1;
}
/* Specialist Card Hover Effect */
.specialist-card {
transition: all 0.3s ease;
cursor: pointer;
}
.specialist-card:hover {
transform: translateY(-5px);
box-shadow: 0 7px 14px rgba(118, 89, 154, 0.1), 0 3px 6px rgba(118, 89, 154, 0.1);
border-color: var(--bs-primary);
}
/* Loading Spinner Colors */
.spinner-border {
color: var(--bs-primary);
}
/* Stream output styling */
.log-entry {
transition: all 0.3s ease;
overflow: hidden;
}
.log-entry pre {
background-color: #f8f9fa;
border-radius: 4px;
padding: 1rem;
overflow-x: auto;
}
/* Minimum height for specialist form area */
.min-vh-30 {
min-height: 30vh;
}
/*************************************************************************************************/
/* Chat Layout ***********************************************************************************/
/*************************************************************************************************/
main.container-fluid {
transition: padding-bottom 0.3s ease;
padding-bottom: 40px; /* Default padding */
}
main.container-fluid.console-expanded {
padding-bottom: 190px; /* Increased padding when console is open */
}
.main-content {
height: calc(100vh - 120px); /* Adjust for header and status bar */
}
.specialist-selector {
width: 320px !important; /* Force fixed width */
min-width: 320px !important; /* Prevent shrinking below this size */
flex-shrink: 0 !important; /* Prevent this element from shrinking */
border-right: 1px solid #dee2e6;
overflow-y: auto;
height: 100%;
}
.specialist-arguments {
padding: 15px;
border-bottom: 1px solid #ddd;
}
.bot-area {
display: flex;
flex-direction: column;
height: calc(100% - 120px); /* Adjust based on argument form height */
padding: 15px;
}
/* Messages Styling ******************************************************************************/
.message-history {
flex-grow: 1;
min-height: 150px;
height: calc(100vh - 445px); /* Fixed height calculation */
overflow-y: auto;
scrollbar-width: thin;
border-radius: 0.25rem;
padding: 0.5rem;
margin-bottom: 0.5rem;
transition: height 0.3s ease; /* Smooth transition when resizing */
}
.console-expanded .message-history {
height: calc(100vh - 595px); /* Reduced height when console is open (445px + 150px) */
}
.message-input {
margin-top: 15px;
}
.message-bubble {
padding: 10px 15px;
border-radius: 18px;
max-width: 100%;
word-break: break-word;
}
.user-message {
background-color: var(--bs-primary);
color: white;
border-top-right-radius: 4px;
}
.ai-message {
background-color: var(--bs-secondary);
color: white;
border-top-left-radius: 4px;
}
/* Current status text */
#currentStatus {
font-size: 0.75rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 70%;
padding: 0 0.5rem;
display: inline-block;
}
/* Connection status badge */
#connectionStatus {
font-size: 0.7rem;
padding: 0.25rem 0.5rem;
}
/* Typing Indicator */
.typing-indicator {
display: inline-flex;
align-items: center;
}
.typing-indicator span {
height: 8px;
width: 8px;
border-radius: 50%;
background-color: #fff;
display: inline-block;
margin: 0 1px;
opacity: 0.6;
animation: typing 1s infinite;
}
.typing-indicator span:nth-child(2) {
animation-delay: 0.2s;
}
.typing-indicator span:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes typing {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-5px);
}
}
/* Chat Interface Styles */
.message-container {
display: flex;
margin-bottom: 10px;
max-width: 80%;
}
.user-container {
justify-content: flex-end;
margin-left: auto;
}
.ai-container {
justify-content: flex-start;
margin-right: auto;
}
.user-message {
background-color: var(--bs-primary);
color: white;
border-top-right-radius: 4px;
}
.ai-message {
background-color: var(--bs-secondary);
color: white;
border-top-left-radius: 4px;
}
.typing-indicator {
display: inline-flex;
align-items: center;
}
.typing-indicator span {
height: 8px;
width: 8px;
border-radius: 50%;
background-color: #fff;
display: inline-block;
margin: 0 1px;
opacity: 0.6;
animation: typing 1s infinite;
}
.typing-indicator span:nth-child(2) {
animation-delay: 0.2s;
}
.typing-indicator span:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes typing {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-5px);
}
}
.specialist-card {
transition: all 0.2s ease;
cursor: pointer;
}
.specialist-card:hover {
transform: translateY(-3px);
box-shadow: 0 4px 20px rgba(118, 89, 154, 0.2);
}
.specialist-card.bg-light {
border-left: 3px solid var(--bs-primary);
}
body {
font-size: 0.875rem; /* Reduced from default */
display: flex;
flex-direction: column;
}
h1, .h1 {
font-size: 1.75rem; /* Reduced from 2.5rem */
}
h2, .h2 {
font-size: 1.5rem; /* Reduced from 2rem */
}
h3, .h3 {
font-size: 1.25rem; /* Reduced from 1.75rem */
}
h4, .h4 {
font-size: 1.125rem; /* Reduced from 1.5rem */
}
.card-title {
font-size: 1.125rem;
}
.nav-link {
font-size: 0.875rem;
}
.form-label {
font-size: 0.875rem;
}
.btn {
font-size: 0.875rem;
}
.form-control {
font-size: 0.875rem;
}
/* Adjust message bubbles */
.message-bubble {
font-size: 0.875rem;
}
/* Active specialist card styling */
.specialist-card.active-specialist {
border-left: 4px solid var(--bs-primary);
background-color: rgba(118, 89, 154, 0.1) !important;
box-shadow: 0 4px 20px rgba(118, 89, 154, 0.2);
}
/* Animation for status message transition */
@keyframes fadeInOut {
0% { opacity: 0; transform: translateY(10px); }
10% { opacity: 1; transform: translateY(0); }
90% { opacity: 1; }
100% { opacity: 0; }
}
/* Full-height layout */
html, body {
height: 100%;
overflow: hidden;
}
.wrapper {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
main.container {
flex: 1;
overflow: hidden;
padding-bottom: 40px; /* For status bar */
}
main.container > .d-flex {
height: 100%;
}
main.container-fluid {
padding-bottom: 40px; /* Height of status bar + buffer */
}
/* Ensure containers are sized correctly */
#specialist-form-container,
#specialist-form {
height: 100%;
display: flex;
flex-direction: column;
}
/* Ensure the main content scrolls properly */
.flex-grow-1.overflow-hidden {
min-height: 0; /* Important for flexbox scroll behavior */
}
/* Make sure main content takes full height */
.main-content {
display: flex;
flex-direction: column;
flex: 1;
}
/* Enhanced Status Bar */
.status-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
min-height: 30px;
background-color: #f8f9fa;
border-top: 1px solid #dee2e6;
font-size: 0.75rem;
color: #495057;
z-index: 1030;
width: 100%;
}
/* Console output styling */
.console-output {
height: 150px;
background-color: #212529;
color: #f8f9fa;
overflow-y: auto;
scrollbar-width: thin;
border-top: 1px solid #444;
transition: height 0.3s ease;
}
.status-messages {
font-family: 'Courier New', monospace;
font-size: 0.75rem;
padding: 0.5rem;
}
.status-message {
margin-bottom: 2px;
white-space: pre-wrap;
word-break: break-word;
font-size: 0.75rem;
}
/* Different message types */
.status-message.info {
color: #8be9fd;
}
.status-message.success {
color: #50fa7b;
}
.status-message.warning {
color: #ffb86c;
}
.status-message.error {
color: #ff5555;
}
/* Active button state */
#toggleConsole.active {
background-color: rgba(0,0,0,0.1);
}
#toggleConsole {
padding: 0.125rem 0.25rem;
line-height: 1;
color: #6c757d;
border: none;
background: transparent;
}
#toggleConsole:hover {
color: #212529;
background-color: rgba(0, 0, 0, 0.05);
}
/* Add padding to main content when console is expanded */
.console-expanded {
padding-bottom: 190px !important; /* Adjust based on console height */
}
/* Fix vertical sizing for specialist container */
.specialist-container {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
/* Config section has auto height based on content */
.config-section {
flex-shrink: 0;
overflow-y: auto;
max-height: 40%; /* Allow scrolling if many fields */
}
/* Message input section has fixed height */
.message-input-section {
flex-shrink: 0;
height: auto;
padding: 0.75rem;
border-top: 1px solid #dee2e6;
background-color: rgba(248, 249, 250, 0.5);
border-radius: 0 0 0.25rem 0.25rem;
}
/* Ensure containers are sized correctly */
#specialist-form-container,
#specialist-form {
height: 100%;
display: flex;
flex-direction: column;
}
/* Chat Interface Styles */
.chat-interface {
display: flex;
flex-direction: column;
height: 100%; /* Take full height of parent */
overflow: hidden; /* Prevent content from breaking layout */
}
/* Log viewer styles */
.log-entries {
font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
font-size: 0.8rem;
line-height: 1.4;
}
.log-entry {
padding: 2px 0;
white-space: pre-wrap;
word-break: break-word;
}
.log-timestamp {
opacity: 0.7;
font-weight: 500;
}
.log-info { color: #8be9fd; }
.log-success { color: #50fa7b; }
.log-warning { color: #ffb86c; }
.log-error { color: #ff5555; }
/* Processing Status Badge Colors */
.bg-ready {
background-color: var(--bs-success) !important;
}
.bg-processing {
background-color: var(--bs-warning) !important;
}
.bg-error {
background-color: var(--bs-danger) !important;
}