/* ARQUIVO CSS COMPLETAMENTE NOVO E SEPARADO */ @keyframes slide-up-paciente { /* Nome do keyframe mudado */ from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .paciente-video-container { /* Classe mudada */ font-family: Arial, sans-serif; } .paciente-video-button { /* Classe mudada */ position: fixed; bottom: 20px; right: 95px; /* Posição igual ao outro, ao lado da acessibilidade */ z-index: 9999; width: 60px; height: 60px; border-radius: 50%; background-color: #007bff; /* Cor pode ser diferente, se quiser */ color: white; border: none; box-shadow: 0 4px 8px rgba(0,0,0,0.2); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .paciente-video-button:hover { /* Classe mudada */ transform: scale(1.1); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3); } .paciente-video-window { /* Classe mudada */ position: fixed; bottom: 90px; right: 95px; width: 500px; height: 380px; background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 -5px 20px rgba(0, 0, 0, 0.15); z-index: 10000; display: flex; flex-direction: column; overflow: hidden; animation: slide-up-paciente 0.3s ease-out; /* Keyframe mudado */ transition: all 0.4s ease-in-out; } .paciente-video-window.pseudo-fullscreen { /* Classe mudada */ width: 100vw; height: 100vh; bottom: 0; right: 0; border-radius: 0; border: none; z-index: 99999; } .paciente-video-window.pseudo-fullscreen .paciente-video-header { /* Classe mudada */ display: none; } .paciente-video-header { /* Classe mudada */ display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; background-color: #f7f7f7; border-bottom: 1px solid #e0e0e0; flex-shrink: 0; } .paciente-video-header h3 { /* Classe mudada */ margin: 0; font-size: 16px; } .paciente-video-controls { /* Classe mudada */ display: flex; align-items: center; gap: 8px; } /* Os estilos internos (como .control-btn, .call-screen, .patient-list) podem ser mantidos, pois estão "dentro" das classes que mudamos. Mas para garantir 100% de separação, renomeei todos. */ .paciente-video-body { /* Classe mudada */ flex-grow: 1; overflow-y: hidden; display: flex; flex-direction: column; padding: 0; transition: padding 0.4s ease-in-out; } .paciente-video-window.pseudo-fullscreen .paciente-video-body { /* Classe mudada */ padding: 0; } /* Estilos da Lista e Chamada (copiados e prefixados) Não há problema em reutilizar .patient-list, .call-screen, etc, mas vamos renomear para segurança. */ .patient-list-container { width: 100%; height: 100%; display: flex; flex-direction: column; } .patient-list-container > p { padding: 15px 15px 10px 15px; margin: 0; font-size: 15px; color: #555; border-bottom: 1px solid #f0f0f0; flex-shrink: 0; } .patient-list { list-style: none; margin: 0; padding: 0; overflow-y: auto; flex-grow: 1; } .patient-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 15px; border-bottom: 1px solid #f0f0f0; transition: background-color 0.2s; } .patient-item:hover { background-color: #f9f9f9; } .patient-item span { font-weight: 600; color: #333; } .call-btn { display: flex; align-items: center; gap: 6px; background-color: #28a745; color: white; border: none; border-radius: 5px; padding: 8px 12px; font-size: 14px; font-weight: 600; cursor: pointer; transition: background-color 0.2s; } .call-btn:hover { background-color: #218838; } /* Tela de Chamada */ .call-screen { width: 100%; height: 100%; display: flex; flex-direction: column; background-color: #2c2c2c; color: white; } .call-screen h4 { margin: 0; padding: 12px; text-align: center; background-color: rgba(0,0,0,0.2); font-size: 16px; flex-shrink: 0; } .video-placeholder { flex-grow: 1; display: flex; align-items: center; justify-content: center; width: 100%; background-color: #1a1a1a; color: #888; font-style: italic; overflow: hidden; } .call-actions { padding: 15px; display: flex; justify-content: center; background-color: rgba(0,0,0,0.2); flex-shrink: 0; } .hang-up-btn { display: flex; align-items: center; gap: 10px; background-color: #dc3545; color: white; border: none; border-radius: 50px; padding: 12px 24px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.2s; } .hang-up-btn:hover { background-color: #c82333; transform: scale(1.05); } /* Controles (reutilizados, mas dentro de .paciente-video-header) */ .control-btn { background: none; border: none; cursor: pointer; color: #888; padding: 4px; display: flex; align-items: center; justify-content: center; border-radius: 4px; transition: background-color 0.2s; } .control-btn:hover { background-color: #e0e0e0; } .close-btn { font-size: 24px; line-height: 1; } .fullscreen-btn { font-size: 14px; } /* Animação de surgir */ @keyframes slide-up-paciente { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Animação "Pulsar" (Ringing) */ @keyframes ringing { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7); } 70% { transform: scale(1.1); box-shadow: 0 0 0 20px rgba(0, 123, 255, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(0, 123, 255, 0); } } .paciente-video-container { font-family: Arial, sans-serif; } /* Botão flutuante */ .paciente-video-button { position: fixed; bottom: 20px; right: 95px; z-index: 9999; width: 60px; height: 60px; border-radius: 50%; background-color: #007bff; color: white; border: none; box-shadow: 0 4px 8px rgba(0,0,0,0.2); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .paciente-video-button:hover { transform: scale(1.1); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3); } /* Aplica a animação "pulsar" */ .paciente-video-button.ringing { animation: ringing 1.5s infinite; } /* Janela de Vídeo */ .paciente-video-window { position: fixed; bottom: 90px; right: 95px; width: 500px; height: 380px; background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 -5px 20px rgba(0, 0, 0, 0.15); z-index: 10000; display: flex; flex-direction: column; overflow: hidden; animation: slide-up-paciente 0.3s ease-out; transition: all 0.4s ease-in-out; } /* Modo Tela Cheia (Simulado) */ .paciente-video-window.pseudo-fullscreen { width: 100vw; height: 100vh; bottom: 0; right: 0; border-radius: 0; border: none; z-index: 99999; } .paciente-video-window.pseudo-fullscreen .paciente-video-header { display: none; } /* Header da Janela */ .paciente-video-header { display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; background-color: #f7f7f7; border-bottom: 1px solid #e0e0e0; flex-shrink: 0; } .paciente-video-header h3 { margin: 0; font-size: 16px; } .paciente-video-controls { display: flex; align-items: center; gap: 8px; } /* Corpo da Janela */ .paciente-video-body { flex-grow: 1; overflow-y: hidden; display: flex; flex-direction: column; padding: 0; transition: padding 0.4s ease-in-out; } .paciente-video-window.pseudo-fullscreen .paciente-video-body { padding: 0; } /* --- ESTILOS DOS 3 ESTADOS --- */ /* 1. Tela de Chamada Ativa (Jitsi) */ .call-screen { width: 100%; height: 100%; display: flex; flex-direction: column; background-color: #2c2c2c; color: white; } .video-placeholder { /* (Caso o Jitsi não carregue) */ flex-grow: 1; display: flex; align-items: center; justify-content: center; width: 100%; background-color: #1a1a1a; color: #888; font-style: italic; overflow: hidden; } /* 2. Tela de Chamada Recebida */ .incoming-call-screen { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; background-color: #f7f9fc; padding: 20px; text-align: center; } .incoming-call-screen p { font-size: 16px; color: #555; margin: 0; } .incoming-call-screen h3 { font-size: 24px; color: #333; margin: 10px 0 30px 0; } .incoming-call-actions { display: flex; justify-content: space-around; width: 100%; max-width: 300px; } .incoming-call-actions button { display: flex; flex-direction: column; align-items: center; gap: 8px; border: none; border-radius: 50%; width: 70px; height: 70px; justify-content: center; font-size: 14px; font-weight: 600; color: white; cursor: pointer; transition: all 0.2s; } .incoming-call-actions button:hover { transform: scale(1.1); } .decline-btn { /* Botão Recusar */ background-color: #dc3545; } .decline-btn:hover { background-color: #c82333; } .accept-btn { /* Botão Atender */ background-color: #28a745; } .accept-btn:hover { background-color: #218838; } /* 3. Tela de Espera (Ocioso) */ .patient-idle-screen { display: flex; align-items: center; justify-content: center; height: 100%; color: #888; font-style: italic; padding: 20px; text-align: center; } /* Estilos dos controles (reutilizados) */ .control-btn { background: none; border: none; cursor: pointer; color: #888; padding: 4px; display: flex; align-items: center; justify-content: center; border-radius: 4px; transition: background-color 0.2s; } .control-btn:hover { background-color: #e0e0e0; } .close-btn { font-size: 24px; line-height: 1; } .fullscreen-btn { font-size: 14px; }