body { font-family: Arial, sans-serif; background-color: #2c2c2c; color: #f0f0f0; margin: 0; padding: 20px; display: flex; justify-content: center; align-items: flex-start; min-height: 100vh; } .container { background-color: #3a3a3a; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); width: 90%; max-width: 800px; } h1, h2 { color: #e0e0e0; text-align: center; margin-bottom: 20px; } .section { margin-bottom: 30px; padding: 15px; background-color: #4a4a4a; border-radius: 6px; } /* Connection Status */ .connection-status { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 20px; } .status-light { width: 20px; height: 20px; border-radius: 50%; border: 2px solid #555; } .status-light.green { background-color: #28a745; } /* Connected */ .status-light.red { background-color: #dc3545; } /* Disconnected */ .status-light.amber { background-color: #ffc107; } /* Auto Reconnect */ /* Dialog */ .dialog { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #3a3a3a; padding: 30px; border-radius: 10px; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.5); z-index: 1000; text-align: center; border: 1px solid #666; /* These are the crucial lines for initial hiding and transition */ opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.3s ease, visibility 0.3s ease; } /* This is the class that makes it visible */ .dialog.show { opacity: 1; visibility: visible; pointer-events: all; } .dialog label { display: block; margin-bottom: 8px; font-weight: bold; } .dialog input { width: calc(100% - 20px); padding: 10px; margin-bottom: 15px; border: 1px solid #555; background-color: #2c2c2c; color: #f0f0f0; border-radius: 4px; } /* Buttons */ button { background-color: #007bff; color: white; padding: 10px 15px; border: none; border-radius: 5px; cursor: pointer; font-size: 16px; margin: 5px; transition: background-color 0.2s ease; display: flex; /* For icons to be centered easily */ align-items: center; justify-content: center; gap: 5px; /* Space between icon and text if any */ } button:hover { background-color: #0056b3; } .dialog button { width: 120px; } .button-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; justify-content: center; } .transition-button { background-color: #28a745; /* Green for transitions */ } .transition-button:hover { background-color: #218838; } /* Audio Controls */ .audio-controls-grid { display: flex; /* Use flexbox for horizontal layout */ gap: 20px; justify-content: center; flex-wrap: wrap; /* Allow wrapping for smaller screens */ } .audio-source { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px; border: 1px solid #555; border-radius: 5px; background-color: #3a3a3a; } .volume-slider { /* This style will attempt to make it vertical, but cross-browser support varies */ -webkit-appearance: slider-vertical; /* For Chrome, Safari, Edge */ writing-mode: bt-lr; /* For Firefox */ height: 150px; /* Adjust height as needed */ width: 15px; /* Adjust width as needed */ background: #555; border-radius: 5px; outline: none; transition: opacity .2s; margin-bottom: 10px; } .volume-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; border-radius: 50%; background: #007bff; cursor: pointer; } .volume-slider::-moz-range-thumb { width: 25px; height: 25px; border-radius: 50%; background: #007bff; cursor: pointer; } /* Mute Toggle Button - Now with SVG */ .mute-toggle-button { width: 60px; /* Make it square or adjust as needed for icon */ height: 60px; padding: 0; /* Remove padding as content is an SVG */ background-color: #555; /* Default background */ border: 2px solid #666; } .mute-toggle-button:hover { background-color: #777; } .mute-toggle-button svg { width: 30px; /* Size of the SVG icon */ height: 30px; transition: fill 0.2s ease, transform 0.1s ease; } /* Muted State Styles */ .mute-toggle-button.muted { background-color: #dc3545; /* Red background when muted */ border-color: #bb2d3b; } .mute-toggle-button.muted:hover { background-color: #bb2d3b; } /* SVG Fill Colors (active/unmuted vs muted) */ .mute-toggle-button svg path { fill: #28a745; /* Green for unmuted (default) */ transition: fill 0.2s ease; } .mute-toggle-button.muted svg path { fill: white; /* White for muted icons, contrasts with red background */ } /* Scene Thumbnails */ .scene-thumbnails-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; justify-content: center; } .scene-thumbnail { background-color: #555; border: 2px solid #666; border-radius: 8px; overflow: hidden; cursor: pointer; transition: all 0.3s ease; text-align: center; padding-bottom: 10px; /* Space for text */ } .scene-thumbnail:hover { border-color: #007bff; box-shadow: 0 0 15px rgba(0, 123, 255, 0.5); transform: translateY(-3px); } .scene-thumbnail.active { border-color: #28a745; /* Green border for the active (preview) scene */ box-shadow: 0 0 15px rgba(40, 167, 69, 0.7); } .scene-thumbnail img { width: 100%; height: auto; display: block; border-bottom: 1px solid #666; } .scene-thumbnail span { display: block; padding-top: 8px; font-size: 1.1em; font-weight: bold; color: #e0e0e0; } .mute-groups-grid { display: flex; /* Use flexbox for layout */ justify-content: center; gap: 20px; flex-wrap: wrap; margin-top: 20px; } .group-mute-toggle { width: 120px; /* Adjust size as needed */ height: 100px; /* Adjust size as needed */ padding: 0; flex-direction: column; /* Stack icon and text */ background-color: #6c757d; /* Default gray for group buttons */ border: 2px solid #555; font-size: 1.1em; font-weight: bold; } .group-mute-toggle:hover { background-color: #5a6268; } .group-mute-toggle svg { width: 40px; /* Larger icon for group buttons */ height: 40px; margin-bottom: 5px; /* Space between icon and text */ transition: fill 0.2s ease; } /* Muted state for group buttons */ .group-mute-toggle.muted { background-color: #dc3545; /* Red when group is muted */ border-color: #bb2d3b; } .group-mute-toggle.muted:hover { background-color: #bb2d3b; } .group-mute-toggle svg path { fill: white; /* White icon fill (contrast with button color) */ transition: fill 0.2s ease; } .group-mute-toggle.unmuted { background-color: #28a745; }