Spaces:
Running on Zero
Running on Zero
| :root { | |
| color-scheme: dark; | |
| --ms-bg: #090b0f; | |
| --ms-bg-elevated: #0d1016; | |
| --ms-panel: rgba(18, 21, 29, 0.82); | |
| --ms-panel-solid: #12151d; | |
| --ms-panel-hover: #171b25; | |
| --ms-border: rgba(255, 255, 255, 0.085); | |
| --ms-border-strong: rgba(255, 255, 255, 0.14); | |
| --ms-text: #f4f5f7; | |
| --ms-text-soft: #b5bac6; | |
| --ms-muted: #747b8c; | |
| --ms-faint: #4f5564; | |
| --ms-accent: #8b7cff; | |
| --ms-accent-2: #5f8cff; | |
| --ms-accent-soft: rgba(139, 124, 255, 0.15); | |
| --ms-success: #63d8a2; | |
| --ms-warning: #f4bf75; | |
| --ms-danger: #ff758e; | |
| --ms-radius-xl: 22px; | |
| --ms-radius-lg: 16px; | |
| --ms-radius-md: 12px; | |
| --ms-shadow: 0 28px 80px rgba(0, 0, 0, 0.34), 0 1px 0 rgba(255, 255, 255, 0.025) inset; | |
| --ms-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| --ms-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; | |
| } | |
| /* Gradio 6 mounts the app in a custom-element shadow root. Styling only | |
| html/body leaves the host transparent in fresh light-mode browsers. */ | |
| :host { | |
| display: block; | |
| min-height: 100vh; | |
| color-scheme: dark; | |
| background: | |
| radial-gradient(1000px 620px at 10% -10%, rgba(92, 75, 202, 0.18), transparent 62%), | |
| radial-gradient(780px 500px at 96% 8%, rgba(53, 103, 175, 0.12), transparent 66%), | |
| linear-gradient(180deg, #0a0c11 0%, #090b0f 50%, #080a0d 100%); | |
| } | |
| html, | |
| body { | |
| min-height: 100%; | |
| background: var(--ms-bg) ; | |
| } | |
| body { | |
| margin: 0; | |
| color: var(--ms-text); | |
| font-family: var(--ms-font); | |
| -webkit-font-smoothing: antialiased; | |
| text-rendering: optimizeLegibility; | |
| } | |
| body::before { | |
| position: fixed; | |
| z-index: -2; | |
| inset: 0; | |
| content: ""; | |
| pointer-events: none; | |
| background: | |
| radial-gradient(1000px 620px at 10% -10%, rgba(92, 75, 202, 0.18), transparent 62%), | |
| radial-gradient(780px 500px at 96% 8%, rgba(53, 103, 175, 0.12), transparent 66%), | |
| linear-gradient(180deg, #0a0c11 0%, #090b0f 50%, #080a0d 100%); | |
| } | |
| body::after { | |
| position: fixed; | |
| z-index: -1; | |
| inset: 0; | |
| content: ""; | |
| pointer-events: none; | |
| opacity: 0.28; | |
| background-image: linear-gradient(rgba(255, 255, 255, 0.012) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(255, 255, 255, 0.012) 1px, transparent 1px); | |
| background-size: 32px 32px; | |
| mask-image: linear-gradient(to bottom, black, transparent 78%); | |
| } | |
| .gradio-container, | |
| .gradio-container.dark { | |
| min-height: 100vh ; | |
| background: | |
| radial-gradient(1000px 620px at 10% -10%, rgba(92, 75, 202, 0.18), transparent 62%), | |
| radial-gradient(780px 500px at 96% 8%, rgba(53, 103, 175, 0.12), transparent 66%), | |
| linear-gradient(180deg, #0a0c11 0%, #090b0f 50%, #080a0d 100%) ; | |
| color: var(--ms-text) ; | |
| font-family: var(--ms-font) ; | |
| } | |
| .gradio-container .prose, | |
| .gradio-container .prose * { | |
| color: inherit; | |
| } | |
| #app-shell { | |
| width: min(1180px, calc(100% - 40px)); | |
| margin: 0 auto; | |
| padding: 38px 0 64px; | |
| gap: 20px; | |
| } | |
| #masthead { | |
| position: relative; | |
| overflow: hidden; | |
| padding: 18px 4px 28px; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| #masthead .masthead-inner { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 18px; | |
| } | |
| #masthead .brand { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 11px; | |
| color: var(--ms-text) ; | |
| font-size: 0.92rem; | |
| font-weight: 680; | |
| letter-spacing: -0.025em; | |
| text-decoration: none; | |
| } | |
| .brand-mark { | |
| display: flex; | |
| align-items: end; | |
| justify-content: center; | |
| width: 30px; | |
| height: 30px; | |
| gap: 2px; | |
| padding: 7px; | |
| border: 1px solid rgba(139, 124, 255, 0.3); | |
| border-radius: 9px; | |
| background: linear-gradient(145deg, rgba(139, 124, 255, 0.2), rgba(95, 140, 255, 0.08)); | |
| box-shadow: 0 8px 28px rgba(75, 60, 180, 0.2), inset 0 1px rgba(255, 255, 255, 0.13); | |
| } | |
| .brand-mark i { | |
| display: block; | |
| width: 2px; | |
| border-radius: 3px; | |
| background: #d8d4ff; | |
| } | |
| .brand-mark i:nth-child(1) { height: 6px; opacity: 0.62; } | |
| .brand-mark i:nth-child(2) { height: 12px; } | |
| .brand-mark i:nth-child(3) { height: 9px; opacity: 0.8; } | |
| .brand-mark i:nth-child(4) { height: 14px; } | |
| .header-meta { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| #masthead #model-badge { | |
| margin: 0 ; | |
| } | |
| .zerogpu-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| min-height: 30px; | |
| padding: 5px 10px; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 999px; | |
| background: rgba(255, 255, 255, 0.025); | |
| color: var(--ms-muted); | |
| font-family: var(--ms-mono); | |
| font-size: 0.65rem; | |
| font-weight: 620; | |
| letter-spacing: 0.07em; | |
| text-transform: uppercase; | |
| } | |
| #intro { | |
| padding: 30px 4px 34px; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| .intro-copy { | |
| max-width: 780px; | |
| } | |
| .eyebrow { | |
| display: inline-block; | |
| margin-bottom: 16px; | |
| color: #aaa1ff; | |
| font-family: var(--ms-mono); | |
| font-size: 0.68rem; | |
| font-weight: 670; | |
| letter-spacing: 0.13em; | |
| text-transform: uppercase; | |
| } | |
| .intro-copy h1 { | |
| margin: 0; | |
| color: var(--ms-text); | |
| font-size: clamp(2.55rem, 7.2vw, 5.8rem); | |
| font-weight: 590; | |
| letter-spacing: -0.072em; | |
| line-height: 0.94; | |
| } | |
| .intro-copy h1 em { | |
| color: transparent; | |
| background: linear-gradient(112deg, #d9d5ff 4%, #8b7cff 48%, #5f9cff 94%); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| font-style: normal; | |
| } | |
| .intro-copy p { | |
| max-width: 630px; | |
| margin: 23px 0 0; | |
| color: var(--ms-text-soft); | |
| font-size: clamp(0.96rem, 1.8vw, 1.12rem); | |
| line-height: 1.68; | |
| letter-spacing: -0.015em; | |
| } | |
| #studio-grid { | |
| align-items: flex-start; | |
| gap: 16px; | |
| } | |
| .section-heading { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 2px 2px 12px; | |
| } | |
| .section-heading .step-number { | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.62rem; | |
| letter-spacing: 0.08em; | |
| } | |
| .section-heading h2 { | |
| margin: 0 0 4px; | |
| color: var(--ms-text); | |
| font-size: 0.9rem; | |
| font-weight: 630; | |
| letter-spacing: -0.02em; | |
| } | |
| .section-heading p { | |
| margin: 0; | |
| color: var(--ms-muted); | |
| font-size: 0.68rem; | |
| line-height: 1.4; | |
| } | |
| .cold-note { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 8px; | |
| margin: 3px 2px 0 ; | |
| color: var(--ms-faint); | |
| font-size: 0.65rem; | |
| line-height: 1.5; | |
| } | |
| .cold-note > span { | |
| width: 6px; | |
| height: 6px; | |
| flex: none; | |
| margin-top: 3px; | |
| border-radius: 50%; | |
| background: var(--ms-warning); | |
| box-shadow: 0 0 8px rgba(244, 191, 117, 0.38); | |
| } | |
| .footnote { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 16px; | |
| padding: 14px 5px 0; | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.58rem; | |
| line-height: 1.5; | |
| } | |
| #masthead .prose { | |
| max-width: 760px; | |
| } | |
| #masthead h1 { | |
| margin: 0 0 13px; | |
| color: var(--ms-text); | |
| font-size: clamp(2.35rem, 6vw, 4.9rem); | |
| font-weight: 620; | |
| letter-spacing: -0.064em; | |
| line-height: 0.96; | |
| } | |
| #masthead h1 strong, | |
| #masthead .accent { | |
| color: transparent; | |
| background: linear-gradient(112deg, #ffffff 8%, #beb7ff 52%, #77a6ff 94%); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| } | |
| #masthead p { | |
| max-width: 610px; | |
| margin: 0; | |
| color: var(--ms-text-soft); | |
| font-size: clamp(0.98rem, 1.6vw, 1.12rem); | |
| line-height: 1.68; | |
| letter-spacing: -0.012em; | |
| } | |
| #masthead a { | |
| color: #d7d3ff; | |
| text-decoration-color: rgba(215, 211, 255, 0.35); | |
| text-underline-offset: 3px; | |
| } | |
| #model-badge { | |
| display: inline-flex ; | |
| align-items: center; | |
| width: max-content ; | |
| min-width: 0 ; | |
| min-height: 30px; | |
| margin-bottom: 22px; | |
| padding: 5px 11px ; | |
| border: 1px solid rgba(139, 124, 255, 0.22) ; | |
| border-radius: 999px ; | |
| background: rgba(139, 124, 255, 0.09) ; | |
| box-shadow: 0 0 32px rgba(111, 92, 255, 0.07) inset; | |
| color: #cec8ff ; | |
| font-family: var(--ms-mono) ; | |
| font-size: 0.7rem ; | |
| font-weight: 650 ; | |
| letter-spacing: 0.08em ; | |
| line-height: 1 ; | |
| text-transform: uppercase; | |
| } | |
| #model-badge::before { | |
| width: 6px; | |
| height: 6px; | |
| margin-right: 7px; | |
| border-radius: 50%; | |
| background: var(--ms-success); | |
| box-shadow: 0 0 0 4px rgba(99, 216, 162, 0.1), 0 0 12px rgba(99, 216, 162, 0.62); | |
| content: ""; | |
| } | |
| #upload-card, | |
| #result-panel { | |
| position: relative; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: var(--ms-radius-xl) ; | |
| background: linear-gradient(145deg, rgba(20, 23, 32, 0.93), rgba(13, 16, 22, 0.9)) ; | |
| box-shadow: var(--ms-shadow) ; | |
| backdrop-filter: blur(22px); | |
| } | |
| #upload-card { | |
| padding: clamp(16px, 2.5vw, 26px) ; | |
| } | |
| #upload-card::before, | |
| #result-panel::before { | |
| position: absolute; | |
| top: 0; | |
| right: 12%; | |
| left: 12%; | |
| height: 1px; | |
| content: ""; | |
| pointer-events: none; | |
| background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.16), transparent); | |
| } | |
| #audio-input { | |
| overflow: hidden; | |
| min-height: 214px; | |
| border: 1px dashed rgba(255, 255, 255, 0.16) ; | |
| border-radius: var(--ms-radius-lg) ; | |
| background: rgba(7, 9, 13, 0.46) ; | |
| transition: border-color 180ms ease, background 180ms ease, transform 180ms ease; | |
| } | |
| #audio-input:hover, | |
| #audio-input:focus-within { | |
| border-color: rgba(139, 124, 255, 0.54) ; | |
| background: rgba(139, 124, 255, 0.045) ; | |
| } | |
| #audio-input .wrap, | |
| #audio-input > div, | |
| #audio-input .upload-container { | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| #audio-input .upload-container { | |
| min-height: 190px; | |
| } | |
| #audio-input button, | |
| #audio-input .upload-button { | |
| border-color: var(--ms-border-strong) ; | |
| border-radius: 10px ; | |
| background: rgba(255, 255, 255, 0.055) ; | |
| color: var(--ms-text) ; | |
| box-shadow: none ; | |
| } | |
| #audio-input button:hover, | |
| #audio-input .upload-button:hover { | |
| border-color: rgba(139, 124, 255, 0.42) ; | |
| background: rgba(139, 124, 255, 0.12) ; | |
| } | |
| #audio-input audio { | |
| width: 100%; | |
| filter: saturate(0.75) contrast(0.96); | |
| } | |
| #audio-input label, | |
| #audio-input .label-wrap, | |
| #advanced-settings label, | |
| #advanced-settings .label-wrap { | |
| color: var(--ms-text-soft) ; | |
| font-size: 0.78rem ; | |
| font-weight: 570 ; | |
| letter-spacing: -0.005em; | |
| } | |
| #transcribe-button { | |
| position: relative; | |
| overflow: hidden; | |
| width: 100%; | |
| min-height: 50px; | |
| margin-top: 4px; | |
| border: 1px solid rgba(255, 255, 255, 0.15) ; | |
| border-radius: 13px ; | |
| background: linear-gradient(128deg, #7a69eb 0%, #675ad2 48%, #4f75d5 100%) ; | |
| box-shadow: 0 10px 30px rgba(76, 66, 181, 0.25), 0 1px 0 rgba(255, 255, 255, 0.2) inset ; | |
| color: #fff ; | |
| font-size: 0.91rem ; | |
| font-weight: 650 ; | |
| letter-spacing: -0.012em; | |
| transition: transform 150ms ease, box-shadow 150ms ease, filter 150ms ease ; | |
| } | |
| #transcribe-button::after { | |
| position: absolute; | |
| inset: 0; | |
| content: ""; | |
| pointer-events: none; | |
| opacity: 0; | |
| background: linear-gradient(105deg, transparent 20%, rgba(255, 255, 255, 0.2) 48%, transparent 74%); | |
| transform: translateX(-100%); | |
| } | |
| #transcribe-button:hover:not(:disabled) { | |
| filter: brightness(1.08); | |
| transform: translateY(-1px); | |
| box-shadow: 0 14px 38px rgba(76, 66, 181, 0.32), 0 1px 0 rgba(255, 255, 255, 0.22) inset ; | |
| } | |
| #transcribe-button:hover:not(:disabled)::after { | |
| opacity: 1; | |
| transform: translateX(100%); | |
| transition: transform 650ms ease; | |
| } | |
| #transcribe-button:active:not(:disabled) { | |
| transform: translateY(0) scale(0.995); | |
| } | |
| #transcribe-button:disabled, | |
| #transcribe-button[aria-busy="true"] { | |
| cursor: wait; | |
| filter: saturate(0.55) brightness(0.8); | |
| } | |
| #advanced-settings { | |
| overflow: hidden; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: var(--ms-radius-md) ; | |
| background: rgba(8, 10, 14, 0.42) ; | |
| } | |
| #advanced-settings > button, | |
| #advanced-settings > .label-wrap, | |
| #advanced-settings summary { | |
| min-height: 44px; | |
| padding-inline: 14px ; | |
| background: transparent ; | |
| color: var(--ms-text-soft) ; | |
| font-size: 0.8rem ; | |
| font-weight: 570 ; | |
| } | |
| #advanced-settings > div:not(.label-wrap) { | |
| border-color: var(--ms-border) ; | |
| background: transparent ; | |
| } | |
| #advanced-settings input, | |
| #advanced-settings textarea, | |
| #advanced-settings select { | |
| border-color: var(--ms-border) ; | |
| border-radius: 9px ; | |
| background: rgba(255, 255, 255, 0.035) ; | |
| color: var(--ms-text) ; | |
| } | |
| #advanced-settings input[type="range"] { | |
| accent-color: var(--ms-accent); | |
| } | |
| #advanced-settings input[type="checkbox"] { | |
| accent-color: var(--ms-accent); | |
| } | |
| #result-panel { | |
| min-width: 0; | |
| padding: clamp(12px, 2vw, 20px) ; | |
| } | |
| #visualizer-host { | |
| min-width: 0; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| #visualizer-host > .wrap, | |
| #visualizer-host > div, | |
| #visualizer-host .html-container { | |
| min-width: 0; | |
| padding: 0 ; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| #download-output { | |
| overflow: hidden; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: var(--ms-radius-md) ; | |
| background: rgba(255, 255, 255, 0.025) ; | |
| } | |
| #download-output a, | |
| #download-output button { | |
| color: #d4d0ff ; | |
| } | |
| /* Custom transcription visualizer */ | |
| .msv-root { | |
| --roll-height: 334px; | |
| display: grid; | |
| min-width: 0; | |
| gap: 16px; | |
| color: var(--ms-text); | |
| font-family: var(--ms-font); | |
| } | |
| .msv-root *, | |
| .msv-root *::before, | |
| .msv-root *::after { | |
| box-sizing: border-box; | |
| } | |
| .msv-topbar { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 20px; | |
| padding: 3px 3px 0; | |
| } | |
| .msv-heading { | |
| min-width: 0; | |
| } | |
| .msv-eyebrow { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| margin: 0 0 7px; | |
| color: var(--ms-muted); | |
| font-family: var(--ms-mono); | |
| font-size: 0.65rem; | |
| font-weight: 650; | |
| letter-spacing: 0.09em; | |
| line-height: 1; | |
| text-transform: uppercase; | |
| } | |
| .msv-status-dot { | |
| width: 7px; | |
| height: 7px; | |
| flex: none; | |
| border-radius: 50%; | |
| background: var(--ms-faint); | |
| box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.035); | |
| } | |
| .msv-root[data-state="queued"] .msv-status-dot, | |
| .msv-root[data-state="loading"] .msv-status-dot, | |
| .msv-root[data-state="cold_start"] .msv-status-dot, | |
| .msv-root[data-state="transcribing"] .msv-status-dot, | |
| .msv-root[data-state="processing"] .msv-status-dot { | |
| background: var(--ms-warning); | |
| box-shadow: 0 0 0 4px rgba(244, 191, 117, 0.1), 0 0 14px rgba(244, 191, 117, 0.38); | |
| animation: msv-pulse 1.7s ease-in-out infinite; | |
| } | |
| .msv-root[data-state="complete"] .msv-status-dot, | |
| .msv-root[data-state="completed"] .msv-status-dot, | |
| .msv-root[data-state="ready"] .msv-status-dot { | |
| background: var(--ms-success); | |
| box-shadow: 0 0 0 4px rgba(99, 216, 162, 0.09), 0 0 13px rgba(99, 216, 162, 0.32); | |
| } | |
| .msv-root[data-state="error"] .msv-status-dot, | |
| .msv-root[data-state="failed"] .msv-status-dot { | |
| background: var(--ms-danger); | |
| box-shadow: 0 0 0 4px rgba(255, 117, 142, 0.1); | |
| } | |
| .msv-title { | |
| overflow: hidden; | |
| max-width: 640px; | |
| margin: 0; | |
| color: var(--ms-text); | |
| font-size: clamp(1.05rem, 2vw, 1.35rem); | |
| font-weight: 610; | |
| letter-spacing: -0.032em; | |
| line-height: 1.22; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .msv-subtitle { | |
| margin: 7px 0 0; | |
| color: var(--ms-muted); | |
| font-size: 0.76rem; | |
| line-height: 1.45; | |
| } | |
| .msv-actions { | |
| display: flex; | |
| flex: none; | |
| align-items: center; | |
| gap: 7px; | |
| } | |
| .msv-button, | |
| .msv-download, | |
| .msv-track-button, | |
| .msv-track-download { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: 9px; | |
| background: rgba(255, 255, 255, 0.035); | |
| box-shadow: none; | |
| color: var(--ms-text-soft) ; | |
| font: 560 0.73rem/1 var(--ms-font); | |
| text-decoration: none ; | |
| cursor: pointer; | |
| transition: color 140ms ease, border-color 140ms ease, background 140ms ease, transform 140ms ease; | |
| } | |
| .msv-button { | |
| width: 34px; | |
| height: 34px; | |
| padding: 0; | |
| } | |
| .msv-button svg, | |
| .msv-download svg, | |
| .msv-track-download svg { | |
| width: 15px; | |
| height: 15px; | |
| fill: none; | |
| stroke: currentColor; | |
| stroke-linecap: round; | |
| stroke-linejoin: round; | |
| stroke-width: 1.8; | |
| } | |
| .msv-button:hover:not(:disabled), | |
| .msv-download:hover:not([aria-disabled="true"]), | |
| .msv-track-button:hover, | |
| .msv-track-download:hover:not([aria-disabled="true"]) { | |
| border-color: rgba(139, 124, 255, 0.32) ; | |
| background: var(--ms-accent-soft); | |
| color: #e4e1ff ; | |
| transform: translateY(-1px); | |
| } | |
| .msv-button:focus-visible, | |
| .msv-download:focus-visible, | |
| .msv-track-button:focus-visible, | |
| .msv-track-download:focus-visible { | |
| outline: 2px solid rgba(139, 124, 255, 0.7); | |
| outline-offset: 2px; | |
| } | |
| .msv-button:disabled, | |
| .msv-download[aria-disabled="true"], | |
| .msv-track-download[aria-disabled="true"] { | |
| pointer-events: none; | |
| opacity: 0.34; | |
| cursor: not-allowed; | |
| } | |
| .msv-button[aria-pressed="true"] { | |
| border-color: rgba(139, 124, 255, 0.34) ; | |
| background: rgba(139, 124, 255, 0.18); | |
| color: #e7e4ff ; | |
| } | |
| .msv-download { | |
| height: 34px; | |
| gap: 7px; | |
| padding: 0 11px; | |
| } | |
| .msv-progress-wrap { | |
| display: grid; | |
| gap: 9px; | |
| padding: 12px 14px; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 12px; | |
| background: rgba(8, 10, 14, 0.46); | |
| } | |
| .msv-progress-wrap[hidden] { | |
| display: none; | |
| } | |
| .msv-progress-meta { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .msv-progress-copy { | |
| overflow: hidden; | |
| color: var(--ms-text-soft); | |
| font-size: 0.74rem; | |
| line-height: 1.3; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .msv-progress-value { | |
| flex: none; | |
| color: var(--ms-muted); | |
| font-family: var(--ms-mono); | |
| font-size: 0.67rem; | |
| } | |
| .msv-progress-track { | |
| position: relative; | |
| overflow: hidden; | |
| height: 4px; | |
| border-radius: 999px; | |
| background: rgba(255, 255, 255, 0.055); | |
| } | |
| .msv-progress-bar { | |
| width: 0; | |
| height: 100%; | |
| border-radius: inherit; | |
| background: linear-gradient(90deg, var(--ms-accent), #6b9bff); | |
| box-shadow: 0 0 18px rgba(119, 102, 255, 0.45); | |
| transition: width 360ms cubic-bezier(0.2, 0.8, 0.2, 1); | |
| } | |
| .msv-progress-wrap[data-indeterminate="true"] .msv-progress-bar { | |
| width: 34% ; | |
| animation: msv-indeterminate 1.45s ease-in-out infinite; | |
| } | |
| .msv-stats { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| overflow: hidden; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 12px; | |
| background: rgba(8, 10, 14, 0.35); | |
| } | |
| .msv-stat { | |
| min-width: 0; | |
| padding: 11px 13px; | |
| } | |
| .msv-stat + .msv-stat { | |
| border-left: 1px solid var(--ms-border); | |
| } | |
| .msv-stat-label { | |
| display: block; | |
| margin-bottom: 4px; | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.58rem; | |
| font-weight: 650; | |
| letter-spacing: 0.075em; | |
| text-transform: uppercase; | |
| } | |
| .msv-stat-value { | |
| display: block; | |
| overflow: hidden; | |
| color: var(--ms-text-soft); | |
| font-size: 0.78rem; | |
| font-weight: 570; | |
| letter-spacing: -0.01em; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .msv-roll-shell { | |
| position: relative; | |
| overflow: hidden; | |
| min-width: 0; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 14px; | |
| background: #0a0d12; | |
| box-shadow: 0 1px 0 rgba(255, 255, 255, 0.025) inset; | |
| } | |
| .msv-roll-labelbar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| height: 38px; | |
| padding: 0 12px 0 14px; | |
| border-bottom: 1px solid var(--ms-border); | |
| background: rgba(255, 255, 255, 0.018); | |
| } | |
| .msv-roll-label { | |
| color: var(--ms-muted); | |
| font-family: var(--ms-mono); | |
| font-size: 0.62rem; | |
| font-weight: 650; | |
| letter-spacing: 0.075em; | |
| text-transform: uppercase; | |
| } | |
| .msv-roll-hint { | |
| color: var(--ms-faint); | |
| font-size: 0.66rem; | |
| } | |
| .msv-roll-scroll { | |
| position: relative; | |
| overflow-x: auto; | |
| overflow-y: hidden; | |
| width: 100%; | |
| height: var(--roll-height); | |
| scrollbar-color: rgba(255, 255, 255, 0.13) transparent; | |
| scrollbar-width: thin; | |
| } | |
| .msv-roll-scroll::-webkit-scrollbar { | |
| height: 8px; | |
| } | |
| .msv-roll-scroll::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .msv-roll-scroll::-webkit-scrollbar-thumb { | |
| border: 2px solid #0a0d12; | |
| border-radius: 999px; | |
| background: rgba(255, 255, 255, 0.14); | |
| } | |
| .msv-roll-stage { | |
| position: relative; | |
| width: 100%; | |
| height: 100%; | |
| min-width: 100%; | |
| } | |
| .msv-roll-canvas, | |
| .msv-cursor-canvas { | |
| position: absolute; | |
| inset: 0; | |
| display: block; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| .msv-cursor-canvas { | |
| z-index: 2; | |
| pointer-events: none; | |
| } | |
| .msv-empty { | |
| position: absolute; | |
| z-index: 3; | |
| inset: 0; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 24px; | |
| pointer-events: none; | |
| background: radial-gradient(circle at 50% 40%, rgba(139, 124, 255, 0.055), transparent 42%); | |
| } | |
| .msv-empty[hidden] { | |
| display: none; | |
| } | |
| .msv-empty-inner { | |
| max-width: 360px; | |
| text-align: center; | |
| } | |
| .msv-empty-icon { | |
| display: grid; | |
| width: 42px; | |
| height: 42px; | |
| margin: 0 auto 13px; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 12px; | |
| background: rgba(255, 255, 255, 0.025); | |
| color: var(--ms-muted); | |
| place-items: center; | |
| } | |
| .msv-empty-icon svg { | |
| width: 20px; | |
| height: 20px; | |
| fill: none; | |
| stroke: currentColor; | |
| stroke-linecap: round; | |
| stroke-linejoin: round; | |
| stroke-width: 1.55; | |
| } | |
| .msv-empty-title { | |
| margin: 0; | |
| color: var(--ms-text-soft); | |
| font-size: 0.83rem; | |
| font-weight: 580; | |
| } | |
| .msv-empty-copy { | |
| margin: 6px 0 0; | |
| color: var(--ms-faint); | |
| font-size: 0.7rem; | |
| line-height: 1.55; | |
| } | |
| .msv-root[data-state="queued"] .msv-empty-icon, | |
| .msv-root[data-state="loading"] .msv-empty-icon, | |
| .msv-root[data-state="cold_start"] .msv-empty-icon, | |
| .msv-root[data-state="transcribing"] .msv-empty-icon, | |
| .msv-root[data-state="processing"] .msv-empty-icon { | |
| color: #bbb4ff; | |
| animation: msv-float 2.5s ease-in-out infinite; | |
| } | |
| .msv-section-heading { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 2px 3px 0; | |
| } | |
| .msv-section-heading h3 { | |
| margin: 0; | |
| color: var(--ms-text-soft); | |
| font-size: 0.76rem; | |
| font-weight: 610; | |
| letter-spacing: -0.01em; | |
| } | |
| .msv-track-count { | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.62rem; | |
| } | |
| .msv-track-list { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 8px; | |
| } | |
| .msv-track-empty { | |
| grid-column: 1 / -1; | |
| padding: 15px; | |
| border: 1px dashed var(--ms-border); | |
| border-radius: 11px; | |
| color: var(--ms-faint); | |
| font-size: 0.72rem; | |
| text-align: center; | |
| } | |
| .msv-track-card { | |
| display: grid; | |
| grid-template-columns: auto minmax(0, 1fr) auto; | |
| align-items: center; | |
| min-width: 0; | |
| min-height: 62px; | |
| gap: 11px; | |
| padding: 10px 11px; | |
| border: 1px solid var(--ms-border); | |
| border-radius: 11px; | |
| background: rgba(255, 255, 255, 0.022); | |
| transition: border-color 150ms ease, background 150ms ease, opacity 150ms ease; | |
| } | |
| .msv-track-card:hover { | |
| border-color: var(--ms-border-strong); | |
| background: rgba(255, 255, 255, 0.032); | |
| } | |
| .msv-track-card[data-muted="true"] { | |
| opacity: 0.48; | |
| } | |
| .msv-track-card[data-inactive="true"] { | |
| opacity: 0.56; | |
| } | |
| .msv-track-swatch { | |
| width: 9px; | |
| height: 34px; | |
| border-radius: 999px; | |
| background: var(--track-color, var(--ms-accent)); | |
| box-shadow: 0 0 17px color-mix(in srgb, var(--track-color, var(--ms-accent)) 27%, transparent); | |
| } | |
| .msv-track-copy { | |
| min-width: 0; | |
| } | |
| .msv-track-name { | |
| overflow: hidden; | |
| margin: 0 0 5px; | |
| color: var(--ms-text-soft); | |
| font-size: 0.76rem; | |
| font-weight: 590; | |
| line-height: 1.15; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .msv-track-meta { | |
| overflow: hidden; | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.58rem; | |
| letter-spacing: 0.015em; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .msv-track-controls { | |
| display: flex; | |
| align-items: center; | |
| gap: 5px; | |
| } | |
| .msv-track-button, | |
| .msv-track-download { | |
| width: 27px; | |
| height: 27px; | |
| padding: 0; | |
| font-family: var(--ms-mono); | |
| font-size: 0.62rem; | |
| } | |
| .msv-track-button[aria-pressed="true"] { | |
| border-color: color-mix(in srgb, var(--track-color, var(--ms-accent)) 48%, transparent) ; | |
| background: color-mix(in srgb, var(--track-color, var(--ms-accent)) 15%, transparent); | |
| color: #fff ; | |
| } | |
| .msv-track-download svg { | |
| width: 13px; | |
| height: 13px; | |
| } | |
| .msv-sr-only { | |
| position: absolute ; | |
| overflow: hidden ; | |
| width: 1px ; | |
| height: 1px ; | |
| padding: 0 ; | |
| border: 0 ; | |
| margin: -1px ; | |
| clip: rect(0, 0, 0, 0) ; | |
| white-space: nowrap ; | |
| } | |
| @keyframes msv-pulse { | |
| 0%, 100% { opacity: 0.62; transform: scale(0.88); } | |
| 50% { opacity: 1; transform: scale(1); } | |
| } | |
| @keyframes msv-indeterminate { | |
| 0% { transform: translateX(-120%); } | |
| 55% { transform: translateX(190%); } | |
| 100% { transform: translateX(310%); } | |
| } | |
| @keyframes msv-float { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-4px); } | |
| } | |
| @media (max-width: 800px) { | |
| #app-shell { | |
| width: min(100% - 24px, 1180px); | |
| padding-top: 22px; | |
| } | |
| #masthead { | |
| padding-bottom: 18px; | |
| } | |
| #intro { | |
| padding: 22px 3px 27px; | |
| } | |
| #masthead h1 { | |
| letter-spacing: -0.052em; | |
| } | |
| .msv-track-list { | |
| grid-template-columns: 1fr; | |
| } | |
| .msv-root { | |
| --roll-height: 308px; | |
| } | |
| } | |
| @media (max-width: 600px) { | |
| #app-shell { | |
| width: min(100% - 16px, 1180px); | |
| padding-bottom: 30px; | |
| gap: 12px; | |
| } | |
| #upload-card, | |
| #result-panel { | |
| border-radius: 17px ; | |
| } | |
| #upload-card { | |
| padding: 12px ; | |
| } | |
| #masthead .masthead-inner, | |
| .footnote { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| } | |
| .header-meta { | |
| width: 100%; | |
| } | |
| .intro-copy h1 { | |
| font-size: clamp(2.65rem, 15vw, 4.2rem); | |
| letter-spacing: -0.062em; | |
| } | |
| #result-panel { | |
| padding: 10px ; | |
| } | |
| #audio-input { | |
| min-height: 180px; | |
| } | |
| .msv-root { | |
| --roll-height: 276px; | |
| gap: 12px; | |
| } | |
| .msv-topbar { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .msv-title { | |
| font-size: 1.05rem; | |
| } | |
| .msv-actions { | |
| width: 100%; | |
| } | |
| .msv-download { | |
| flex: 1; | |
| } | |
| .msv-stats { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .msv-stat:nth-child(3) { | |
| border-left: 0; | |
| border-top: 1px solid var(--ms-border); | |
| } | |
| .msv-stat:nth-child(4) { | |
| border-top: 1px solid var(--ms-border); | |
| } | |
| .msv-roll-hint { | |
| display: none; | |
| } | |
| .msv-progress-copy { | |
| max-width: calc(100vw - 118px); | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| scroll-behavior: auto ; | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |
| /* Click-to-transcribe audio examples */ | |
| #examples-section { | |
| position: relative; | |
| isolation: isolate; | |
| overflow: hidden; | |
| min-width: 0; | |
| gap: 14px ; | |
| padding: clamp(16px, 2.2vw, 24px) ; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: var(--ms-radius-xl) ; | |
| background: | |
| radial-gradient(680px 170px at 8% 0%, rgba(139, 124, 255, 0.085), transparent 68%), | |
| linear-gradient(145deg, rgba(20, 23, 32, 0.86), rgba(13, 16, 22, 0.84)) ; | |
| box-shadow: 0 18px 54px rgba(0, 0, 0, 0.22), inset 0 1px rgba(255, 255, 255, 0.025) ; | |
| backdrop-filter: blur(20px); | |
| } | |
| #examples-section::before { | |
| position: absolute; | |
| top: 0; | |
| right: 9%; | |
| left: 9%; | |
| height: 1px; | |
| content: ""; | |
| pointer-events: none; | |
| background: linear-gradient(90deg, transparent, rgba(193, 187, 255, 0.2), transparent); | |
| } | |
| .examples-heading { | |
| display: flex; | |
| align-items: flex-end; | |
| justify-content: space-between; | |
| min-width: 0; | |
| gap: 18px; | |
| padding: 0 2px ; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| .examples-heading > .wrap, | |
| .examples-heading > .prose, | |
| .examples-heading .html-container { | |
| width: 100%; | |
| padding: 0 ; | |
| border: 0 ; | |
| background: transparent ; | |
| } | |
| .examples-heading h2 { | |
| margin: 0 0 5px; | |
| color: var(--ms-text); | |
| font-size: 0.92rem; | |
| font-weight: 630; | |
| letter-spacing: -0.022em; | |
| line-height: 1.2; | |
| } | |
| .examples-heading p { | |
| margin: 0; | |
| color: var(--ms-muted); | |
| font-size: 0.7rem; | |
| line-height: 1.5; | |
| } | |
| .examples-heading .examples-kicker, | |
| .examples-heading .step-number { | |
| color: #aaa1ff; | |
| font-family: var(--ms-mono); | |
| font-size: 0.62rem; | |
| font-weight: 650; | |
| letter-spacing: 0.09em; | |
| text-transform: uppercase; | |
| } | |
| .examples-heading .examples-hint { | |
| flex: none; | |
| color: var(--ms-faint); | |
| font-family: var(--ms-mono); | |
| font-size: 0.59rem; | |
| letter-spacing: 0.02em; | |
| white-space: nowrap; | |
| } | |
| #examples-gallery, | |
| #examples-gallery > .wrap, | |
| #examples-gallery > div { | |
| min-width: 0; | |
| padding: 0 ; | |
| border: 0 ; | |
| background: transparent ; | |
| box-shadow: none ; | |
| } | |
| /* The custom heading replaces Gradio's generic "Examples" label. */ | |
| #examples-gallery > .label, | |
| #examples-gallery > .wrap > .label, | |
| #examples-gallery .label:first-child { | |
| display: none ; | |
| } | |
| #examples-gallery .gallery { | |
| display: grid ; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| width: 100% ; | |
| max-width: none ; | |
| gap: 9px ; | |
| } | |
| #examples-gallery button.gallery-item, | |
| #examples-gallery .gallery > button { | |
| position: relative; | |
| display: flex ; | |
| align-items: center; | |
| width: 100%; | |
| min-width: 0; | |
| min-height: 68px; | |
| gap: 11px; | |
| padding: 11px 12px ; | |
| border: 1px solid var(--ms-border) ; | |
| border-radius: 12px ; | |
| background: rgba(6, 8, 12, 0.44) ; | |
| box-shadow: inset 0 1px rgba(255, 255, 255, 0.018) ; | |
| color: var(--ms-text-soft) ; | |
| text-align: left; | |
| cursor: pointer; | |
| transition: transform 150ms ease, border-color 150ms ease, background 150ms ease, box-shadow 150ms ease ; | |
| } | |
| #examples-gallery button.gallery-item::before, | |
| #examples-gallery .gallery > button::before { | |
| display: grid; | |
| width: 34px; | |
| height: 34px; | |
| flex: none; | |
| border: 1px solid rgba(139, 124, 255, 0.2); | |
| border-radius: 10px; | |
| content: "\266A"; | |
| background: linear-gradient(145deg, rgba(139, 124, 255, 0.14), rgba(95, 140, 255, 0.055)); | |
| color: #bbb4ff; | |
| font-size: 0.87rem; | |
| line-height: 1; | |
| place-items: center; | |
| } | |
| #examples-gallery button.gallery-item::after, | |
| #examples-gallery .gallery > button::after { | |
| width: 6px; | |
| height: 6px; | |
| flex: none; | |
| margin-left: auto; | |
| border-top: 1px solid var(--ms-faint); | |
| border-right: 1px solid var(--ms-faint); | |
| content: ""; | |
| transform: rotate(45deg); | |
| transition: border-color 150ms ease, transform 150ms ease; | |
| } | |
| #examples-gallery button.gallery-item:hover, | |
| #examples-gallery .gallery > button:hover { | |
| border-color: rgba(139, 124, 255, 0.34) ; | |
| background: rgba(139, 124, 255, 0.075) ; | |
| box-shadow: 0 10px 26px rgba(0, 0, 0, 0.16), inset 0 1px rgba(255, 255, 255, 0.035) ; | |
| transform: translateY(-1px); | |
| } | |
| #examples-gallery button.gallery-item:hover::after, | |
| #examples-gallery .gallery > button:hover::after { | |
| border-color: #c9c4ff; | |
| transform: translateX(2px) rotate(45deg); | |
| } | |
| #examples-gallery button.gallery-item:focus-visible, | |
| #examples-gallery .gallery > button:focus-visible { | |
| outline: 2px solid rgba(139, 124, 255, 0.72) ; | |
| outline-offset: 2px; | |
| } | |
| #examples-gallery button.gallery-item:has(.selected), | |
| #examples-gallery .gallery > button:has(.selected) { | |
| border-color: rgba(139, 124, 255, 0.42) ; | |
| background: rgba(139, 124, 255, 0.1) ; | |
| } | |
| #examples-gallery .gallery-item > div, | |
| #examples-gallery .gallery > button > div { | |
| min-width: 0 ; | |
| flex: 1; | |
| padding: 0 ; | |
| color: var(--ms-text-soft) ; | |
| font-family: var(--ms-font) ; | |
| font-size: 0.75rem ; | |
| font-weight: 580; | |
| letter-spacing: -0.008em; | |
| line-height: 1.35; | |
| white-space: normal ; | |
| } | |
| #examples-gallery .gallery-item p { | |
| margin: 0; | |
| color: var(--ms-text-soft) ; | |
| font-size: 0.75rem ; | |
| font-weight: 580; | |
| line-height: 1.35; | |
| } | |
| #examples-gallery .gallery-item audio { | |
| width: min(100%, 210px); | |
| height: 32px; | |
| margin-top: 6px; | |
| color-scheme: dark; | |
| filter: saturate(0.72) contrast(0.94); | |
| } | |
| @media (max-width: 700px) { | |
| #examples-section { | |
| gap: 12px ; | |
| padding: 15px ; | |
| border-radius: 17px ; | |
| } | |
| .examples-heading { | |
| align-items: flex-start; | |
| flex-direction: column; | |
| gap: 7px; | |
| } | |
| .examples-heading .examples-hint { | |
| white-space: normal; | |
| } | |
| #examples-gallery .gallery { | |
| grid-template-columns: minmax(0, 1fr); | |
| gap: 7px ; | |
| } | |
| #examples-gallery button.gallery-item, | |
| #examples-gallery .gallery > button { | |
| min-height: 60px; | |
| padding: 9px 10px ; | |
| } | |
| } | |