Spaces:
Runtime error
Runtime error
| :root { | |
| --bg-color: #0b0f14; | |
| --text-primary: #ffffff; | |
| --btn-hold: #2d3135; | |
| --btn-end: #ea4335; | |
| } | |
| /* RESET EVERYTHING */ | |
| body, | |
| html, | |
| .gradio-container { | |
| background-color: var(--bg-color) ; | |
| margin: 0 ; | |
| padding: 0 ; | |
| width: 100vw ; | |
| height: 100vh ; | |
| overflow: hidden ; | |
| } | |
| /* Hide all Gradio native elements (footer, noise, logos) */ | |
| footer, | |
| .footer, | |
| .svelte-1t38q2d, | |
| .icon-button, | |
| .wrap.svelte-1t38q2d { | |
| display: none ; | |
| } | |
| /* Force our container to be a fixed overlay */ | |
| .gemini-live-container { | |
| position: fixed ; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: var(--bg-color); | |
| z-index: 9999; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| /* Clean up internal Gradio wrappers */ | |
| .gemini-live-container>div { | |
| background: transparent ; | |
| border: none ; | |
| box-shadow: none ; | |
| width: 100%; | |
| } | |
| /* --- HEADER --- */ | |
| .header-bar { | |
| position: absolute; | |
| top: 40px; | |
| left: 0; | |
| width: 100%; | |
| display: flex; | |
| justify-content: center; | |
| z-index: 50; | |
| pointer-events: none; | |
| } | |
| .live-indicator { | |
| background: rgba(45, 49, 53, 0.5); | |
| padding: 8px 16px; | |
| border-radius: 20px; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| color: #fff; | |
| font-size: 14px; | |
| font-weight: 500; | |
| backdrop-filter: blur(10px); | |
| } | |
| .live-icon { | |
| width: 16px; | |
| height: 16px; | |
| fill: #fff; | |
| } | |
| /* --- TRANSCRIPT --- */ | |
| .transcript-area { | |
| position: absolute; | |
| top: 40%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| width: 90%; | |
| max-width: 600px; | |
| text-align: center; | |
| z-index: 40; | |
| pointer-events: none; | |
| } | |
| .live-transcript { | |
| font-size: 28px; | |
| color: #fff; | |
| line-height: 1.4; | |
| font-family: 'Google Sans', sans-serif; | |
| text-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); | |
| } | |
| .transcript-history { | |
| font-size: 16px; | |
| color: rgba(255, 255, 255, 0.5); | |
| margin-bottom: 20px; | |
| } | |
| /* --- BOTTOM VISUALIZER --- */ | |
| .visualizer-area { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 350px; | |
| z-index: 10; | |
| pointer-events: none; | |
| overflow: hidden; | |
| background: linear-gradient(to top, #1e252f 0%, transparent 100%); | |
| } | |
| .wave-glow { | |
| position: absolute; | |
| bottom: -80px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| width: 150%; | |
| height: 300px; | |
| background: radial-gradient(50% 50% at 50% 50%, rgba(66, 133, 244, 0.5) 0%, rgba(0, 0, 0, 0) 100%); | |
| filter: blur(40px); | |
| animation: pulse-wave 4s ease-in-out infinite alternate; | |
| } | |
| @keyframes pulse-wave { | |
| 0% { | |
| opacity: 0.5; | |
| transform: translateX(-50%) scale(1); | |
| } | |
| 100% { | |
| opacity: 0.8; | |
| transform: translateX(-50%) scale(1.1); | |
| } | |
| } | |
| /* --- CONTROLS --- */ | |
| .controls-bar { | |
| position: absolute; | |
| bottom: 50px; | |
| left: 0; | |
| width: 100%; | |
| display: flex; | |
| justify-content: center; | |
| gap: 60px; | |
| z-index: 60; | |
| } | |
| .control-btn { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 10px; | |
| cursor: pointer; | |
| position: relative; | |
| width: 80px; | |
| } | |
| .btn-circle { | |
| width: 72px; | |
| height: 72px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: transform 0.1s; | |
| } | |
| .btn-circle:active { | |
| transform: scale(0.95); | |
| } | |
| .btn-hold .btn-circle { | |
| background-color: var(--btn-hold); | |
| } | |
| .btn-end .btn-circle { | |
| background-color: var(--btn-end); | |
| } | |
| .btn-label { | |
| font-size: 14px; | |
| color: rgba(255, 255, 255, 0.7); | |
| } | |
| .icon-hold { | |
| width: 24px; | |
| height: 24px; | |
| background: #fff; | |
| mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24px' viewBox='0 -960 960 960' width='24px'%3E%3Cpath d='M560-200v-560h160v560H560Zm-320 0v-560h160v560H240Z'/%3E%3C/svg%3E") no-repeat center; | |
| -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24px' viewBox='0 -960 960 960' width='24px'%3E%3Cpath d='M560-200v-560h160v560H560Zm-320 0v-560h160v560H240Z'/%3E%3C/svg%3E") no-repeat center; | |
| } | |
| .icon-end { | |
| width: 24px; | |
| height: 24px; | |
| background: #fff; | |
| mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24px' viewBox='0 -960 960 960' width='24px'%3E%3Cpath d='m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z'/%3E%3C/svg%3E") no-repeat center; | |
| -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24px' viewBox='0 -960 960 960' width='24px'%3E%3Cpath d='m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z'/%3E%3C/svg%3E") no-repeat center; | |
| } | |
| /* Audio Overlay on Hold Button */ | |
| .audio-interface { | |
| position: absolute ; | |
| top: 0; | |
| left: 0; | |
| width: 100% ; | |
| height: 100% ; | |
| opacity: 0 ; | |
| cursor: pointer; | |
| z-index: 100; | |
| } |