Spaces:
Paused
Paused
| /* Dark theme page background */ | |
| body { | |
| margin: 0; | |
| font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', | |
| sans-serif; | |
| background: #0b1020; | |
| color: #f5f5f5; | |
| } | |
| button { | |
| font-size: 1rem; | |
| } | |
| /* NEW: prevent scrolling while consent overlay is active */ | |
| body.no-scroll { | |
| overflow: hidden; | |
| } | |
| a { | |
| color: #4da6ff; | |
| } | |
| .chat-container { | |
| width: 90dvw; | |
| height: 90dvh; | |
| margin: 5dvh auto; | |
| background: #141b2f; | |
| border-radius: 16px; | |
| box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45); | |
| box-sizing: border-box; | |
| display: flex; | |
| flex-direction: column; | |
| padding: 16px; | |
| } | |
| .chat-header { | |
| padding: 0px 4px 12px; | |
| border-bottom: 1px solid #2c3554; | |
| } | |
| .chat-header h1 { | |
| margin: 0; | |
| font-size: 1.8rem; | |
| } | |
| .chat-header .subtitle { | |
| margin: 4px 0 0; | |
| color: #c0c6e0; | |
| font-size: 0.95rem; | |
| } | |
| /* Controls bar */ | |
| .controls-bar { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| padding: 8px 4px; | |
| border-bottom: 1px solid #2c3554; | |
| } | |
| .control-group { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .control-group select { | |
| background: #0d1324; | |
| border-radius: 8px; | |
| border: 1px solid #2c3554; | |
| color: #f5f5f5; | |
| padding: 4px 8px; | |
| font-size: 0.85rem; | |
| } | |
| .clear-button { | |
| align-self: center; | |
| padding: 6px 12px; | |
| border-radius: 8px; | |
| border: 1px solid #2c3554; | |
| background: #dc2626ba; | |
| color: #f5f5f5; | |
| font-size: 0.85rem; | |
| cursor: pointer; | |
| } | |
| .clear-button:hover { | |
| background: #dc2626; | |
| } | |
| .settings-button { | |
| align-self: center; | |
| padding: 12px 12px; | |
| border-radius: 8px; | |
| border: 1px solid #2c3554; | |
| background: #1f2840; | |
| color: #f5f5f5; | |
| font-size: 0.85rem; | |
| cursor: pointer; | |
| margin-left: auto; | |
| } | |
| .settings-button:hover { | |
| background: #273256; | |
| } | |
| /* Chat window */ | |
| .chat-window { | |
| flex: 1; | |
| margin-top: 10px; | |
| padding: 10px; | |
| overflow-y: auto; | |
| background: #0d1324; | |
| border-radius: 12px; | |
| } | |
| /* Message bubbles */ | |
| .msg-bubble { | |
| max-width: 75%; | |
| padding: 8px 12px; | |
| margin-bottom: 8px; | |
| border-radius: 12px; | |
| font-size: 0.95rem; | |
| line-height: 1.4; | |
| } | |
| .msg-bubble.user { | |
| margin-left: auto; | |
| background: #4c6fff; | |
| color: #ffffff; | |
| border-bottom-right-radius: 4px; | |
| } | |
| .msg-bubble.assistant { | |
| margin-right: auto; | |
| background: #1f2840; | |
| color: #f5f5f5; | |
| border-bottom-left-radius: 4px; | |
| } | |
| /* Input area */ | |
| .chat-input-area { | |
| display: flex; | |
| gap: 8px; | |
| margin-top: 12px; | |
| border-top: 1px solid #2c3554; | |
| padding-top: 8px; | |
| } | |
| .chat-input-container { | |
| flex: 1; | |
| border-radius: 10px; | |
| border: 1px solid #2c3554; | |
| background: #0d1324; | |
| padding: 8px; | |
| resize: none; | |
| } | |
| .chat-input-area textarea { | |
| background: transparent; | |
| border: none; | |
| resize: none; | |
| outline: none; | |
| color: #f5f5f5; | |
| font-size: 0.95rem; | |
| width: 100%; | |
| } | |
| .chat-toolbar { | |
| display: flex; | |
| justify-content: space-between; | |
| } | |
| .toolbar-btn { | |
| background: transparent; | |
| border: none; | |
| resize: none; | |
| outline: none; | |
| color: #f5f5f5; | |
| cursor: pointer; | |
| transition: background 0.2s; | |
| } | |
| .toolbar-btn { | |
| /* background-color: rgba(255, 255, 255, 0.1); */ | |
| margin-left: auto; | |
| } | |
| /* File upload */ | |
| .file-drop-area { | |
| /* 1. Dimensions */ | |
| min-height: 150px; /* TODO: might be too large for mobile */ | |
| /* 2. Layout */ | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| /* 3. Appearance */ | |
| border: 2px dashed #444; /* Dashed line makes it look like a 'slot' */ | |
| border-radius: 12px; | |
| background-color: #111; /* Slightly lighter than your black background */ | |
| color: #888; | |
| cursor: pointer; | |
| /* 4. Spacing */ | |
| margin-top: 20px; | |
| padding: 20px; | |
| /* 5. Text */ | |
| text-align: center; | |
| } | |
| .file-drop-area.active { | |
| border-color: #4285f4; | |
| background-color: rgba(66, 133, 244, 0.05); | |
| color: white; | |
| } | |
| .upload-file-area { | |
| /* Fix the position of the close button to the top right corner of the modal */ | |
| position: relative; | |
| max-height: 90dvh; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .file-list { | |
| background-color: #111; | |
| border: 1px solid black; | |
| border-radius: 8px; | |
| } | |
| .file-item { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 12px; | |
| } | |
| .no-file { | |
| display: flex; | |
| justify-content: center; | |
| padding: 16px; | |
| } | |
| .file-actions { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| .file-actions button { | |
| display: flex; | |
| gap: 6px; | |
| } | |
| svg { | |
| width: 16px; | |
| height: 16px; | |
| } | |
| /* Spinning animation for the uploading button */ | |
| @keyframes spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| .spinning { | |
| animation: spin 1s linear infinite; | |
| } | |
| /* Generic buttons */ | |
| .ok-button { | |
| padding: 8px 18px; | |
| border-radius: 10px; | |
| border: none; | |
| background: #4c6fff; | |
| color: white; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .ok-button:hover { | |
| background: #3453e6; | |
| } | |
| .no-button { | |
| padding: 8px 18px; | |
| border-radius: 10px; | |
| border: none; | |
| background: #dc2626; | |
| color: white; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .no-button:hover { | |
| background-color: #b91c1c; | |
| } | |
| .disabled-button { | |
| padding: 8px 18px; | |
| border-radius: 10px; | |
| border: none; | |
| font-weight: 600; | |
| background-color: #e5e7eb; | |
| color: #9ca3af; | |
| cursor: not-allowed; | |
| } | |
| .center-button { | |
| text-align: center; | |
| } | |
| /* Status and comment text */ | |
| .status-comment { | |
| margin-top: 6px; | |
| font-size: 0.85rem; | |
| display: flex; | |
| justify-content: space-between; | |
| } | |
| .status-info { | |
| color: #ffce56; | |
| } | |
| .status-ok { | |
| color: #8be48b; | |
| } | |
| .status-error { | |
| color: #ff8080; | |
| } | |
| /* CONSENT OVERLAY FIXED VERSION */ | |
| .modal { | |
| /* Covers the entier view port */ | |
| position: fixed; | |
| left: 0; | |
| top: 0; | |
| width: 100%; | |
| height: 100%; | |
| /* Center the content of the modal */ | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| /* Put the modal in front */ | |
| z-index: 1; | |
| /* Mask what is behind the modal */ | |
| background-color: rgba(0, 0, 0, 0.8); | |
| } | |
| .modal h2 { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| .slider { | |
| /* Smooth scrolling */ | |
| scroll-snap-type: x mandatory; | |
| scroll-behavior: smooth; | |
| /* Clip slides that are off-screen */ | |
| overflow-x: hidden; | |
| /* Constrain the slider so children can scroll */ | |
| max-height: 90dvh; | |
| /* Place the elements next to the others horizontally*/ | |
| display: flex; | |
| } | |
| .slide { | |
| /* Each slide fills the full width of the slider */ | |
| min-width: 100%; | |
| } | |
| /* Dark theme overlay box */ | |
| .modal-content { | |
| /* Snap this slide to the left edge of the slider */ | |
| scroll-snap-align: start; | |
| /* Center the content of the modal */ | |
| display: flex; | |
| justify-content: flex-start; | |
| /* Looks */ | |
| background: #141b2f; /* CHANGED: match theme */ | |
| color: #f5f5f5; /* NEW: readable on dark bg */ | |
| padding: 24px; | |
| border-radius: 12px; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); | |
| box-sizing: border-box; | |
| margin: 0 auto; | |
| /* Prevent the modal from touching the edges of the screen */ | |
| width: 90%; | |
| /* Enable scrolling */ | |
| overflow-y: auto; | |
| } | |
| .modal-content.slide { | |
| max-width: 400px; | |
| } | |
| .language-modal, | |
| .consent-box, | |
| .profile, | |
| .settings-modal-content { | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: space-between; | |
| } | |
| .language-modal, | |
| .consent-box { | |
| max-height: 350px; | |
| } | |
| .form-group { | |
| margin-bottom: 1.5rem; | |
| } | |
| label, .group-label { | |
| display: block; | |
| font-weight: 600; | |
| margin-bottom: 0.5rem; | |
| font-size: 0.95rem; | |
| } | |
| /* Modern Inputs */ | |
| select, input[type="text"] { | |
| /* max-width: 402px; */ | |
| width: 100%; | |
| padding: 12px 6px 12px 6px; | |
| border: 1px solid #ddd; | |
| border-radius: 8px; | |
| font-size: 1rem; | |
| outline: none; | |
| transition: border-color 0.2s; | |
| } | |
| select:focus, input[type="text"]:focus { | |
| border-color: #007bff; | |
| } | |
| /* Checkbox & Radio Alignment */ | |
| .radio-group { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 1rem; | |
| } | |
| .checkbox-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); /* Creates two equal columns */ | |
| gap: 12px; | |
| margin-top: 8px; | |
| } | |
| .checkbox-grid-lang { | |
| display: grid; | |
| grid-template-columns: repeat(1, 1fr); /* Creates two equal columns */ | |
| gap: 12px; | |
| margin-top: 8px; | |
| } | |
| .checkbox-grid-lang label, | |
| .checkbox-grid label { | |
| font-weight: 400; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 8px; | |
| border: 1px solid #eee; /* Light border makes it look like a contained element */ | |
| border-radius: 6px; | |
| cursor: pointer; | |
| transition: background 0.2s; | |
| } | |
| .checkbox-grid-lang label:hover, | |
| .checkbox-grid label:hover { | |
| background-color: #ffffff; /* The white background you wanted */ | |
| color: #111111; /* Forces the text to be dark/visible */ | |
| border-color: #007bff; /* Optional: adds a blue border to show it's active */ | |
| box-shadow: 0 2px 8px rgba(0,0,0,0.1); /* Optional: adds a soft depth */ | |
| } | |
| /* Make checkboxes slightly larger and blue */ | |
| input[type="checkbox"] { | |
| width: 18px; | |
| height: 18px; | |
| cursor: pointer; | |
| accent-color: #007bff; /* Modern way to color native inputs */ | |
| } | |
| .radio-group label, .checkbox-grid label, .checkbox-grid-lang label { | |
| font-weight: 400; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| cursor: pointer; | |
| } | |
| .consent-check { | |
| display: flex; | |
| align-items: center; | |
| margin: 16px 0; | |
| gap: 10px; | |
| } | |
| /* Disable look for CHAMP fixed temperature */ | |
| input[type='range'].disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| } | |
| /* Comment area */ | |
| .comment-area { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| background: #141b2f; | |
| padding: 24px; | |
| border-radius: 15px; | |
| border: 1px solid #2c3554; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); | |
| } | |
| .comment-area h2 { | |
| margin: 0 0 8px 0; | |
| font-size: 1.5rem; | |
| color: #f5f5f5; | |
| font-weight: 600; | |
| } | |
| .comment-area textarea { | |
| /* max-width: 425px; */ | |
| min-height: 120px; | |
| border-radius: 10px; | |
| border: 1px solid #2c3554; | |
| background: #0d1324; | |
| color: #f5f5f5; | |
| padding: 12px; | |
| resize: vertical; | |
| font-size: 1rem; | |
| font-family: inherit; | |
| transition: border-color 0.2s ease; | |
| } | |
| .comment-area textarea:focus { | |
| outline: none; | |
| border-color: #4a5f8f; | |
| } | |
| .comment-area textarea::placeholder { | |
| color: #6b7280; | |
| } | |
| /* Button container */ | |
| .comment-area .button-group { | |
| display: flex; | |
| gap: 12px; | |
| justify-content: flex-end; | |
| } | |
| /* TODO: TO GENERALIZE */ | |
| /* Cancel button */ | |
| .comment-area .cancelBtn { | |
| background: #0d132475; | |
| color: #9ca3af; | |
| border: 1px solid #2c3554; | |
| padding: 8px 18px; | |
| border-radius: 10px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .comment-area .cancelBtn:hover { | |
| background: #0d1324; | |
| color: #f5f5f5; | |
| border-color: #4a5f8f; | |
| } | |
| /* Close button (X) */ | |
| .closeBtn { | |
| position: absolute; | |
| top: 15px; | |
| right: 15px; | |
| width: 28px; /* Explicit small width */ | |
| height: 28px; /* Explicit small height */ | |
| padding: 0; | |
| background: transparent; | |
| color: #6b7280; | |
| border: none; | |
| border-radius: 4px; | |
| font-size: 20px; | |
| line-height: 28px; /* Center the × vertically */ | |
| text-align: center; /* Center the × horizontally */ | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| /* Settings modal */ | |
| .settings-modal-content { | |
| position: relative; | |
| } | |
| /* Font size */ | |
| .font-size-container { | |
| display: flex; | |
| gap: 12px; | |
| margin-top: 8px; | |
| justify-content: flex-start; | |
| } | |
| .font-size-btn { | |
| padding: 12px 20px; | |
| border-radius: 8px; | |
| border: 1px solid #2c3554; | |
| background: #1f2840; | |
| color: #f5f5f5; | |
| font-size: 1rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| min-width: 60px; | |
| } | |
| .font-size-btn:hover { | |
| background: #273256; | |
| border-color: #3d4a6e; | |
| transform: translateY(-1px); | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); | |
| } | |
| .font-size-btn:active { | |
| transform: translateY(0); | |
| } | |
| /* RESPONSIVE DESIGN */ | |
| @media (max-width: 460px) { | |
| /* Hide the text descriptions of the file action buttons */ | |
| .file-actions button span { | |
| display: none; | |
| } | |
| /* Enlarge the chat container on mobile */ | |
| .chat-container { | |
| margin: 0; | |
| width: 100dvw; | |
| height: 100dvh; | |
| } | |
| /* Reduce the font size of the title on mobile */ | |
| /* Also, add a gap between the title and the details */ | |
| .chat-header h1 { | |
| margin: 0 0 10px 0; | |
| font-size: 1.4rem; | |
| } | |
| /* Increase the size of the modals on mobile */ | |
| .modal-content { | |
| width: 90%; | |
| } | |
| } | |
| @media (max-height: 720px) { | |
| /* Enlarge the chat container on small screens */ | |
| .chat-container { | |
| margin: 0; | |
| width: 100dvw; | |
| height: 100dvh; | |
| } | |
| /* Reduce the font size of the title */ | |
| .chat-header h1 { | |
| font-size: 1.4rem; | |
| } | |
| /* Increase the size of the modals */ | |
| .modal-content { | |
| width: 90%; | |
| } | |
| } | |
| @media (min-width: 460px) { | |
| details { | |
| display: block; | |
| } | |
| details[open] { | |
| display: block; | |
| } | |
| details summary { | |
| display: none; | |
| } | |
| } |