Skip to main content
Glama
jmandel

Smart EHR MCP Server

by jmandel
EhrApp.css58 kB
/* === EHR App Styles === */ /* Add global font style - Apply to body if this CSS is loaded globally for ehr.html */ body { margin: 0; /* Also good practice to reset body margin */ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; background: #f4f6f8; /* Match original background */ color: #333; /* Default text color */ font-size: 16px; /* Base font size */ } .ehr-app { /* Styles for the main container, if needed */ display: flex; flex-direction: column; min-height: 100vh; } .ehr-header { background: #2c3e50; color: #ecf0f1; padding: 0.5em 0; /* Reduced top/bottom padding */ flex-shrink: 0; /* Prevent header from shrinking */ } /* Inner container constrained by max-width */ .header-inner { max-width: 1140px; /* Match main content width */ margin: 0 auto; /* Center horizontally */ padding: 0 1em; /* Add padding */ display: flex; justify-content: space-between; align-items: center; /* Changed from flex-start to center */ } /* Removed .header-top-row */ .header-actions { margin-left: 1em; /* Add some space */ display: flex; align-items: center; /* Align dropdown and button */ gap: 0.5em; /* Space between dropdown and button */ } /* Style the dropdown component container */ .patient-switcher-dropdown { position: relative; /* Needed for absolute positioning of menu */ display: inline-block; /* Or block if it takes full width */ } /* Style the dropdown toggle button */ .dropdown-toggle-button { display: inline-flex; /* Use flex to align items inside */ align-items: center; justify-content: center; padding: 0.25rem 0.5rem; /* Approx px-2 py-0.5 */ border: 1px solid #ccc; /* Approx border-gray-300 */ border-radius: 0.375rem; /* Approx rounded-md */ background-color: #fff; /* Approx bg-white */ font-size: 0.875rem; /* Approx text-sm */ font-weight: 500; /* Approx font-medium */ color: #374151; /* Approx text-gray-700 */ cursor: pointer; transition: background-color 0.2s ease; } .dropdown-toggle-button:hover { background-color: #f9fafb; /* Approx hover:bg-gray-50 */ } .dropdown-toggle-button:focus { outline: 2px solid transparent; outline-offset: 2px; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #4f46e5; /* Approx focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 */ } .dropdown-toggle-button:disabled, .dropdown-toggle-button.loading { opacity: 0.6; cursor: not-allowed; } .dropdown-toggle-button .gear-icon { margin-right: 0.375rem; /* Approx mr-1.5 */ height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ } .dropdown-toggle-button .active-patient-name { font-size: 0.75rem; /* Approx text-xs */ } .dropdown-toggle-button .dropdown-chevron { margin-left: 0.375rem; /* Approx ml-1.5 */ margin-right: -0.125rem; /* Approx -mr-0.5 */ height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ color: #9ca3af; /* Approx text-gray-400 */ } /* Dropdown Menu */ .dropdown-menu { position: absolute; right: 0; margin-top: 0.5rem; /* Approx mt-2 */ width: max-content; min-width: 100%; border-radius: 0.375rem; /* Approx rounded-md */ background-color: #fff; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* Approx shadow-lg */ border: 1px solid rgba(0, 0, 0, 0.05); /* Approx ring-1 ring-black ring-opacity-5 */ z-index: 50; overflow: visible; padding-right: 0.5rem; /* Provide space so delete button isn't clipped */ } .dropdown-section { padding-top: 0.25rem; /* Approx py-1 */ padding-bottom: 0.25rem; } .dropdown-section.select-patient-section { border-bottom: 1px solid #e5e7eb; /* Approx border-b border-gray-200 */ } .dropdown-section-header { padding: 0.5rem 1rem; /* Approx px-4 py-2 */ font-size: 0.75rem; /* Approx text-xs */ color: #6b7280; /* Approx text-gray-500 */ text-transform: uppercase; } .menu-item { display: block; width: 100%; padding: 0.5rem 0; /* REMOVED horizontal padding (was 0.75rem) */ font-size: 0.875rem; /* Approx text-sm */ color: #374151; /* Approx text-gray-700 */ text-align: left; background: none; border: none; cursor: pointer; } .menu-item:hover { background-color: #f3f4f6; /* Approx hover:bg-gray-100 */ color: #111827; /* Approx hover:text-gray-900 */ } .menu-item.patient-menu-item { display: flex; align-items: center; padding-left: 0.75rem; /* Keep padding here for left side */ padding-top: 0.5rem; padding-bottom: 0.5rem; padding-right: 0.5rem; /* Add right padding to contain delete button */ } .menu-item.patient-menu-item.active { background-color: #e0e7ff; /* Approx bg-indigo-100 */ color: #3730a3; /* Approx text-indigo-900 */ font-weight: 600; /* Approx font-semibold */ padding-left: 0.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-right: 0.5rem; /* Add right padding for consistency */ } .patient-name-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex-grow: 1; /* Allow name to take available space */ flex-shrink: 1; /* Allow name to shrink if needed */ min-width: 0; /* Important for flex shrink and overflow to work together */ } .delete-patient-button { flex-shrink: 0; /* Prevent button from shrinking */ margin-left: 0.5rem; /* Keep space between name and button */ margin-right: 0; /* Remove overhang margin */ padding: 0.25rem; /* Keep button padding */ border: none; background: none; border-radius: 9999px; /* Approx rounded-full */ color: #9ca3af; /* Approx text-gray-400 */ cursor: pointer; } .delete-patient-button:hover { background-color: #fee2e2; /* Approx hover:bg-red-100 */ color: #dc2626; /* Approx hover:text-red-600 */ } .delete-patient-button:focus { outline: 1px solid #ef4444; /* Approx focus:ring-1 focus:ring-red-500 */ outline-offset: 1px; /* Approx focus:ring-offset-1 */ } .delete-patient-button:disabled { opacity: 0.5; cursor: not-allowed; } .delete-patient-button .icon { height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ display: block; /* Ensure icon behaves like a block */ } .menu-item-placeholder { padding: 0.5rem 0.75rem; /* Match reduced horizontal padding */ font-size: 0.875rem; /* Approx text-sm */ color: #6b7280; /* Approx text-gray-500 */ font-style: italic; } .menu-item.action-menu-item { display: flex; align-items: center; padding: 0.5rem 0.75rem; /* Match reduced horizontal padding */ } .menu-item.action-menu-item:disabled { opacity: 0.5; cursor: not-allowed; } .menu-item.action-menu-item .icon { margin-right: 0.75rem; /* Approx mr-3 */ height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ color: #9ca3af; /* Approx text-gray-400 */ } /* Dropdown Status Section */ .dropdown-section.status-section { padding: 0.5rem 1rem; /* Approx px-4 py-2 */ border-top: 1px solid #f3f4f6; /* Approx border-t border-gray-100 */ } .status-loading, .status-error { font-size: 0.75rem; /* Approx text-xs */ display: flex; align-items: center; } .status-loading { color: #2563eb; /* Approx text-blue-600 */ } .status-error { color: #dc2626; /* Approx text-red-600 */ word-break: break-word; } .status-loading .spinner { display: inline-block; margin-right: 0.5rem; /* Approx mr-2 */ height: 0.75rem; /* Approx h-3 */ width: 0.75rem; /* Approx w-3 */ border-top: 2px solid #2563eb; border-right: 2px solid #2563eb; border-bottom: 2px solid transparent; border-left: 2px solid transparent; border-radius: 50%; animation: spin 0.6s linear infinite; } /* Load JSON Button */ .btn-load-json { /* Add specific styles or inherit from a generic .btn class */ padding: 0.4em 0.8em; border: 1px solid #ccc; border-radius: 4px; background-color: #fff; cursor: pointer; font-size: 0.9em; } .btn-load-json:hover { background-color: #f0f0f0; } .patient-header-container { flex-grow: 1; /* Allow patient header to take space */ } .patient-info { /* max-width: 960px; No longer needed with flex */ /* margin: 0 auto; Let flex handle */ /* flex-grow: 1; Moved to container */ /* padding-left: 1em; Added padding to header-inner */ } .patient-info h1 { margin: 0 0 0.1em 0; /* Reduced bottom margin */ font-size: 1.5em; /* Slightly smaller name */ } .patient-info p { margin: 0; font-size: 0.85em; /* Slightly smaller subtext */ } .main-content-container { max-width: 1140px; /* Ensure this has the correct max-width */ margin: 0.5em auto 0 auto; /* Reduced top margin, center horizontally */ padding: 0 1em; /* Add padding */ flex-grow: 1; /* Allow content to fill remaining space */ display: flex; flex-direction: column; min-width: 1000px; } nav.tabs { background: #34495e; flex-shrink: 0; /* Prevent tabs from shrinking */ } nav.tabs ul { list-style: none; margin: 0; /* Removed auto margin */ padding: 0; /* Keep ul centered and unpadded */ display: flex; /* max-width: 960px; Removed - should fill container */ } nav.tabs li { flex: 1; } nav.tabs li button { /* Target button inside li */ display: block; width: 100%; padding: 0.6em; /* Reduced tab padding */ color: #bdc3c7; background: none; border: none; text-decoration: none; text-align: center; font-size: 0.95em; /* Slightly smaller tab font */ font-family: inherit; cursor: pointer; transition: background-color 0.2s ease, color 0.2s ease; } nav.tabs li button:hover { background-color: #4e6a85; color: #fff; } nav.tabs li.active button { background: #ecf0f1; color: #2c3e50; font-weight: bold; } .content { /* max-width: 960px; Removed - should fill container */ margin: 1em 0; /* Original was 1em auto, removed auto */ padding: 1em; /* Keep internal padding */ background: #ffffff; box-shadow: 0 1px 3px rgba(0,0,0,0.1); /* Reduced shadow */ flex-grow: 1; /* Allow content area to grow */ overflow-y: auto; /* Allow internal scrolling if needed */ } /* Form Styles (General - can be overridden) */ .form-group { margin-bottom: 1rem; /* Approx mb-4 */ } .form-label { display: block; margin-bottom: 0.25rem; /* Approx mb-1 */ font-size: 0.875rem; /* Approx text-sm */ font-weight: 500; /* Approx font-medium */ color: #374151; /* Approx text-gray-700 */ } .form-input, .form-textarea { box-sizing: border-box; width: 100%; padding: 0.5rem; /* Approx p-2 */ border: 1px solid #d1d5db; /* Approx border-gray-300 */ border-radius: 0.375rem; /* Approx rounded */ font-size: 1em; } .form-textarea { resize: vertical; min-height: 60px; /* From inline style */ } .form-input-number { /* Add specific number input styles if needed */ } /* Radio Button Styles */ .form-group-radio { margin-bottom: 0.5rem; /* Approx mb-2 */ } .form-group-radio:last-child { margin-bottom: 0; } .radio-label { display: inline-flex; /* Use inline-flex for better flow */ align-items: center; gap: 0.5rem; /* Approx space-x-2 */ cursor: pointer; } .form-radio { vertical-align: middle; /* Explicitly align input within the flex line */ height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ color: #4f46e5; /* Approx text-indigo-600 */ /* Use browser default radio or custom style */ } .radio-option-label { font-size: 0.875rem; /* Approx text-sm */ } /* Snippet Container Styles */ .snippet-container { margin-top: 0.5rem; /* Approx mt-2 */ padding: 0.75rem; /* Approx p-3 */ background-color: #f9fafb; /* Approx bg-gray-50 */ border: 1px solid #e5e7eb; /* Approx border-gray-200 */ border-radius: 0.25rem; /* Approx rounded */ margin-left: 1.5rem; /* Approx ml-6, but maybe adjust */ } /* Override margin for numeric/freetext where ml-0 was used */ .form-group > .snippet-container { margin-left: 0; } .snippet-title { font-size: 0.75rem; /* Approx text-xs */ font-weight: 600; /* Approx font-semibold */ color: #4b5563; /* Approx text-gray-700 */ margin-bottom: 0.25rem; /* Approx mb-1 */ } .snippet-title-detail { font-weight: 400; /* Approx font-normal */ font-style: italic; } .snippet-textarea { font-size: 0.75rem; /* Approx text-xs */ padding: 0.5rem; /* Approx p-2 */ min-height: 60px; /* Approx min-h-[60px] */ width: 100%; border: 1px solid #d1d5db; /* Approx border-gray-300 */ border-radius: 0.25rem; /* Approx rounded */ resize: vertical; } .snippet-suggestion { font-size: 0.75rem; /* Approx text-xs */ color: #6b7280; /* Approx text-gray-500 */ margin-top: 0.25rem; /* Approx mt-1 */ } /* Orders2Tab Specific Styles */ .orders2-tab { padding: 1rem; /* Approx p-4 */ /* space-y-4 -> use direct margins or gap */ display: flex; flex-direction: column; gap: 1rem; /* Replaces space-y-4 */ background-color: #f3f4f6; /* Approx bg-gray-100 */ /* min-height: screen; -> handled by flex layout */ } .orders2-tab > h2 { font-size: 1.25rem; /* Approx text-xl */ font-weight: 600; /* Approx font-semibold */ margin: 0; /* Remove default margin */ } .order-form-section { margin-bottom: 1rem; /* Approx mb-4 */ padding: 1rem; /* Approx p-4 */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ background-color: #fff; /* Approx bg-white */ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* Approx shadow */ } .order-form-section .section-title, .questions-section .section-title { font-size: 1.125rem; /* Approx text-lg */ font-weight: 500; /* Approx font-medium */ margin-bottom: 0.5rem; /* Approx mb-2 */ } /* Button Styles */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.5rem 1rem; /* Approx px-4 py-2 */ border-radius: 0.375rem; /* Approx rounded */ border: 1px solid transparent; font-weight: 500; cursor: pointer; transition: background-color 0.2s ease; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn-primary { background-color: #2563eb; /* Approx bg-blue-600 */ color: #fff; border-color: #2563eb; } .btn-primary:hover:not(:disabled) { background-color: #1d4ed8; /* Approx hover:bg-blue-700 */ border-color: #1d4ed8; } .btn-success { background-color: #16a34a; /* Approx bg-green-600 */ color: #fff; border-color: #16a34a; } .btn-success:hover:not(:disabled) { background-color: #15803d; /* Approx hover:bg-green-700 */ border-color: #15803d; } .btn-secondary { background-color: #6b7280; /* Approx bg-gray-500 */ color: #fff; border-color: #6b7280; } .btn-secondary:hover:not(:disabled) { background-color: #4b5563; /* Approx hover:bg-gray-600 */ border-color: #4b5563; } .status-message { font-size: 0.875rem; /* Approx text-sm */ margin-top: 0.5rem; /* Approx mt-2 */ } .status-warning { color: #ca8a04; /* Approx text-yellow-700 */ } /* Loading Indicator */ .loading-indicator { display: flex; align-items: center; justify-content: center; padding: 1rem; /* Approx p-4 */ margin: 1rem 0; /* Approx my-4 */ background-color: #dbeafe; /* Approx bg-blue-100 */ border: 1px solid #bfdbfe; /* Approx border-blue-300 */ border-radius: 0.25rem; /* Approx rounded */ color: #1e40af; /* Approx text-blue-700 */ } .loading-indicator .spinner-icon { animation: spin 1s linear infinite; margin-right: 0.75rem; /* Approx mr-3 */ margin-left: -0.25rem; /* Approx -ml-1 */ height: 1.25rem; /* Approx h-5 */ width: 1.25rem; /* Approx w-5 */ color: #1e40af; /* Approx text-blue-700 */ } .loading-indicator .spinner-icon .opacity-25 { opacity: 0.25; } .loading-indicator .spinner-icon .opacity-75 { opacity: 0.75; } /* Error Message */ .error-message { color: #b91c1c; /* Approx text-red-700 */ border: 1px solid #fca5a5; /* Approx border-red-400 */ padding: 0.75rem; /* Approx p-3 */ border-radius: 0.25rem; /* Approx rounded */ background-color: #fee2e2; /* Approx bg-red-100 */ margin: 1rem 0; /* Approx my-4 */ } /* History Section */ .history-section { margin-top: 1rem; /* Approx mt-4 */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ background-color: #fff; /* Approx bg-white */ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* Approx shadow */ } .history-toggle-button { width: 100%; text-align: left; padding: 0.5rem; /* Approx p-2 */ font-weight: 500; /* Approx font-medium */ font-size: 0.875rem; /* Approx text-sm */ color: #374151; /* Approx text-gray-700 */ background: none; border: none; display: flex; justify-content: space-between; align-items: center; cursor: pointer; } .history-toggle-button:hover { background-color: #f9fafb; /* Approx hover:bg-gray-50 */ } .history-toggle-button .toggle-icon { font-size: 1.25rem; /* Approx text-xl */ line-height: 1; } .history-content { border-top: 1px solid #e5e7eb; /* Approx border-t */ padding: 0.75rem; /* Approx p-3 */ background-color: #f9fafb; /* Approx bg-gray-50 */ max-height: 400px; overflow-y: auto; } .history-item { margin-bottom: 0.75rem; /* Approx mb-3 */ padding-bottom: 0.75rem; /* Approx pb-3 */ border-bottom: 1px solid #e5e7eb; /* Approx border-b */ } .history-item:last-child { border-bottom: none; /* Approx last:border-b-0 */ margin-bottom: 0; padding-bottom: 0; } .history-item-header { font-weight: 600; /* Approx font-semibold */ font-size: 0.75rem; /* Approx text-xs */ color: #4b5563; /* Approx text-gray-600 */ margin-bottom: 0.25rem; /* Approx mb-1 */ } .history-item-header .action-code { color: #1d4ed8; /* Approx text-blue-700 */ background-color: #dbeafe; /* Approx bg-blue-100 */ padding: 0.125rem 0.25rem; /* Approx px-1 */ border-radius: 0.125rem; /* Approx rounded */ font-family: monospace; } .history-item-detail { font-size: 0.75rem; /* Approx text-xs */ color: #1f2937; /* Approx text-gray-800 */ } .history-item-detail .keyword-code { background-color: #e5e7eb; /* Approx bg-gray-200 */ padding: 0.125rem 0.25rem; /* Approx px-1 */ border-radius: 0.125rem; /* Approx rounded */ font-family: monospace; } .history-list { list-style: disc; padding-left: 1rem; /* Approx ml-4 or list-inside ml-2 */ margin-top: 0.25rem; } .history-item-detail.success-detail { color: #166534; /* Approx text-green-800 */ } .history-item-detail.failure-detail { color: #991b1b; /* Approx text-red-800 */ } /* Questions Section */ .questions-section { margin-top: 1rem; /* Approx mt-4 */ /* space-y-4 -> handled by form-group margins */ padding: 1rem; /* Approx p-4 */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ background-color: #fff; /* Approx bg-white */ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* Approx shadow */ } .question-card { margin-bottom: 1.5rem; /* Approx mb-6 */ background-color: #fff; /* Approx bg-white */ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* Approx shadow-md */ border-radius: 0.5rem; /* Approx rounded-lg */ overflow: hidden; /* Contain box shadow */ } .question-card .card-content { padding: 1rem; /* Approx p-4 */ } .question-label { font-size: 1rem; /* Approx text-md */ font-weight: 600; /* Approx font-semibold */ margin-bottom: 0.25rem; /* Approx mb-1 */ } .question-explanation { font-size: 0.875rem; /* Approx text-sm */ color: #4b5563; /* Approx text-gray-600 */ margin-bottom: 0.75rem; /* Approx mb-3 */ } .question-text { font-size: 0.875rem; /* Approx text-sm */ font-weight: 500; /* Approx font-medium */ margin-bottom: 0.5rem; /* Approx mb-2 */ } .btn-submit-answers { /* Inherits .btn styles */ } /* Conclusion Section */ .conclusion-section { margin-top: 1rem; /* Approx mt-4 */ display: flex; flex-direction: column; gap: 1rem; } .result-card { margin-bottom: 1rem; /* Less than QuestionCard's mb-6 */ background-color: #fff; /* Approx bg-white */ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* Approx shadow-md */ border-radius: 0.5rem; /* Approx rounded-lg */ overflow: hidden; } .result-card .card-content { padding: 1rem; /* Approx p-4 */ } .result-title { font-size: 1.125rem; /* Approx text-lg */ font-weight: 600; /* Approx font-semibold */ margin-bottom: 0.75rem; /* Approx mb-3 */ } .result-card p { margin-bottom: 0.5rem; /* Approx mb-2 */ } .subsection-title { font-weight: 600; /* Approx font-semibold */ margin-top: 0.75rem; /* Approx mt-3 */ margin-bottom: 0.25rem; /* Approx mb-1 */ } .criteria-tree-container { padding: 0.5rem; /* Approx p-2 */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ background-color: #f9fafb; /* Approx bg-gray-50 */ font-size: 0.875rem; /* Approx text-sm */ } .criteria-tree-failure { background-color: #fee2e2; /* Approx bg-red-50 */ } .criteria-tree-list { margin-left: 1rem; /* Approx ml-4 */ list-style: disc; /* space-y-1 -> use li margin */ } .criteria-tree-list li { margin-bottom: 0.25rem; } .criteria-label { font-weight: 500; /* Approx font-medium */ } .criteria-operator { font-size: 0.75rem; /* Approx text-xs */ color: #6b7280; /* Approx text-gray-500 */ margin-left: 0.25rem; /* Approx ml-1 */ } .evidence-list { margin-left: 1.5rem; /* Approx ml-6 */ list-style: circle; font-size: 0.75rem; /* Approx text-xs */ color: #4b5563; /* Approx text-gray-600 */ margin-top: 0.25rem; /* Approx mt-1 */ /* space-y-0.5 -> use li margin */ } .evidence-list li { margin-bottom: 0.125rem; } .signable-snippets { margin-top: 1rem; /* Approx mt-4 */ padding-top: 0.75rem; /* Approx pt-3 */ border-top: 1px solid #e5e7eb; /* Approx border-t */ } .signable-snippets .subsection-title { /* font-semibold mb-2 */ margin-bottom: 0.5rem; } .snippet-item { margin-bottom: 0.75rem; /* Approx mb-3 */ padding: 0.75rem; /* Approx p-3 */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* Approx shadow-sm */ } .snippet-signable { background-color: #eff6ff; /* Approx bg-blue-50 */ } .snippet-reference { background-color: #f9fafb; /* Approx bg-gray-100 */ opacity: 0.8; /* Approx opacity-80 */ } .snippet-item-title { font-size: 0.875rem; /* Approx text-sm */ font-weight: 500; /* Approx font-medium */ margin-bottom: 0.25rem; /* Approx mb-1 */ } .snippet-reference .snippet-item-title { color: #374151; /* Approx text-gray-700 */ } .snippet-item-content { font-size: 0.75rem; /* Approx text-xs */ margin-top: 0.25rem; /* Approx my-1 */ margin-bottom: 0.25rem; padding: 0.5rem; /* Approx p-2 */ background-color: #fff; /* Approx bg-white */ border: 1px solid #e5e7eb; /* Approx border */ border-radius: 0.25rem; /* Approx rounded */ white-space: pre-wrap; } .btn-sign-snippet { margin-top: 0.25rem; /* Approx mt-1 */ padding: 0.25rem 0.75rem; /* Approx px-3 py-1 */ font-size: 0.75rem; /* Approx text-xs */ /* Default state (unsigned) */ background-color: #10b981; /* Approx bg-emerald-500 */ color: #fff; border-color: #10b981; } .btn-sign-snippet:hover:not(:disabled) { background-color: #059669; /* Approx hover:bg-emerald-600 */ border-color: #059669; } .btn-sign-snippet.signed { background-color: #9ca3af; /* Approx bg-gray-400 */ color: #1f2937; /* Approx text-gray-800 */ border-color: #9ca3af; cursor: not-allowed; opacity: 0.7; /* Approx disabled:opacity-70 */ } .btn-start-new { /* Inherits btn */ margin-top: 1rem; /* Approx mt-4 */ } .snippets-for-reference .subsection-title { color: #4b5563; /* Approx text-gray-600 */ } /* ================= */ /* Original CSS starts here - review and integrate/remove conflicts */ /* ================= */ /* Keep useful generic styles */ .buttons { margin-top: 1.5em; padding-top: 1em; border-top: 1px solid #eee; display: flex; gap: 0.75em; } .buttons button { /* Let specific .btn classes handle this */ /* padding: 0.75em 1.5em; */ /* border: none; */ /* border-radius: 4px; */ /* cursor: pointer; */ /* font-size: 1em; */ /* font-weight: 500; */ /* transition: background-color 0.2s ease; */ } /* Remove redundant btn-* colors if covered by new ones */ /* .btn-primary { background: #3498db; color: #fff; } */ /* .btn-primary:hover { background: #2980b9; } */ /* .btn-secondary { background: #95a5a6; color: #fff; } */ /* .btn-secondary:hover { background: #7f8c8d; } */ .btn-danger { background: #e74c3c; color: #fff; } .btn-danger:hover { background: #c0392b; } table { width: 100%; border-collapse: collapse; margin-bottom: 1em; margin-top: 0.5em; } table, th, td { border: 1px solid #ddd; } th, td { padding: 0.75em; text-align: left; vertical-align: top; } th { background: #f1f3f5; font-weight: bold; color: #333; } .tab-content h2 { /* Applies to Demographics, Labs etc. */ margin-top: 0; border-bottom: 2px solid #eee; padding-bottom: 0.4em; margin-bottom: 1em; color: #2c3e50; } .tab-content ul { /* Non-criteria tree lists */ list-style: disc; padding-left: 20px; } .tab-content ul li { margin-bottom: 0.5em; } /* Order confirmation / Order in progress - Keep if used elsewhere */ .order-confirmation { border: 1px solid #ddd; background: #f9f9f9; padding: 1.5em; border-radius: 4px; } .order-confirmation h4 { margin-top: 0; color: #2c3e50; } .order-in-progress h3 { margin-top: 0; color: #34495e; } .order-in-progress p strong { color: #555; } /* Remove redundant .tab-content padding rule */ /* .tab-content { */ /* padding: 0; */ /* } */ /* Spinner animation */ @keyframes spin { to { transform: rotate(360deg); } } /* Focus outlines for accessibility */ button:focus, input:focus, textarea:focus, select:focus { outline: 2px solid #3498db; outline-offset: 2px; } /* Ensure sidebar uses full viewport height in a flex layout */ .conversation-panel.pa-sidebar { display: flex; flex-direction: column; background: #fff; padding: 8px; overflow: hidden; /* Still prevent this container scrolling */ } /* Other existing styles below seem related to a sidebar PA workflow */ /* Keep them for now unless they directly conflict or are unused */ /* Conversation Panel Styles */ .conversation-panel { margin-top: 1.5em; border: 1px solid #ddd; padding: 1em; background: #fafafa; border-radius: 4px; } .conversation-panel .status-display { display: flex; align-items: center; gap: 0.5em; margin-bottom: 0.75em; font-size: 1.1em; } .conversation-panel .status-display .detail { font-style: italic; color: #555; margin-left: 0.5em; } .conversation-panel .input-section { margin-bottom: 0.75em; } .conversation-panel .input-section input[type="text"] { width: 100%; padding: 0.5em; border: 1px solid #ccc; border-radius: 4px; font-size: 1em; } .conversation-history { /* Used in sidebar PA, different from Orders2 */ background: #f5f5f5; padding: 1em; border-radius: 4px; overflow-x: auto; /* Keep */ font-family: monospace; font-size: 0.9em; white-space: pre-wrap; word-break: break-word; margin-top: 0.5em; } /* PA Sidebar Styles */ .pa-sidebar { display: flex; flex-direction: column; min-width: 280px; max-width: 280px; transition: max-width 0.2s ease; background: #fff; border-left: 1px solid #ddd; padding: 8px; height: 100vh; /* full viewport height */ overflow-y: auto; /* internal scroll if needed */ position: relative; /* ensure correct positioning */ } .pa-sidebar.collapsed { min-width: 40px; max-width: 40px; overflow: hidden; } /* Summary list styles */ .pa-summary-list { margin: 0; padding: 0; list-style: none; } .pa-summary-item { margin-bottom: 1em; } .pa-summary-item .status-display { display: flex; justify-content: space-between; align-items: center; } /* Evidence list */ .pa-summary-evidence { margin: 0.5em 0 0.5em 1.2em; padding: 0; list-style-type: circle; } /* Sidebar Tabs Styling - corrected selectors */ .tabs.sidebar-tabs ul { display: flex; margin: 0; padding: 0; list-style: none; border-bottom: 2px solid #ddd; } .tabs.sidebar-tabs ul li { flex: 1; } .tabs.sidebar-tabs ul li button { display: block; width: 100%; padding: 0.75em; /* equal height */ background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; font-weight: 500; color: #333; transition: color 0.2s ease; } .tabs.sidebar-tabs ul li button:hover { color: #2c3e50; } .tabs.sidebar-tabs ul li.active button { border-bottom-color: #2c3e50; color: #2c3e50; } /* Spinner for pending status (used in PA Sidebar) */ .pa-spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid #ccc; border-top-color: #3498db; border-radius: 50%; animation: spin 0.6s linear infinite; margin-right: 4px; } /* Truncate clause labels with ellipsis */ .pa-summary-item .detail { flex: 1; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 0.95em; font-weight: 500; color: #2c3e50; } /* Sticky footer for summary and chat inputs */ .pa-sidebar .input-section { position: sticky; bottom: 0; background: #fff; padding: 8px; border-top: 1px solid #eee; } /* Chat history message bubbles */ .conversation-history > div { /* Applies to PA Sidebar Chat */ margin-bottom: 6px; padding: 6px 8px; border-radius: 4px; } .conversation-history > div:nth-child(odd) { background: #f0f4f8; } .conversation-history > div:nth-child(even) { background: #fff; } /* Sidebar toggle button */ .sidebar-toggle { margin-left: auto; background: none; border: none; padding: 4px; cursor: pointer; } .sidebar-toggle:hover { background: rgba(0,0,0,0.05); border-radius: 4px; } /* Evidence typography */ .pa-summary-evidence .pa-evidence-item { font-size: 0.85em; color: #555; margin-left: 12px; } /* Increase spacing between summary items */ .pa-summary-list .pa-summary-item { margin-bottom: 1em; } /* Clickable summary header */ .clickable { cursor: pointer; } /* Status icon alignment in summary header */ .status-icon { margin-left: auto; display: inline-flex; } /* Draft button padding normalization */ .draft-btn { padding: 0.75em 1.5em; } /* Sidebar sticky action styling */ .pa-sidebar .input-section button { width: 100%; margin: 0; } .pa-sidebar .input-section input[type="text"] { width: 100%; box-sizing: border-box; } /* Sidebar Tabs General Background */ .tabs.sidebar-tabs { background-color: #f9f9f9; } /* Tab buttons */ .tabs.sidebar-tabs ul li button { background-color: transparent; color: #333; font-size: 0.95em; line-height: 1.2; } /* Active tab enhancement */ .tabs.sidebar-tabs ul li.active button { background-color: #fff; color: #2c3e50; /* darker accent */ border-bottom-color: #3498db; } /* Improve header text readability */ .pa-header h4 { font-size: 1.2em; margin-bottom: 0.25em; } .pa-header .status-display span { font-size: 1em; color: #444; } /* Sticky footer for Submit Responses */ .submit-footer { position: sticky; bottom: 0; background: #fff; padding: 8px; border-top: 1px solid #ddd; } .submit-footer .btn-primary { width: 100%; margin: 0; } /* Chat message styles */ .chat-user, .chat-agent { padding: 6px 8px; margin-bottom: 6px; border-radius: 4px; } .chat-user { background: #f0f4f8; align-self: flex-end; } .chat-agent { background: #fff; margin-left: 8px; } /* Ensure conversation-history flex column */ .conversation-history { /* This applies to PA sidebar */ display: flex; flex-direction: column; } /* User prompt text */ .user-prompt { margin: 4px 0; font-style: italic; color: #555; } /* Tooltip effect for clause detail */ .detail[title] { position: relative; cursor: help; } .detail[title]:hover::after { content: attr(title); position: absolute; left: 0; top: 100%; background: rgba(0,0,0,0.75); color: #fff; padding: 4px 8px; border-radius: 4px; white-space: nowrap; z-index: 10; margin-top: 4px; } /* Header and tabs occupy only needed space */ .pa-header, .tabs.sidebar-tabs { flex: 0 0 auto; } /* Summary list and chat history should scroll internally */ .pa-summary-list, .conversation-history { /* This applies to PA sidebar */ flex: 1 1 auto; overflow-y: auto; padding-right: 4px; /* accommodate scrollbar */ } /* Ensure submit-footer and chat input remain visible */ .submit-footer, .pa-sidebar .input-section { /* Includes chat input */ flex: 0 0 auto; } /* Layout for the Order Entry Tab content (form + sidebar) */ .order-entry-content-wrapper { display: flex; /* Estimate header+tabs height; adjust 100px if needed */ /* Height calc might be tricky, let flex handle it */ /* height: calc(100vh - 100px); */ flex-grow: 1; /* Let this wrapper grow */ overflow: hidden; /* Prevent this container itself from scrolling */ } /* Main content area (Order Form) */ #order-entry.tab-content { flex: 1; /* Take up remaining horizontal space */ overflow-y: auto; /* Scroll internally */ padding: 15px; /* Consistent padding */ /* REMOVED height: 100% from previous attempts */ } /* PA Sidebar */ .conversation-panel.pa-sidebar { /* Keep existing width styles (min/max-width) */ /* display: flex; flex-direction: column; already set */ height: 100%; /* Fill the wrapper height */ overflow: hidden; /* Prevent sidebar itself scrolling */ /* REMOVED position:relative and height: 100vh from previous attempts */ } /* Ensure sidebar internal content scrolls */ .pa-summary-list, .conversation-history { /* This applies to PA sidebar */ flex: 1 1 auto; overflow-y: auto; /* padding-right: 4px; */ /* Removed padding, let scrollbar overlay */ } /* Header, tabs, footer should not grow/shrink */ .pa-header, .tabs.sidebar-tabs, .submit-footer, .pa-sidebar .input-section { /* Includes chat input */ flex: 0 0 auto; } /* Reset any previous height styles that might conflict */ /* #order-entry.tab-content { */ /* NOTE: This rule overrides the previous height: 100% attempt. */ /* We want flexbox to control height, not an explicit percentage here. */ /* } */ /* Remove conflicting styles from previous CSS if needed */ /* e.g., if .patient-switcher-dropdown had styles before */ /* Error display styling from EhrApp */ .error-display { padding: 0.5em; margin-bottom: 1em; border: 1px solid; border-radius: 4px; } .file-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .system-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .loading-message, .no-data-message { padding: 1em; text-align: center; color: #555; } /* Layout for Asking State in OrdersTab */ .asking-layout-container { display: flex; gap: 1rem; /* Space between columns */ align-items: flex-start; /* Align panes to the top */ margin-top: 1rem; /* Add some margin above the two-column layout */ } .asking-layout-container > .left-pane { flex: 2; /* Give questions pane more width */ min-width: 0; /* Prevent flex item overflow */ } .asking-layout-container > .right-pane { flex: 1; /* Give scratchpad pane less width */ min-width: 0; /* Prevent flex item overflow */ /* Removed sticky positioning and height limits */ /* position: sticky; */ /* top: 1rem; */ /* max-height: calc(100vh - 2rem); */ /* overflow-y: auto; */ } /* Adjustments for sections when inside the two-column layout */ .asking-layout-container .questions-section { margin-top: 0; /* Remove margin from the top of the questions section */ /* Keep other questions-section styles if needed */ } .asking-layout-container .scratchpad-section { margin-top: 0; /* Remove margin from the top of the scratchpad section */ /* Add background/padding/border directly to the right-pane or keep on scratchpad-section */ background-color: #f9fafb; /* Light grey background */ padding: 1rem; border: 1px solid #e5e7eb; border-radius: 0.25rem; } /* Scratchpad specific styles (if not already defined) */ .scratchpad { /* Add styles for the overall scratchpad container if needed */ } .scratchpad-title { font-size: 1rem; /* Example size */ font-weight: 600; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid #e5e7eb; } .pad-block { margin-bottom: 1rem; } .pad-block:last-child { margin-bottom: 0; } .pad-heading { font-size: 0.9rem; font-weight: 600; margin-top: 0; margin-bottom: 0.3rem; color: #374151; /* Darker grey */ } .pad-list { list-style: disc; margin: 0 0 0 1.2rem; /* Indent list */ padding: 0; } .pad-list li { margin-bottom: 0.25rem; font-size: 0.85rem; color: #4b5563; } .pad-quote { border-left: 3px solid #d1d5db; /* Grey border */ margin: 0 0 1rem 0.5rem; /* Indent quote */ padding: 0.5rem 0.8rem; background-color: #f8f9fa; /* Very light background */ } .pad-quote p { margin: 0 0 0.3rem 0; font-size: 0.85rem; color: #4b5563; } .pad-quote cite { display: block; font-size: 0.75rem; color: #6b7280; /* Lighter grey */ font-style: normal; text-align: right; } .pad-tree { /* Add specific styles for criteria tree block if needed */ /* Maybe add a border or background */ } .pad-note p { font-size: 0.85rem; color: #4b5563; margin: 0; line-height: 1.4; } .pad-unknown { font-style: italic; color: #ef4444; /* Red for errors/unknown */ } /* History Turn Details */ .history-turn-details { border: 1px solid #e5e7eb; border-radius: 4px; margin-bottom: 0.5rem; background-color: #fff; } .history-turn-summary { padding: 0.4rem 0.6rem; cursor: pointer; font-weight: 500; background-color: #f9fafb; } .history-turn-summary:hover { background-color: #f3f4f6; } .history-turn-content { padding: 0.8rem; border-top: 1px solid #e5e7eb; } .history-subsection-title { font-size: 0.8rem; font-weight: 600; margin-top: 0.8rem; margin-bottom: 0.3rem; color: #1f2937; } .history-subsection-title:first-child { margin-top: 0; } /* Settings Modal Styles */ .modal-overlay { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent background */ display: flex; align-items: center; justify-content: center; z-index: 100; /* Ensure it's above other content */ } .modal-content { background-color: #fff; padding: 1.5rem; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 90%; max-width: 500px; /* Max width */ display: flex; flex-direction: column; gap: 1rem; } .modal-content h2 { margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; font-weight: 600; } .modal-status { font-size: 0.9rem; color: #4b5563; /* gray-600 */ background-color: #f3f4f6; /* gray-100 */ padding: 0.5rem 0.75rem; border-radius: 0.25rem; margin-bottom: 0.5rem; } .modal-content .form-group { margin-bottom: 0; /* Adjust if needed */ } .input-hint { font-size: 0.75rem; color: #6b7280; /* gray-500 */ margin-top: 0.25rem; } .modal-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1rem; border-top: 1px solid #e5e7eb; /* gray-200 */ padding-top: 1rem; } /* Add a specific class for the clear button if needed */ .btn-clear-key { margin-right: auto; /* Push clear button to the left */ background-color: #d1d5db; /* gray-300 */ color: #1f2937; /* gray-800 */ border-color: #d1d5db; } .btn-clear-key:hover:not(:disabled) { background-color: #9ca3af; /* gray-400 */ } /* ============================================== 3-Column Layout for Active Orders2 Workflow ============================================== */ .active-workflow-layout { display: flex; gap: 1rem; /* Space between columns */ width: 100%; margin-top: 1rem; /* Space above the columns */ /* Consider a max-height and overflow if content might get too long */ /* max-height: calc(100vh - 250px); */ /* Example: Adjust based on header/footer */ } .workflow-column { flex: 1; /* Each column takes equal width */ border: 1px solid #e0e0e0; /* Light border for separation */ border-radius: 8px; padding: 1rem; background-color: #ffffff; display: flex; flex-direction: column; /* Stack title and content vertically */ min-width: 0; /* Prevents flex items from overflowing */ max-height: 75vh; /* Limit column height */ overflow-y: auto; /* Allow columns to scroll independently */ } .workflow-column .column-title { margin-top: 0; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid #eee; font-size: 1.1rem; color: #333; } .workflow-column .placeholder-text { color: #888; font-style: italic; text-align: center; padding: 2rem 0; } /* Specific styling for column content if needed */ .questions-column .questions-section { /* Styles for the section containing QuestionCards */ } .scratchpad-column .scratchpad-section { /* Styles specific to the scratchpad container */ } .a2a-history-column .a2a-history-display { /* Removed inline styles, can add specific rules here */ flex-grow: 1; /* Allow history to take up space */ /* max-height is handled by workflow-column */ } /* Adjustments for History items within the column */ .a2a-history-column .conversation-history > div { /* Existing styles for user/agent messages are likely fine */ } /* ============================================== End 3-Column Layout Styles ============================================== */ /* Ensure existing history styles don't conflict badly */ /* (Review and adjust existing .history-section, .conversation-history if needed) */ /* Remove conflicting styles from previous CSS if needed */ /* e.g., if .patient-switcher-dropdown had styles before */ /* Error display styling from EhrApp */ .error-display { padding: 0.5em; margin-bottom: 1em; border: 1px solid; border-radius: 4px; } .file-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .system-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .loading-message, .no-data-message { padding: 1em; text-align: center; color: #555; } /* Layout for Asking State in OrdersTab */ .asking-layout-container { display: flex; gap: 1rem; /* Space between columns */ align-items: flex-start; /* Align panes to the top */ margin-top: 1rem; /* Add some margin above the two-column layout */ } .asking-layout-container > .left-pane { flex: 2; /* Give questions pane more width */ min-width: 0; /* Prevent flex item overflow */ } .asking-layout-container > .right-pane { flex: 1; /* Give scratchpad pane less width */ min-width: 0; /* Prevent flex item overflow */ /* Removed sticky positioning and height limits */ /* position: sticky; */ /* top: 1rem; */ /* max-height: calc(100vh - 2rem); */ /* overflow-y: auto; */ } /* Adjustments for sections when inside the two-column layout */ .asking-layout-container .questions-section { margin-top: 0; /* Remove margin from the top of the questions section */ /* Keep other questions-section styles if needed */ } .asking-layout-container .scratchpad-section { margin-top: 0; /* Remove margin from the top of the scratchpad section */ /* Add background/padding/border directly to the right-pane or keep on scratchpad-section */ background-color: #f9fafb; /* Light grey background */ padding: 1rem; border: 1px solid #e5e7eb; border-radius: 0.25rem; } /* Scratchpad specific styles (if not already defined) */ .scratchpad { /* Add styles for the overall scratchpad container if needed */ } .scratchpad-title { font-size: 1rem; /* Example size */ font-weight: 600; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid #e5e7eb; } .pad-block { margin-bottom: 1rem; } .pad-block:last-child { margin-bottom: 0; } .pad-heading { font-size: 0.9rem; font-weight: 600; margin-top: 0; margin-bottom: 0.3rem; color: #374151; /* Darker grey */ } .pad-list { list-style: disc; margin: 0 0 0 1.2rem; /* Indent list */ padding: 0; } .pad-list li { margin-bottom: 0.25rem; font-size: 0.85rem; color: #4b5563; } .pad-quote { border-left: 3px solid #d1d5db; /* Grey border */ margin: 0 0 1rem 0.5rem; /* Indent quote */ padding: 0.5rem 0.8rem; background-color: #f8f9fa; /* Very light background */ } .pad-quote p { margin: 0 0 0.3rem 0; font-size: 0.85rem; color: #4b5563; } .pad-quote cite { display: block; font-size: 0.75rem; color: #6b7280; /* Lighter grey */ font-style: normal; text-align: right; } .pad-tree { /* Add specific styles for criteria tree block if needed */ /* Maybe add a border or background */ } .pad-note p { font-size: 0.85rem; color: #4b5563; margin: 0; line-height: 1.4; } .pad-unknown { font-style: italic; color: #ef4444; /* Red for errors/unknown */ } /* History Turn Details */ .history-turn-details { border: 1px solid #e5e7eb; border-radius: 4px; margin-bottom: 0.5rem; background-color: #fff; } .history-turn-summary { padding: 0.4rem 0.6rem; cursor: pointer; font-weight: 500; background-color: #f9fafb; } .history-turn-summary:hover { background-color: #f3f4f6; } .history-turn-content { padding: 0.8rem; border-top: 1px solid #e5e7eb; } .history-subsection-title { font-size: 0.8rem; font-weight: 600; margin-top: 0.8rem; margin-bottom: 0.3rem; color: #1f2937; } .history-subsection-title:first-child { margin-top: 0; } /* Settings Modal Styles */ .modal-overlay { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent background */ display: flex; align-items: center; justify-content: center; z-index: 100; /* Ensure it's above other content */ } .modal-content { background-color: #fff; padding: 1.5rem; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 90%; max-width: 500px; /* Max width */ display: flex; flex-direction: column; gap: 1rem; } .modal-content h2 { margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; font-weight: 600; } .modal-status { font-size: 0.9rem; color: #4b5563; /* gray-600 */ background-color: #f3f4f6; /* gray-100 */ padding: 0.5rem 0.75rem; border-radius: 0.25rem; margin-bottom: 0.5rem; } .modal-content .form-group { margin-bottom: 0; /* Adjust if needed */ } .input-hint { font-size: 0.75rem; color: #6b7280; /* gray-500 */ margin-top: 0.25rem; } .modal-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1rem; border-top: 1px solid #e5e7eb; /* gray-200 */ padding-top: 1rem; } /* Add a specific class for the clear button if needed */ .btn-clear-key { margin-right: auto; /* Push clear button to the left */ background-color: #d1d5db; /* gray-300 */ color: #1f2937; /* gray-800 */ border-color: #d1d5db; } .btn-clear-key:hover:not(:disabled) { background-color: #9ca3af; /* gray-400 */ } /* Example highlighting for meets-criteria options */ .meets-criteria { background-color: #e6ffed; /* Light green background */ border-left: 4px solid #4CAF50; /* Green left border */ padding-left: 8px; /* Add some padding */ font-weight: bold; } /* Optional: Style the container div too */ .has-criteria-met-option { /* Maybe add a subtle border or different background */ border: 1px dashed #a5d6a7; } /* Ensure consistent padding/margin within the label */ .meets-criteria span.radio-option-label, .meets-criteria span.checkbox-option-label { display: inline-block; /* Helps with padding/alignment */ margin-left: 4px; } /* ============================================== 3-Column Layout for Active Orders2 Workflow ============================================== */ .active-workflow-layout { display: flex; gap: 1rem; /* Space between columns */ width: 100%; margin-top: 1rem; /* Space above the columns */ /* Consider a max-height and overflow if content might get too long */ /* max-height: calc(100vh - 250px); */ /* Example: Adjust based on header/footer */ } .workflow-column { flex: 1; /* Each column takes equal width */ border: 1px solid #e0e0e0; /* Light border for separation */ border-radius: 8px; padding: 1rem; background-color: #ffffff; display: flex; flex-direction: column; /* Stack title and content vertically */ min-width: 0; /* Prevents flex items from overflowing */ max-height: 75vh; /* Limit column height */ overflow-y: auto; /* Allow columns to scroll independently */ } .workflow-column .column-title { margin-top: 0; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid #eee; font-size: 1.1rem; color: #333; } .workflow-column .placeholder-text { color: #888; font-style: italic; text-align: center; padding: 2rem 0; } /* Specific styling for column content if needed */ .questions-column .questions-section { /* Styles for the section containing QuestionCards */ } .scratchpad-column .scratchpad-section { /* Styles specific to the scratchpad container */ } .a2a-history-column .a2a-history-display { /* Removed inline styles, can add specific rules here */ flex-grow: 1; /* Allow history to take up space */ /* max-height is handled by workflow-column */ } /* Adjustments for History items within the column */ .a2a-history-column .conversation-history > div { /* Existing styles for user/agent messages are likely fine */ } /* ============================================== End 3-Column Layout Styles ============================================== */ /* Ensure existing history styles don't conflict badly */ /* (Review and adjust existing .history-section, .conversation-history if needed) */ /* Remove conflicting styles from previous CSS if needed */ /* e.g., if .patient-switcher-dropdown had styles before */ /* Error display styling from EhrApp */ .error-display { padding: 0.5em; margin-bottom: 1em; border: 1px solid; border-radius: 4px; } .file-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .system-error { border-color: #fca5a5; background-color: #fee2e2; color: #b91c1c; } .loading-message, .no-data-message { padding: 1em; text-align: center; color: #555; } /* Layout for Asking State in OrdersTab */ .asking-layout-container { display: flex; gap: 1rem; /* Space between columns */ align-items: flex-start; /* Align panes to the top */ margin-top: 1rem; /* Add some margin above the two-column layout */ } .asking-layout-container > .left-pane { flex: 2; /* Give questions pane more width */ min-width: 0; /* Prevent flex item overflow */ } .asking-layout-container > .right-pane { flex: 1; /* Give scratchpad pane less width */ min-width: 0; /* Prevent flex item overflow */ /* Removed sticky positioning and height limits */ /* position: sticky; */ /* top: 1rem; */ /* max-height: calc(100vh - 2rem); */ /* overflow-y: auto; */ } /* Adjustments for sections when inside the two-column layout */ .asking-layout-container .questions-section { margin-top: 0; /* Remove margin from the top of the questions section */ /* Keep other questions-section styles if needed */ } .asking-layout-container .scratchpad-section { margin-top: 0; /* Remove margin from the top of the scratchpad section */ /* Add background/padding/border directly to the right-pane or keep on scratchpad-section */ background-color: #f9fafb; /* Light grey background */ padding: 1rem; border: 1px solid #e5e7eb; border-radius: 0.25rem; } /* Scratchpad specific styles (if not already defined) */ .scratchpad { /* Add styles for the overall scratchpad container if needed */ } .scratchpad-title { font-size: 1rem; /* Example size */ font-weight: 600; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid #e5e7eb; } .pad-block { margin-bottom: 1rem; } .pad-block:last-child { margin-bottom: 0; } .pad-heading { font-size: 0.9rem; font-weight: 600; margin-top: 0; margin-bottom: 0.3rem; color: #374151; /* Darker grey */ } .pad-list { list-style: disc; margin: 0 0 0 1.2rem; /* Indent list */ padding: 0; } .pad-list li { margin-bottom: 0.25rem; font-size: 0.85rem; color: #4b5563; } .pad-quote { border-left: 3px solid #d1d5db; /* Grey border */ margin: 0 0 1rem 0.5rem; /* Indent quote */ padding: 0.5rem 0.8rem; background-color: #f8f9fa; /* Very light background */ } .pad-quote p { margin: 0 0 0.3rem 0; font-size: 0.85rem; color: #4b5563; } .pad-quote cite { display: block; font-size: 0.75rem; color: #6b7280; /* Lighter grey */ font-style: normal; text-align: right; } .pad-tree { /* Add specific styles for criteria tree block if needed */ /* Maybe add a border or background */ } .pad-note p { font-size: 0.85rem; color: #4b5563; margin: 0; line-height: 1.4; } .pad-unknown { font-style: italic; color: #ef4444; /* Red for errors/unknown */ } /* History Turn Details */ .history-turn-details { border: 1px solid #e5e7eb; border-radius: 4px; margin-bottom: 0.5rem; background-color: #fff; } .history-turn-summary { padding: 0.4rem 0.6rem; cursor: pointer; font-weight: 500; background-color: #f9fafb; } .history-turn-summary:hover { background-color: #f3f4f6; } .history-turn-content { padding: 0.8rem; border-top: 1px solid #e5e7eb; } .history-subsection-title { font-size: 0.8rem; font-weight: 600; margin-top: 0.8rem; margin-bottom: 0.3rem; color: #1f2937; } .history-subsection-title:first-child { margin-top: 0; } /* Settings Modal Styles */ .modal-overlay { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent background */ display: flex; align-items: center; justify-content: center; z-index: 100; /* Ensure it's above other content */ } .modal-content { background-color: #fff; padding: 1.5rem; border-radius: 0.5rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); width: 90%; max-width: 500px; /* Max width */ display: flex; flex-direction: column; gap: 1rem; } .modal-content h2 { margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; font-weight: 600; } .modal-status { font-size: 0.9rem; color: #4b5563; /* gray-600 */ background-color: #f3f4f6; /* gray-100 */ padding: 0.5rem 0.75rem; border-radius: 0.25rem; margin-bottom: 0.5rem; } .modal-content .form-group { margin-bottom: 0; /* Adjust if needed */ } .input-hint { font-size: 0.75rem; color: #6b7280; /* gray-500 */ margin-top: 0.25rem; } .modal-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1rem; border-top: 1px solid #e5e7eb; /* gray-200 */ padding-top: 1rem; } /* Add a specific class for the clear button if needed */ .btn-clear-key { margin-right: auto; /* Push clear button to the left */ background-color: #d1d5db; /* gray-300 */ color: #1f2937; /* gray-800 */ border-color: #d1d5db; } .btn-clear-key:hover:not(:disabled) { background-color: #9ca3af; /* gray-400 */ } /* Align checkbox labels similarly */ .checkbox-label { display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer; } /* Default state for labels */ .radio-label, .checkbox-label { padding: 0.125rem 0.5rem; /* Add some padding to create space */ border: 1px dashed #d1d5db; /* Subtle dashed grey border */ border-radius: 0.25rem; /* Rounded corners */ margin-bottom: 0.25rem; /* Add a little space below each option */ /* display: inline-flex, align-items: center, gap: 0.5rem, cursor: pointer are already applied */ } .form-radio { vertical-align: middle; /* Explicitly align input within the flex line */ height: 1rem; /* Approx h-4 */ width: 1rem; /* Approx w-4 */ color: #4f46e5; /* Approx text-indigo-600 */ /* Use browser default radio or custom style */ } /* Optional: Style the container div too */ .has-criteria-met-option { /* Maybe add a subtle border or different background */ /* border: 1px dashed #a5d6a7; Removed, handled by .meets-criteria on label */ } /* Ensure consistent padding/margin within the label */ .meets-criteria span.radio-option-label, .meets-criteria span.checkbox-option-label { display: inline-block; /* Helps with padding/alignment */ margin-left: 4px; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmandel/health-record-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server