* { margin: 0; padding: 0; box-sizing: border-box; font-family: monospace; font-size: 16px; } body { height: 100vh; display: flex; justify-content: center; align-items: center; transition: background-color 0.3s, color 0.3s; } body.dark { background-color: #121212; color: #f0f0f0; } body.light { background-color: #f0f0f0; color: #121212; } .theme-toggle { position: absolute; top: 20px; right: 20px; width: 40px; height: 40px; border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: background-color 0.3s; } body.dark .theme-toggle { background-color: #2a2a2a; } body.light .theme-toggle { background-color: #e0e0e0; } .container { width: 80%; max-width: 800px; height: 80vh; display: flex; flex-direction: column; } .room-info { padding: 10px; margin-bottom: 10px; border-radius: 5px; transition: background-color 0.3s; display: none; } body.dark .room-info { background-color: #2a2a2a; } body.light .room-info { background-color: #e0e0e0; } .room-code { font-weight: bold; margin-bottom: 5px; } .members { font-size: 14px; } .terminal { flex: 1; display: flex; flex-direction: column; border-radius: 5px; overflow: hidden; transition: background-color 0.3s; } body.dark .terminal { background-color: #1e1e1e; border: 1px solid #333; } body.light .terminal { background-color: #fff; border: 1px solid #ccc; } .output { flex: 1; padding: 10px; overflow-y: auto; white-space: pre-wrap; word-break: break-word; } .input-line { display: flex; padding: 10px; border-top: 1px solid; transition: border-color 0.3s; } body.dark .input-line { border-color: #333; } body.light .input-line { border-color: #ccc; } .prompt { margin-right: 5px; } #input { flex: 1; background: transparent; border: none; outline: none; color: inherit; } .message { margin-bottom: 5px; animation: typewriter 0.5s steps(40, end); } .system-message { color: #ff5722; } @keyframes typewriter { from { width: 0; } to { width: 100%; } } .owner-tag { color: #ff5722; font-style: italic; } .in-call { color: #4caf50; } .speaking { animation: pulse 0.5s infinite alternate; font-weight: bold; } @keyframes pulse { from { opacity: 0.7; } to { opacity: 1; } } .call-info { margin-top: 10px; color: #4caf50; font-weight: bold; }