Spaces:
Sleeping
Sleeping
| /** | |
| * Copyright 2025 Google LLC | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| /* Basic Reset & Body Style */ | |
| html { | |
| height: 100%; | |
| --image-fixed-width: 280px; | |
| } | |
| body { | |
| font-family: sans-serif; | |
| line-height: 1.6; | |
| background-color: #f4f4f4; | |
| color: #333; | |
| margin: 0; | |
| display: flex; | |
| flex-direction: column; | |
| user-select: none; | |
| } | |
| .main { | |
| display: none; /*display: grid;*/ | |
| grid-template-columns: 1fr minmax(500px, 800px) minmax(300px, 1fr); | |
| grid-template-rows: auto; | |
| column-gap: 20px; | |
| row-gap: 10px; | |
| padding: 30px; | |
| } | |
| h1, | |
| h2 { | |
| color: #333; | |
| } | |
| .page-header h1 { | |
| margin: 0; | |
| } | |
| .container { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 25px; | |
| padding: 20px; | |
| flex-grow: 1; | |
| justify-content: center; | |
| } | |
| /* Top Navigation Styles */ | |
| .top-navigation { | |
| display: flex; | |
| align-items: center; | |
| padding-top: 30px; | |
| gap: 15px; /* Space between back button and case tabs */ | |
| border-bottom: 1px solid #E0E0E0; /* Optional: a subtle separator */ | |
| margin-bottom: 10px; | |
| align-items: flex-start; | |
| justify-content: center; | |
| } | |
| .nav-button { | |
| display: inline-flex; /* Changed from inline-flex on parent to allow direct styling */ | |
| justify-content: center; | |
| align-items: center; | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| .nav-button-inner { | |
| overflow: hidden; | |
| border-radius: 100px; /* Very rounded corners */ | |
| outline: 1px solid #C4C7C5; /* Outline color */ | |
| outline-offset: -1px; /* Outline inside */ | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| padding: 6px 12px; | |
| gap: 8px; /* Increased gap slightly for better visual separation */ | |
| transition: background-color 0.2s ease; | |
| } | |
| .nav-button-icon { | |
| font-size: 20px; /* Icon size */ | |
| color: #444746; /* Icon color */ | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .nav-button-text { | |
| color: #444746; /* Text color */ | |
| font-size: 14px; | |
| font-family: 'Google Sans Text', sans-serif; | |
| font-weight: 500; | |
| line-height: 20px; | |
| white-space: nowrap; | |
| } | |
| .nav-button-case.active .nav-button-inner, | |
| .nav-button:hover .nav-button-inner { | |
| background-color: rgba(68, 71, 70, 0.10); /* Focused/hover background */ | |
| } | |
| .nav-button-info { | |
| color: #004A77; | |
| margin: 0 20px; | |
| } | |
| /* Column Styles */ | |
| .report-section, | |
| .image-section, | |
| .explanation-section { | |
| position: relative; | |
| float: right; | |
| } | |
| .image-section { | |
| justify-content: center; | |
| display: flex; | |
| flex-direction: column; | |
| justify-self: end; | |
| } | |
| .report-section { | |
| flex: 1; | |
| max-width: 800px; | |
| } | |
| .image-header { | |
| text-align: center; | |
| color: black; | |
| font-size: 22px; | |
| font-family: Google Sans; | |
| font-weight: 400; | |
| line-height: 28px; | |
| word-wrap: break-word; | |
| margin: 5px; | |
| } | |
| .case-selector-tabs-container { | |
| display: grid; | |
| justify-content: center; | |
| align-items: center; | |
| grid-template-columns: min-content auto; | |
| column-gap: 20px; | |
| row-gap: 10px; | |
| padding-left: 20px; | |
| white-space: nowrap; | |
| } | |
| .case-selector-tabs-modality-container { | |
| display: flex; | |
| align-items: center; | |
| width: 100%; | |
| justify-content: flex-start; | |
| } | |
| .case-selector-tabs { | |
| display: flex; | |
| flex-wrap: wrap; | |
| } | |
| /* Report Text & Sentences */ | |
| .report-text-area { | |
| padding: 30px; | |
| overflow-y: auto; | |
| background-color: #fdfdfd; | |
| border-radius: 28px; | |
| border: 2px solid #E9E9E9; | |
| } | |
| /* Styles for clickable sentences within the report text area */ | |
| .report-sentence { | |
| cursor: pointer; | |
| padding: 2px 0; | |
| transition: background-color 0.2s ease; | |
| border-radius: 14.272px; | |
| border: 1.359px solid #F1E161; | |
| } | |
| .report-sentence:hover { | |
| background: #F1E161; | |
| mix-blend-mode: multiply; | |
| } | |
| .report-sentence.selected-sentence { | |
| background: #F1E161; | |
| mix-blend-mode: multiply; | |
| } | |
| /* Image Section */ | |
| .image-container { | |
| position: relative; | |
| border: 1px solid #ccc; | |
| min-height: 100px; | |
| display: flex; | |
| flex-direction: column; | |
| background-color: #f0f0f0; | |
| margin: 0 auto; /* Keep auto margin for centering if desired */ | |
| width: var(--image-fixed-width); | |
| } | |
| .image-container img { | |
| display: block; | |
| max-width: 100%; | |
| height: auto; | |
| } | |
| #report-image { | |
| width: var(--image-fixed-width); | |
| min-width: var(--image-fixed-width); /* Ensure min-width also uses the variable if it's meant to be the same */ | |
| } | |
| #image-loading { | |
| width: var(--image-fixed-width); | |
| } | |
| /* Note specific to CT images, displayed under the image */ | |
| #ct-image-note { | |
| display: none; /* Initially hidden, controlled by JavaScript */ | |
| text-align: center; | |
| margin-top: 10px; | |
| font-size: 0.9em; | |
| color: #555; | |
| padding: 0 10px; /* Add some padding so text doesn't touch edges if it wraps */ | |
| word-wrap: break-word; /* Ensures text wraps to prevent overflow */ | |
| width: var(--image-fixed-width); /* Same width as the image */ | |
| } | |
| .marker { | |
| position: absolute; | |
| transform: translate(-50%, -50%); | |
| pointer-events: none; | |
| display: none; | |
| transition: top 0.3s ease-in-out, left 0.3s ease-in-out; | |
| width: max-content; | |
| } | |
| /* Explanation Section */ | |
| .explanation-box { | |
| border: 1px solid #eee; | |
| min-height: 50px; | |
| background-color: #F1E161; | |
| box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.25); | |
| position: absolute; | |
| left: -20px; | |
| top: 0px; | |
| width: 300px; | |
| transition: top 0.3s ease-in-out, background-color 0.3s ease, height 0.3s ease; | |
| } | |
| .explanation-header { | |
| font-size: 22px; | |
| font-style: normal; | |
| font-weight: 400; | |
| padding: 10px 10px 0; | |
| } | |
| .loading .explanation-header { | |
| display: none; | |
| } | |
| /* New style for the content wrapper inside explanation-box */ | |
| #explanation-content { | |
| padding: 10px; | |
| overflow-y: auto; | |
| height: 100%; | |
| box-sizing: border-box; | |
| } | |
| /* Style for when the box is loading */ | |
| .explanation-box.loading { | |
| background-color: #cfcfcf; | |
| } | |
| /* Adjust #explanation-loading (the div element) to be an overlay */ | |
| #explanation-loading { | |
| display: none; | |
| font-style: italic; | |
| color: #777; | |
| text-align: center; | |
| padding: 10px; | |
| } | |
| /* Show #explanation-loading when its parent #explanation-output (which is .explanation-box) has class 'loading' */ | |
| #explanation-output.loading > #explanation-loading { | |
| display: flex; | |
| } | |
| /* Utility Classes */ | |
| .error-message { | |
| color: #d9534f; | |
| background-color: #f2dede; | |
| border: 1px solid #ebccd1; | |
| padding: 10px; | |
| border-radius: 4px; | |
| margin-top: 10px; | |
| text-align: center; | |
| } | |
| /* Responsive Adjustments (Optional) */ | |
| @media (max-width: 768px) { | |
| .container { | |
| flex-direction: column; | |
| } | |
| } | |
| /* Info Page Styles */ | |
| .info { | |
| flex-grow: 1; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| } | |
| .info-page-container { | |
| display: flex; | |
| flex-direction: row-reverse; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 40px; | |
| padding: 40px; | |
| background-color: #fff; | |
| max-width: 1200px; | |
| margin: 20px auto; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); | |
| box-sizing: border-box; | |
| } | |
| .info-content { | |
| flex: 1; | |
| min-width: 350px; | |
| max-width: 600px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| font-size: 18px; | |
| } | |
| .info-header { | |
| margin-bottom: 10px; | |
| } | |
| .info-title-med, | |
| .info-title-demo { | |
| font-family: 'Google Sans', sans-serif; | |
| font-size: 48px; | |
| font-weight: 400; | |
| } | |
| #info-button .nav-button-inner{ | |
| background-color: #C2E7FF; | |
| } | |
| .info-title-demo { | |
| color: #969696; | |
| margin-left: 10px; | |
| } | |
| .info-subtitle-demo { | |
| color: #969696; | |
| font-size: 28px; | |
| } | |
| .info-text { | |
| font-family: 'Google Sans', sans-serif; | |
| line-height: 1.6; | |
| color: #333; | |
| } | |
| .info-button { | |
| font-family: 'Google Sans Text', sans-serif; | |
| background-color: #0B57D0; | |
| color: white; | |
| font-size: 14px; | |
| font-weight: 500; | |
| padding: 12px 24px; | |
| border: none; | |
| border-radius: 100px; | |
| cursor: pointer; | |
| text-align: center; | |
| transition: background-color 0.3s ease; | |
| align-self: flex-start; | |
| } | |
| /* Hover state for the button */ | |
| .info-button:hover { | |
| background-color: #0a4db8; | |
| /* Darker blue on hover */ | |
| } | |
| .info-disclaimer-box { | |
| border: 1px solid #CDCDCD; | |
| border-radius: 15px; | |
| padding: 15px 20px; | |
| margin-top: 20px; | |
| } | |
| .info-disclaimer-text { | |
| font-family: 'Google Sans', sans-serif; | |
| color: #333; | |
| line-height: 1.5; | |
| margin: 0; | |
| font-size: 14px; | |
| } | |
| .info-disclaimer-title { | |
| border-radius: 14.272px; | |
| border: 1.359px solid #F1E161; | |
| background: #F1E161; | |
| mix-blend-mode: multiply; | |
| } | |
| .info-disclaimer-link { | |
| color: #0B57D0; | |
| font-weight: 500; | |
| text-decoration: none; | |
| } | |
| .info-disclaimer-link:hover { | |
| text-decoration: underline; | |
| } | |
| .info-image-container { | |
| flex: 1; | |
| min-width: 300px; | |
| max-width: 500px; | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| } | |
| .info-image { | |
| max-width: 100%; | |
| height: auto; | |
| border-radius: 8px; | |
| } | |
| /* Responsive adjustments for info page */ | |
| @media (max-width: 768px) { | |
| .info-page-container { | |
| flex-direction: column; | |
| padding: 20px; | |
| margin: 10px; | |
| } | |
| .info-content { | |
| max-width: 100%; | |
| align-items: center; | |
| text-align: center; | |
| } | |
| .info-button { | |
| align-self: center; | |
| } | |
| .info-header { | |
| text-align: center; | |
| } | |
| .info-title-med, | |
| .info-title-demo { | |
| font-size: 36px; | |
| } | |
| .info-text { | |
| font-size: 16px; | |
| } | |
| } | |
| /* --- Immersive Info Dialog Styles --- */ | |
| .dialog-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-color: rgba(0, 0, 0, 0.6); /* Semi-transparent backdrop */ | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; /* Ensure it's on top */ | |
| opacity: 0; | |
| visibility: hidden; | |
| transition: opacity 0.3s ease, visibility 0.3s ease; | |
| } | |
| .dialog-overlay.active { | |
| opacity: 1; | |
| visibility: visible; | |
| } | |
| .dialog-box { | |
| background: #fff; | |
| border-radius: 12px; | |
| box-shadow: 0 8px 30px rgba(0,0,0,0.15); | |
| width: 85%; | |
| max-width: 800px; /* Adjust for desired largeness */ | |
| max-height: 85vh; /* Ensure it fits vertically and allows scrolling */ | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; /* Important for border-radius with scrollable content */ | |
| transform: scale(0.95); | |
| transition: transform 0.3s ease; | |
| } | |
| .dialog-overlay.active .dialog-box { | |
| transform: scale(1); | |
| } | |
| .dialog-title-text { | |
| padding: 24px 24px 16px 24px; | |
| margin: 0; | |
| font-size: 1.6rem; /* Adjust as needed */ | |
| font-weight: 500; /* Using Google Sans weight */ | |
| color: #202124; /* Dark grey text color */ | |
| border-bottom: 1px solid #e0e0e0; /* Subtle separator */ | |
| flex-shrink: 0; /* Prevent title from shrinking */ | |
| } | |
| .dialog-body-scrollable { | |
| padding: 16px 24px 24px 24px; | |
| overflow-y: auto; /* Enable scrolling for TBD content */ | |
| flex-grow: 1; /* Allow body to take available space */ | |
| color: #3c4043; /* Standard body text color */ | |
| line-height: 1.6; | |
| } | |
| .dialog-close-btn { | |
| position: absolute; | |
| top: 12px; | |
| right: 12px; | |
| background: transparent; | |
| border: none; | |
| cursor: pointer; | |
| padding: 10px; /* Increase clickable area */ | |
| line-height: 0; /* Helps align icon if it's just an icon */ | |
| border-radius: 50%; | |
| transition: background-color 0.2s ease-in-out; | |
| z-index: 10; /* Ensure close button is above title/body */ | |
| } | |
| .dialog-close-btn:hover { | |
| background-color: rgba(0,0,0,0.08); | |
| } | |
| .dialog-close-btn .material-symbols-outlined { | |
| font-size: 24px; /* Standard Material Icon size */ | |
| color: #5f6368; /* Standard icon color */ | |
| display: block; /* Better for layout */ | |
| } | |
| .hf-logo { | |
| vertical-align: middle; | |
| width: 30px; | |
| } | |
| .floating-disclaimer { | |
| padding: 5px 10px; | |
| margin-top: 10px; | |
| color: #333; | |
| display: flex; | |
| align-items: center; | |
| font-size: 12px; | |
| background-color: lightcyan; | |
| text-align: justify; | |
| } | |
| .disclaimer-icon { | |
| vertical-align: middle; | |
| margin-right: 10px; | |
| font-weight: 300 ; | |
| } | |
| .nav-button-back { | |
| /*justify-self: start; | |
| margin-left: 30px;*/ | |
| } |