Spaces:
Build error
Build error
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| } | |
| .app-container { | |
| height: 100vh; | |
| padding: 20px; | |
| background: #f0f2f5; | |
| } | |
| .join-form { | |
| max-width: 400px; | |
| margin: 40px auto; | |
| padding: 20px; | |
| background: white; | |
| border-radius: 8px; | |
| box-shadow: 0 2px 4px rgba(0,0,0,0.1); | |
| } | |
| .form-group { | |
| margin-bottom: 15px; | |
| } | |
| input { | |
| width: 100%; | |
| padding: 10px; | |
| border: 1px solid #ddd; | |
| border-radius: 4px; | |
| font-size: 14px; | |
| } | |
| .button-group { | |
| display: flex; | |
| gap: 10px; | |
| } | |
| .primary-btn, .secondary-btn { | |
| flex: 1; | |
| padding: 10px; | |
| border: none; | |
| border-radius: 4px; | |
| cursor: pointer; | |
| font-weight: 500; | |
| } | |
| .primary-btn { | |
| background: #0056d6; | |
| color: white; | |
| } | |
| .secondary-btn { | |
| background: #f0f2f5; | |
| color: #0056d6; | |
| } | |
| .meeting-room { | |
| height: 100%; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .meeting-header { | |
| padding: 15px; | |
| background: white; | |
| border-radius: 8px; | |
| margin-bottom: 20px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .room-info { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .video-grid { | |
| flex: 1; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1rem; | |
| padding: 1rem; | |
| overflow: auto; | |
| } | |
| .video-container { | |
| position: relative; | |
| width: 100%; | |
| padding-top: 56.25%; /* 16:9 Aspect Ratio */ | |
| background: #2c2c2c; | |
| border-radius: 8px; | |
| overflow: hidden; | |
| background: #2a2a2a; | |
| aspect-ratio: 16/9; | |
| } | |
| video { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .video-overlay { | |
| position: absolute; | |
| bottom: 10px; | |
| left: 10px; | |
| color: white; | |
| padding: 5px 10px; | |
| border-radius: 4px; | |
| background: rgba(0,0,0,0.5); | |
| } | |
| .controls-bar { | |
| padding: 20px; | |
| display: flex; | |
| justify-content: center; | |
| gap: 1rem; | |
| background: rgba(0, 0, 0, 0.8); | |
| border-radius: 8px; | |
| } | |
| .control-btn { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| border: none; | |
| background: #424242; | |
| color: white; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .control-btn:hover { | |
| background: #616161; | |
| } | |
| .control-btn.danger { | |
| background: #dc3545; | |
| color: white; | |
| } | |
| .control-btn.leave-btn { | |
| background: #dc3545; | |
| } | |
| .control-btn.leave-btn:hover { | |
| background: #c82333; | |
| } | |
| .icon-button { | |
| border: none; | |
| background: none; | |
| cursor: pointer; | |
| padding: 5px; | |
| } | |
| .hidden { | |
| display: none; | |
| } | |
| .video-wrapper { | |
| position: relative; | |
| width: 100%; | |
| height: 100%; | |
| background: #1a1a1a; | |
| border-radius: 8px; | |
| overflow: hidden; | |
| transition: all 0.3s ease; /* Smooth transition for video containers */ | |
| } | |
| .video-wrapper.removing { | |
| opacity: 0; | |
| transform: scale(0.8); | |
| } | |
| .video-wrapper video { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .participant-name { | |
| position: absolute; | |
| bottom: 10px; | |
| left: 10px; | |
| color: white; | |
| background: rgba(0, 0, 0, 0.5); | |
| padding: 5px 10px; | |
| border-radius: 4px; | |
| font-size: 14px; | |
| } | |
| .video-grid { | |
| display: grid; | |
| gap: 10px; | |
| padding: 10px; | |
| height: calc(100vh - 100px); | |
| grid-auto-flow: dense; /* Helps fill gaps automatically */ | |
| transition: all 0.3s ease; /* Smooth transition when layout changes */ | |
| } | |
| .video-grid.single-participant { | |
| grid-template-columns: 1fr; | |
| } | |
| .video-grid.two-participants { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| .video-grid.few-participants { | |
| grid-template-columns: repeat(2, 1fr); | |
| grid-template-rows: repeat(2, 1fr); | |
| } | |
| .video-grid.many-participants { | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| grid-auto-rows: 1fr; | |
| } | |
| .participant-list { | |
| position: fixed; | |
| right: 0; | |
| top: 0; | |
| width: 250px; | |
| height: 100vh; | |
| background: rgba(0, 0, 0, 0.8); | |
| color: white; | |
| padding: 20px; | |
| transform: translateX(100%); | |
| transition: transform 0.3s ease; | |
| } | |
| .participant-list.show { | |
| transform: translateX(0); | |
| } | |
| .participant-list h3 { | |
| margin: 0 0 10px 0; | |
| padding-bottom: 5px; | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .participant-list ul { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .participant-list li { | |
| padding: 8px 10px; | |
| margin: 5px 0; | |
| border-radius: 4px; | |
| background: rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| align-items: center; | |
| animation: participantFade 0.3s ease-in-out; | |
| } | |
| .participant-list li.leaving { | |
| animation: participantLeave 0.3s ease-in-out forwards; | |
| } | |
| .participant-list li .material-icons { | |
| margin-right: 8px; | |
| font-size: 18px; | |
| } | |
| @keyframes participantFade { | |
| from { | |
| opacity: 0; | |
| transform: translateX(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes participantLeave { | |
| from { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| to { | |
| opacity: 0; | |
| transform: translateX(20px); | |
| } | |
| } | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(-10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| /* Screen share participant styling */ | |
| .screen-share-participant { | |
| font-style: italic; | |
| color: #4CAF50; | |
| } | |
| .video-wrapper[id^="video-screen_"] { | |
| border: 2px solid #4CAF50; | |
| } | |
| /* Active share button state */ | |
| #shareScreenBtn.active { | |
| background-color: #4CAF50; | |
| color: white; | |
| } | |
| .notifications-container { | |
| position: fixed; | |
| top: 20px; | |
| right: 20px; | |
| z-index: 1000; | |
| } | |
| .notification { | |
| background: rgba(0, 0, 0, 0.8); | |
| color: white; | |
| padding: 10px 20px; | |
| border-radius: 4px; | |
| margin-bottom: 10px; | |
| animation: fadeIn 0.3s ease; | |
| } | |
| .notification.error { | |
| background: rgba(220, 53, 69, 0.9); | |
| } | |
| .room-container { | |
| height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| background: #1a1a1a; | |
| } | |
| /* Modal Styles Enhancement */ | |
| .modal { | |
| display: none; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-color: rgba(0, 0, 0, 0.7); | |
| z-index: 1000; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| } | |
| .modal.show { | |
| display: flex; | |
| justify-content: center; | |
| align-items: center; | |
| opacity: 1; | |
| } | |
| .modal-content { | |
| position: relative; | |
| background-color: #fff; | |
| width: 90%; | |
| max-width: 800px; | |
| max-height: 80vh; | |
| border-radius: 12px; | |
| box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); | |
| transform: scale(0.7); | |
| opacity: 0; | |
| transition: all 0.3s ease; | |
| } | |
| .modal.show .modal-content { | |
| transform: scale(1); | |
| opacity: 1; | |
| } | |
| .modal-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 20px; | |
| border-bottom: 1px solid #eee; | |
| } | |
| .modal-header h3 { | |
| margin: 0; | |
| color: #333; | |
| font-size: 1.5rem; | |
| font-weight: 500; | |
| } | |
| .close-btn { | |
| background: none; | |
| border: none; | |
| color: #666; | |
| font-size: 24px; | |
| cursor: pointer; | |
| padding: 0 8px; | |
| transition: color 0.2s ease; | |
| } | |
| .close-btn:hover { | |
| color: #333; | |
| } | |
| .mask-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); | |
| gap: 20px; | |
| padding: 20px; | |
| max-height: calc(80vh - 80px); | |
| overflow-y: auto; | |
| } | |
| .mask-option { | |
| background: #fff; | |
| border-radius: 8px; | |
| padding: 15px; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| border: 2px solid transparent; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| } | |
| .mask-option:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | |
| } | |
| .mask-option.selected { | |
| border-color: #2196F3; | |
| background-color: #E3F2FD; | |
| } | |
| .mask-option img { | |
| width: 100%; | |
| height: 150px; | |
| object-fit: contain; | |
| border-radius: 4px; | |
| margin-bottom: 10px; | |
| } | |
| .mask-name { | |
| text-align: center; | |
| font-size: 14px; | |
| color: #333; | |
| font-weight: 500; | |
| text-transform: capitalize; | |
| } | |
| .mask-category { | |
| color: #666; | |
| font-size: 12px; | |
| margin-top: 5px; | |
| text-align: center; | |
| } | |
| /* Scrollbar style for mask grid */ | |
| .mask-grid::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .mask-grid::-webkit-scrollbar-track { | |
| background: #f1f1f1; | |
| border-radius: 4px; | |
| } | |
| .mask-grid::-webkit-scrollbar-thumb { | |
| background: #888; | |
| border-radius: 4px; | |
| } | |
| .mask-grid::-webkit-scrollbar-thumb:hover { | |
| background: #666; | |
| } | |
| .control-btn.active { | |
| background-color: #dc3545; | |
| color: white; | |
| } | |