/* ============================================================================== 1. DESIGN TOKENS (CSS VARIABLES) ============================================================================== */ :root { --bg-page: #221f1f; --bg-card: #2d2929; --bg-surface: #1e1b1b; --bg-surface-hover: #242020; --bg-button: #383333; --bg-button-hover: #443e3e; --bg-btn-preview: #332f2f; --bg-btn-preview-hover: #3f3939; --color-btn-preview: var(--text-body); --bg-btn-change: #2a2525; --bg-btn-change-hover: rgba(219, 167, 14, 0.18); --color-btn-change: var(--gold); --bg-btn-keypoints: linear-gradient(135deg, #383333 0%, #2a2626 100%); --color-btn-keypoints: var(--gold); --bg-translation-box: radial-gradient(circle at center, #353030 0%, #242020 100%); --color-translation-text: var(--text-primary); --shadow-card: 0 4px 14px rgba(0, 0, 0, 0.45); --shadow-header-badge: 0 3px 12px rgba(0, 0, 0, 0.4), 0 0 8px var(--gold-glow); --modal-overlay-bg: rgba(0, 0, 0, 0.85); --modal-card-bg: #262222; --modal-card-shadow: 0 20px 50px rgba(0, 0, 0, 0.95); --modal-title-color: #ffffff; --gold: #dba70e; --gold-hover: #e8b625; --gold-border: rgba(219, 167, 14, 0.4); --gold-border-subtle: rgba(219, 167, 14, 0.25); --gold-glow: rgba(219, 167, 14, 0.3); --text-primary: #ffffff; --text-body: #f5f5f5; --text-muted: #cfc8c8; } /* ============================================================================== 2. GLOBAL LAYOUT & BASE STYLES ============================================================================== */ html { background-color: var(--bg-page) !important; color: var(--text-body) !important; min-height: 100vh !important; overflow-y: scroll !important; /* Always displays the vertical scrollbar on the right */ scrollbar-gutter: stable; scrollbar-width: thin !important; scrollbar-color: #554e4e #1a1717 !important; } body { background-color: var(--bg-page) !important; color: var(--text-body) !important; min-height: 100vh !important; margin: 0 !important; padding: 0 !important; overflow-x: hidden !important; } gradio-app { background-color: var(--bg-page) !important; color: var(--text-body) !important; min-height: 100vh !important; } /* Custom Visible Scrollbar for Webkit/Blink (Chrome, Edge, Safari, Opera, Brave) */ ::-webkit-scrollbar { width: 12px !important; height: 12px !important; } ::-webkit-scrollbar-track { background: #1a1717 !important; border-left: 1px solid rgba(219, 167, 14, 0.25) !important; } ::-webkit-scrollbar-thumb { background: #443e3e !important; border-radius: 6px !important; border: 2px solid #1a1717 !important; } ::-webkit-scrollbar-thumb:hover { background: var(--gold) !important; } #main-layout { max-width: 820px !important; margin: 12px auto 24px auto !important; gap: 12px !important; } .header-titles h1, .app-title { text-align: center; color: var(--gold) !important; font-weight: 800 !important; letter-spacing: 0.5px; font-size: clamp(22px, 3vh, 30px) !important; margin: 6px 0 2px 0 !important; white-space: nowrap !important; } .header-titles h2, .app-subtitle { text-align: center; color: var(--text-body) !important; font-weight: 400 !important; font-size: 13.5px !important; opacity: 0.85; margin: 0 !important; } /* ============================================================================== 3. MODULAR UI CARDS & HEADER CONTROLS ============================================================================== */ .ui-card { background-color: var(--bg-card) !important; border: 1px solid var(--gold-border) !important; border-radius: 10px !important; padding: 16px 20px !important; box-shadow: var(--shadow-card) !important; } h3, .card-title { color: var(--gold) !important; font-size: 20px !important; font-weight: 800 !important; letter-spacing: 0.8px !important; margin: 0 !important; } .card-header-row { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; margin-bottom: 12px !important; } .record-btn-col { flex: 0 0 auto !important; width: auto !important; min-width: 0 !important; margin: 0 0 0 auto !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; } .record-yourself-btn { background: var(--bg-button) !important; border: 1px solid var(--gold-border) !important; color: var(--text-body) !important; font-size: 12.5px !important; font-weight: 700 !important; letter-spacing: 0.6px !important; border-radius: 6px !important; height: 32px !important; padding: 0 14px !important; white-space: nowrap !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; width: auto !important; cursor: pointer !important; transition: all 0.2s ease !important; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35) !important; } .record-yourself-btn:hover { background: var(--bg-button-hover) !important; border-color: var(--gold) !important; color: var(--text-primary) !important; transform: translateY(-1px) !important; box-shadow: 0 4px 12px var(--gold-glow) !important; } /* ============================================================================== 4. PRIMARY ACTION BUTTONS ============================================================================== */ .translate-btn, .modal-done-btn, button.primary { background: linear-gradient(135deg, var(--gold) 0%, #b8860b 100%) !important; color: #221f1f !important; font-weight: 800 !important; font-size: 18px !important; letter-spacing: 0.5px !important; border: none !important; border-radius: 8px !important; height: 48px !important; width: 100% !important; box-shadow: 0 3px 12px var(--gold-glow) !important; transition: all 0.2s ease !important; margin: 6px 0 !important; cursor: pointer !important; } .translate-btn:hover, .modal-done-btn:hover, button.primary:hover { background: linear-gradient(135deg, var(--gold-hover) 0%, var(--gold) 100%) !important; transform: translateY(-1px) !important; box-shadow: 0 5px 18px rgba(219, 167, 14, 0.45) !important; } /* ============================================================================== 5. EXAMPLES SECTION ============================================================================== */ .examples-row { margin-top: 0; } .examples-row-second { margin-top: 14px !important; } .examples-row, .examples-row *, .examples-row video, .examples-row .wrap, .examples-row .mirror-wrap, .examples-row .mirror { transform: none !important; } .examples-row > div { min-width: 0 !important; gap: 6px !important; } .example-title { color: var(--gold) !important; font-size: 18px !important; font-weight: 700 !important; text-align: center !important; margin: 0 0 0 0 !important; text-transform: uppercase !important; letter-spacing: 1px !important; text-shadow: none !important; } .examples-row .gradio-html, .examples-row .html-container { min-height: auto !important; padding: 0 !important; margin: 0 !important; } .example-btn { background: var(--bg-button) !important; color: var(--text-body) !important; border: 1px solid rgba(219, 167, 14, 0.35) !important; border-radius: 6px !important; font-weight: 600 !important; font-size: 13px !important; margin-top: 8px !important; padding: 7px 10px !important; width: 100% !important; transition: all 0.2s ease !important; cursor: pointer !important; } .example-btn:hover { background: var(--gold) !important; color: #221f1f !important; border-color: var(--gold) !important; transform: translateY(-1px) !important; } /* ============================================================================== 6. TRANSLATION GRADIO OVERRIDES ============================================================================== */ #translation-card .block, #translation-card .gradio-html, #translation-card .html-container, #translation-display { background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; margin: 0 !important; width: 100% !important; } #translation-card .wrap, #translation-card [data-testid="loading-status"], #translation-card .eta-bar, #translation-card .progress-level { display: none !important; } /* Dedicated Gray Container for Translation */ .translation-content-box { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; min-height: 90px !important; padding: 16px 20px !important; background: var(--bg-translation-box) !important; border-radius: 8px !important; border: 1px solid var(--gold-border-subtle) !important; box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4) !important; width: 100% !important; box-sizing: border-box !important; } /* Clean White Centered Translation Text */ .translation-text { color: var(--color-translation-text) !important; font-size: clamp(24px, 3.5vh, 32px) !important; font-weight: 800 !important; letter-spacing: 1.5px !important; text-transform: uppercase !important; text-align: center !important; line-height: 1.2 !important; margin: 0 !important; width: 100% !important; } /* Loading Spinner Container & Keyframes */ .loading-container { display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; padding: 8px 0 !important; } .pulse-spinner { width: 32px !important; height: 32px !important; border: 3px solid rgba(219, 167, 14, 0.2) !important; border-top: 3px solid var(--gold) !important; border-right: 3px solid var(--text-primary) !important; border-radius: 50% !important; animation: spinRing 0.9s cubic-bezier(0.55, 0.15, 0.45, 0.85) infinite !important; box-shadow: 0 0 12px var(--gold-glow) !important; } /* Live Progress Box inside Translation Box */ .live-progress-box { display: flex !important; flex-direction: column !important; align-items: stretch !important; justify-content: flex-start !important; gap: 8px !important; padding: 12px 16px !important; } .progress-badge-header { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: space-between !important; gap: 10px !important; width: 100% !important; } .pulse-spinner-small { width: 16px !important; height: 16px !important; border: 2.5px solid rgba(219, 167, 14, 0.2) !important; border-top: 2.5px solid var(--gold) !important; border-radius: 50% !important; animation: spinRing 0.8s linear infinite !important; flex-shrink: 0 !important; } .progress-step-title { color: var(--gold) !important; font-size: 13px !important; font-weight: 700 !important; letter-spacing: 0.4px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; flex: 1 1 auto !important; text-align: left !important; } .progress-step-percent { color: var(--text-primary) !important; font-size: 12px !important; font-weight: 800 !important; background: rgba(219, 167, 14, 0.2) !important; border: 1px solid var(--gold-border) !important; padding: 2px 8px !important; border-radius: 10px !important; flex-shrink: 0 !important; } .custom-progress-bar-track { width: 100% !important; height: 6px !important; background: rgba(0, 0, 0, 0.5) !important; border-radius: 4px !important; overflow: hidden !important; border: 1px solid rgba(219, 167, 14, 0.2) !important; } .custom-progress-bar-fill { height: 100% !important; background: linear-gradient(90deg, #b8860b 0%, #dba70e 50%, #ffe066 100%) !important; border-radius: 4px !important; transition: width 0.2s ease-out !important; box-shadow: 0 0 8px rgba(219, 167, 14, 0.6) !important; } .live-console-log { background: #181515 !important; border: 1px solid rgba(219, 167, 14, 0.15) !important; border-radius: 6px !important; padding: 8px 12px !important; max-height: 125px !important; overflow-y: hidden !important; box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.6) !important; text-align: left !important; } .console-line { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; line-height: 1.5 !important; font-family: 'Consolas', 'Courier New', monospace !important; font-size: 11px !important; } .console-msg { text-align: left !important; white-space: pre !important; color: #cfc8c8 !important; overflow: hidden !important; text-overflow: ellipsis !important; } .console-time { text-align: right !important; color: #8a8276 !important; font-size: 10px !important; margin-left: 12px !important; white-space: nowrap !important; flex-shrink: 0 !important; } @keyframes spinRing { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* ============================================================================== 7. VIDEO UPLOAD DROPZONE & ACTIVE VIDEO ROW ============================================================================== */ .compact-dropzone { background-color: var(--bg-surface) !important; border: 2px dashed var(--gold-border) !important; border-radius: 10px !important; padding: 20px 24px !important; min-height: 155px !important; max-height: 50vh; transition: all 0.2s ease !important; overflow: hidden !important; display: flex !important; align-items: center !important; justify-content: center !important; position: relative !important; } .compact-dropzone:hover { border-color: var(--gold) !important; background-color: var(--bg-surface-hover) !important; } /* Hide native file input element */ .compact-dropzone input[type="file"], .compact-dropzone [data-testid="file-upload"], input[type="file"] { display: none !important; visibility: hidden !important; opacity: 0 !important; position: absolute !important; pointer-events: none !important; } .compact-dropzone .upload-container, .compact-dropzone > div:not([data-testid="file-upload"]) { min-height: 130px !important; padding: 12px 18px !important; display: flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; } .compact-dropzone button { padding: 10px 22px !important; font-size: 14px !important; font-weight: 700 !important; } /* Active Video Info Row (Video Name on Left, Action Buttons Aligned Right, strictly single line) */ .video-info-row { background: var(--bg-surface) !important; border: 1.5px solid var(--gold-border) !important; border-radius: 10px !important; padding: 10px 16px !important; min-height: 58px !important; display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: center !important; justify-content: space-between !important; gap: 12px !important; width: 100% !important; box-sizing: border-box !important; } .video-info-row > .video-name-col, .video-info-row > .prose, .video-info-row > div:first-child { flex: 1 1 auto !important; min-width: 0 !important; width: auto !important; margin: 0 !important; display: flex !important; align-items: center !important; } .video-info-row > .video-name-col p, .video-info-row > .prose p { margin: 0 !important; padding: 0 !important; display: flex !important; align-items: center !important; white-space: nowrap !important; background: transparent !important; } .video-name-col, .video-name-col *, .video-name-col p, .video-name-col span, .video-name-badge, .video-name-badge * { background: transparent !important; background-color: transparent !important; box-shadow: none !important; border: none !important; } .video-name-badge { color: var(--text-body) !important; font-size: 15px !important; font-weight: 600 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; display: flex !important; align-items: center !important; } /* Action buttons in Video Info Row */ .video-info-row > button, .preview-modal-btn, .change-vid-btn { border-radius: 8px !important; height: 40px !important; padding: 0 16px !important; font-size: 13.5px !important; font-weight: 700 !important; cursor: pointer !important; transition: all 0.2s ease !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; white-space: nowrap !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35) !important; flex: 0 0 auto !important; width: auto !important; } .preview-modal-btn { background: var(--bg-btn-preview) !important; color: var(--color-btn-preview) !important; border: 1px solid var(--gold) !important; margin: 0 0 0 auto !important; } .preview-modal-btn:hover { background: var(--bg-btn-preview-hover) !important; border-color: var(--gold-hover) !important; transform: translateY(-1px) !important; box-shadow: 0 4px 12px var(--gold-glow) !important; } .change-vid-btn { background: var(--bg-btn-change) !important; border: 1px solid var(--gold-border) !important; color: var(--color-btn-change) !important; margin: 0 !important; } .change-vid-btn:hover { background: var(--bg-btn-change-hover) !important; border-color: var(--gold) !important; color: var(--text-primary) !important; transform: translateY(-1px) !important; } /* ============================================================================== 8. INFORMATION CARD & ADVANCED DEMO LINK ============================================================================== */ .info-content { display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 20px !important; } .info-text { color: var(--text-muted) !important; font-size: 12.5px !important; line-height: 1.55 !important; margin: 0 !important; flex: 1 1 auto !important; } .info-markdown { color: var(--text-body) !important; font-size: 14px !important; line-height: 1.7 !important; margin-top: 6px !important; } .info-markdown h1, .info-markdown h2 { color: var(--gold) !important; font-size: 16.5px !important; font-weight: 800 !important; text-align: left !important; margin: 20px 0 10px 0 !important; letter-spacing: 0.5px !important; border-bottom: 1.5px solid var(--gold-border-subtle) !important; padding-bottom: 5px !important; opacity: 1 !important; } .info-markdown h3 { color: var(--gold) !important; font-size: 14.5px !important; font-weight: 700 !important; text-align: left !important; margin: 14px 0 6px 0 !important; letter-spacing: 0.3px !important; opacity: 1 !important; } .info-markdown p { color: var(--text-body) !important; font-size: 14px !important; line-height: 1.7 !important; margin: 0 0 10px 0 !important; } .info-markdown strong { color: var(--text-primary) !important; font-weight: 700 !important; } .info-markdown a { color: var(--gold) !important; font-weight: 600 !important; text-decoration: underline !important; text-underline-offset: 3px !important; transition: color 0.15s ease !important; } .info-markdown a:hover { color: var(--gold-hover) !important; text-decoration: underline !important; } .info-markdown ul, .info-markdown ol { margin: 6px 0 12px 22px !important; padding-left: 0 !important; color: var(--text-body) !important; } .info-markdown li { margin-bottom: 6px !important; line-height: 1.6 !important; color: var(--text-body) !important; } .info-markdown blockquote { border-left: 4px solid var(--gold) !important; background: rgba(219, 167, 14, 0.12) !important; padding: 10px 16px !important; margin: 14px 0 !important; border-radius: 0 8px 8px 0 !important; color: var(--text-primary) !important; } .info-markdown blockquote p { margin: 0 !important; color: var(--text-primary) !important; font-weight: 500 !important; } .advanced-demo-link { display: inline-flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; text-align: center !important; background: rgba(219, 167, 14, 0.14) !important; color: var(--gold) !important; border: 1.5px solid var(--gold) !important; border-radius: 10px !important; padding: 10px 18px !important; gap: 2px !important; text-decoration: none !important; white-space: nowrap !important; transition: all 0.2s ease !important; flex-shrink: 0 !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; cursor: pointer !important; } .advanced-demo-link:hover { background: var(--gold) !important; color: #221f1f !important; transform: translateY(-1px) !important; box-shadow: 0 4px 14px rgba(219, 167, 14, 0.35) !important; } .advanced-demo-link .adv-line { display: block !important; line-height: 1.25 !important; text-transform: uppercase !important; } .advanced-demo-link .adv-line-1 { font-size: 13px !important; font-weight: 800 !important; letter-spacing: 1.2px !important; } .advanced-demo-link .adv-line-2 { font-size: 11.5px !important; font-weight: 700 !important; letter-spacing: 1px !important; opacity: 0.95 !important; } .advanced-demo-link .adv-line-3 { font-size: 14px !important; font-weight: 800 !important; letter-spacing: 1.2px !important; margin-top: 1px !important; } /* ============================================================================== 9. FULLSCREEN MODAL (WEBCAM RECORDING & TRIMMING) ============================================================================== */ .modal-overlay, .gradio-container .modal-overlay, [class*="gradio-container"] .modal-overlay { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100vw !important; height: 100vh !important; background: var(--modal-overlay-bg) !important; backdrop-filter: blur(10px) !important; -webkit-backdrop-filter: blur(10px) !important; z-index: 99999 !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: flex-start !important; padding: 30px 20px 25px 20px !important; overflow-y: auto !important; box-sizing: border-box !important; flex-grow: 0 !important; } .modal-dialog-card, .gradio-container .modal-dialog-card, .gradio-container .contain .modal-dialog-card, [class*="gradio-container"] [class*="contain"] .modal-dialog-card { margin-top: 15px !important; margin-bottom: 25px !important; background-color: var(--modal-card-bg) !important; background: var(--modal-card-bg) !important; border: 1.5px solid var(--gold) !important; border-radius: 16px !important; max-width: 680px !important; width: 95% !important; height: auto !important; max-height: 88vh !important; flex: 0 0 auto !important; flex-grow: 0 !important; flex-shrink: 0 !important; overflow-y: auto !important; padding: 20px 24px !important; box-shadow: var(--modal-card-shadow) !important; box-sizing: border-box !important; display: flex !important; flex-direction: column !important; gap: 14px !important; animation: modalScaleIn 0.22s cubic-bezier(0.16, 1, 0.3, 1) !important; } .modal-dialog-card > * { flex-grow: 0 !important; } @keyframes modalScaleIn { 0% { opacity: 0; transform: scale(0.92); } 100% { opacity: 1; transform: scale(1); } } .modal-header-row { display: flex !important; justify-content: space-between !important; align-items: center !important; width: 100% !important; border-bottom: 1px solid rgba(219, 167, 14, 0.3) !important; padding-bottom: 10px !important; } .modal-title, .modal-title *, .modal-header-row h3, .modal-header-row h3 *, .modal-header-row .prose, .modal-header-row .prose *, .modal-dialog-card .modal-title, .modal-dialog-card .modal-title * { color: var(--text-primary) !important; font-size: 18px !important; font-weight: 700 !important; margin: 0px !important; } .modal-close-col { flex: 0 0 auto !important; min-width: 36px !important; margin-left: auto !important; display: flex !important; align-items: center !important; justify-content: flex-end !important; } .modal-close-icon { background: transparent !important; border: none !important; color: var(--gold) !important; font-size: 24px !important; font-weight: bold !important; cursor: pointer !important; width: 36px !important; height: 36px !important; padding: 0 !important; display: flex !important; align-items: center !important; justify-content: center !important; border-radius: 6px !important; transition: all 0.2s ease !important; } .modal-close-icon:hover { color: var(--text-primary) !important; background-color: var(--gold-border-subtle) !important; transform: scale(1.1) !important; } /* Video Controls Override - Dark Mode (Default Light Text) */ .controls, .controls *, [class*="controls"], [class*="controls"] * { color: #ffffff !important; } .controls svg, [class*="controls"] svg { color: #ffffff !important; } /* Dynamic Webcam Recording Action Buttons: Strictly hidden by default until video is recorded */ .record-footer-row { display: none !important; } .record-footer-row.has-recording { display: flex !important; } .modal-video-player { width: 100% !important; display: flex !important; flex-direction: column !important; margin: 0 !important; border-radius: 8px !important; flex-grow: 0 !important; flex-shrink: 0 !important; } .modal-video-player video { max-height: 38vh !important; width: 100% !important; object-fit: contain !important; border-radius: 8px !important; } /* Video playback and webcam stream: strictly no flip / unmirrored across all video players */ video, .modal-video-player video, .modal-video-player [data-testid="webcam"] video, .modal-video-player .record video, .modal-video-player video:not([src]) { transform: none !important; } .modal-footer-col { width: 100% !important; margin-top: 14px !important; display: flex !important; flex-direction: column !important; gap: 10px !important; align-items: stretch !important; flex-grow: 0 !important; flex-shrink: 0 !important; } .modal-footer-row { width: 100% !important; margin-top: 14px !important; display: flex !important; flex-direction: row !important; gap: 10px !important; align-items: center !important; flex-grow: 0 !important; flex-shrink: 0 !important; } .modal-footer-col button, .modal-footer-row button, .modal-done-btn { width: 100% !important; box-sizing: border-box !important; } .modal-footer-row button { flex: 1 1 0 !important; min-width: 0 !important; } .modal-cancel-btn { background: var(--bg-button) !important; color: var(--text-body) !important; border: 1px solid var(--gold-border-subtle) !important; font-weight: 600 !important; } .modal-cancel-btn:hover { background: var(--bg-button-hover) !important; color: var(--text-primary) !important; border-color: var(--gold-border) !important; } .modal-use-direct-btn { background: var(--bg-button) !important; color: var(--gold) !important; border: 1px solid var(--gold-border) !important; font-weight: 700 !important; } .modal-use-direct-btn:hover { background: var(--bg-button-hover) !important; border-color: var(--gold-hover) !important; box-shadow: 0 2px 10px rgba(212, 175, 55, 0.25) !important; } /* Subtle discreet bottom control row (Restart session aligned right) */ .restart-row { margin-top: 18px !important; display: flex !important; flex-direction: row !important; justify-content: flex-end !important; align-items: center !important; width: 100% !important; } .restart-btn { background: transparent !important; color: #736b6b !important; border: 1px solid #3d3737 !important; border-radius: 6px !important; font-size: 12px !important; font-weight: 500 !important; padding: 4px 12px !important; height: 30px !important; cursor: pointer !important; transition: all 0.2s ease !important; opacity: 0.75 !important; } .restart-btn:hover { color: #ded7d7 !important; border-color: #696262 !important; background: rgba(255, 255, 255, 0.05) !important; opacity: 1 !important; } /* ============================================================================== 10. SCROLLABLE HEADER WITH GOLD BADGES & RESPONSIVE DESIGN ============================================================================== */ .app-header-html, .app-header-html.block, .app-header-html .html-container { background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; margin: 0 !important; width: 100% !important; min-height: auto !important; } .app-header-container { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: space-between !important; width: 100% !important; margin: 6px 0 4px 0 !important; gap: 16px !important; box-sizing: border-box !important; } .header-titles { flex: 1 1 auto !important; text-align: center !important; min-width: 0 !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important; } .app-title { text-align: center !important; color: var(--gold) !important; font-weight: 800 !important; letter-spacing: 0.5px !important; font-size: clamp(19px, 2.4vw, 27px) !important; margin: 0 0 3px 0 !important; line-height: 1.2 !important; white-space: normal !important; } .app-subtitle { text-align: center !important; color: var(--text-body) !important; font-weight: 400 !important; font-size: 13.5px !important; opacity: 0.85 !important; margin: 0 !important; line-height: 1.3 !important; } /* Gold Box Badges Aligned to the Content Left & Right */ .header-badge { flex: 0 0 180px !important; width: 180px !important; max-width: 180px !important; height: 80px !important; max-height: 80px !important; box-sizing: border-box !important; background-color: var(--bg-page) !important; border: 1.5px solid var(--gold) !important; border-radius: 9px !important; padding: 0px !important; box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4), 0 0 8px rgba(212, 175, 55, 0.3) !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease !important; overflow: hidden !important; } .header-badge:hover { transform: translateY(-2px) !important; border-color: var(--gold-hover) !important; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45), 0 0 14px var(--gold-glow) !important; } .header-badge a { display: flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; height: 100% !important; text-decoration: none !important; line-height: 0 !important; } .header-badge-img { max-height: 80px !important; max-width: 180px !important; width: auto !important; height: auto !important; display: block !important; object-fit: contain !important; margin: auto !important; padding: 15px 15px !important; } @media (max-width: 650px) { .app-header-container { flex-wrap: wrap !important; justify-content: center !important; gap: 10px !important; } .header-titles { order: 1 !important; width: 100% !important; margin-bottom: 4px !important; } .header-badge-left { order: 2 !important; } .header-badge-right { order: 3 !important; } .examples-row { flex-direction: column !important; } .examples-row > div { width: 100% !important; } .video-info-row { flex-direction: column !important; align-items: stretch !important; height: auto !important; min-height: auto !important; padding: 12px 14px !important; gap: 10px !important; } .video-info-row > .video-name-col, .video-info-row > .prose, .video-info-row > div:first-child { width: 100% !important; justify-content: center !important; text-align: center !important; } .video-name-badge { width: 100% !important; justify-content: center !important; text-align: center !important; } .preview-modal-btn, .change-vid-btn, .video-info-row > button { width: 100% !important; margin: 0 !important; box-sizing: border-box !important; } } /* ============================================================================== 11. SHOW KEYPOINTS BUTTON & MODAL ============================================================================== */ .show-keypoints-btn { background: var(--bg-btn-keypoints) !important; border: 1.5px solid var(--gold) !important; color: var(--color-btn-keypoints) !important; font-weight: 800 !important; font-size: 18px !important; letter-spacing: 0.5px !important; border-radius: 8px !important; height: 48px !important; width: 100% !important; box-shadow: 0 3px 12px rgba(0, 0, 0, 0.4), 0 0 10px var(--gold-border-subtle) !important; transition: all 0.2s ease !important; margin: 14px 0 0 0 !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; } .show-keypoints-btn:hover { background: var(--gold) !important; color: #1e1b1b !important; transform: translateY(-1px) !important; box-shadow: 0 5px 18px var(--gold-glow) !important; } .keypoints-video-player video { max-height: 52vh !important; width: 100% !important; object-fit: contain !important; border-radius: 8px !important; } /* ============================================================================== 12. LIGHT THEME OVERRIDES & TOGGLE BUTTON ============================================================================== */ html.light-theme, body.light-theme, gradio-app.light-theme, .light-theme { --bg-page: #f8fafc !important; --bg-card: #ffffff !important; --bg-surface: #f1f5f9 !important; --bg-surface-hover: #e2e8f0 !important; --bg-button: #ffffff !important; --bg-button-hover: #fef3c7 !important; --bg-btn-preview: #ffffff !important; --bg-btn-preview-hover: #fef3c7 !important; --color-btn-preview: #b8860b !important; --bg-btn-change: #ffffff !important; --bg-btn-change-hover: #fef2f2 !important; --color-btn-change: #64748b !important; --bg-btn-keypoints: linear-gradient(135deg, #ffffff 0%, #fffbeb 100%) !important; --color-btn-keypoints: #b8860b !important; --bg-translation-box: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%) !important; --color-translation-text: #0f172a !important; --shadow-card: 0 6px 20px rgba(184, 134, 11, 0.22), 0 0 12px rgba(184, 134, 11, 0.12) !important; --shadow-header-badge: 0 4px 14px rgba(184, 134, 11, 0.22), 0 0 8px rgba(184, 134, 11, 0.12) !important; --gold: #b8860b !important; --gold-hover: #996e05 !important; --gold-border: rgba(184, 134, 11, 0.45) !important; --gold-border-subtle: rgba(184, 134, 11, 0.25) !important; --gold-glow: rgba(184, 134, 11, 0.3) !important; --text-primary: #0f172a !important; --text-body: #1e293b !important; --text-muted: #475569 !important; background-color: var(--bg-page) !important; color: #1e293b !important; } .light-theme body, .light-theme gradio-app, .light-theme #main-layout { background-color: var(--bg-page) !important; } .light-theme .ui-card { background-color: #ffffff !important; border: 1.5px solid var(--gold-border) !important; box-shadow: 0 6px 20px rgba(184, 134, 11, 0.22), 0 0 12px rgba(184, 134, 11, 0.12) !important; } .light-theme .card-title { color: #b8860b !important; } .light-theme .app-title { color: #b8860b !important; } .light-theme .app-subtitle, .light-theme h2, .light-theme p, .light-theme span:not(.console-time):not(.progress-step-percent), .light-theme div, .light-theme li, .light-theme ul, .light-theme ol, .light-theme strong, .light-theme em, .light-theme blockquote, .light-theme .info-text, .light-theme .info-markdown, .light-theme .info-markdown p, .light-theme .info-markdown span, .light-theme .info-markdown li, .light-theme .info-markdown ul, .light-theme .info-markdown ol, .light-theme .prose, .light-theme .prose p { color: #1e293b !important; } .light-theme .info-markdown h1, .light-theme .info-markdown h2, .light-theme .info-markdown h3 { color: #b8860b !important; opacity: 1 !important; border-color: var(--gold-border-subtle) !important; } .light-theme strong { color: #0f172a !important; } .light-theme .header-badge { background: #ffffff !important; border: 1px solid #cbd5e1 !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06) !important; } .light-theme .header-badge:hover { border-color: #94a3b8 !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) !important; } /* Fix Video Dropzone & Record Button in Light Mode */ .light-theme .compact-dropzone { background-color: #f8fafc !important; border-color: var(--gold-border) !important; } .light-theme .record-yourself-btn { background: #ffffff !important; color: #b8860b !important; border: 1.5px solid var(--gold) !important; box-shadow: 0 2px 8px rgba(184, 134, 11, 0.2) !important; } .light-theme .record-yourself-btn:hover { background: #fef3c7 !important; border-color: var(--gold-hover) !important; color: #996e05 !important; } /* Fix Action buttons in Video Info Row in Light Mode */ .light-theme .video-info-row { background: #f8fafc !important; border-color: var(--gold-border) !important; } .light-theme .video-name-badge { background: #ffffff !important; border-color: rgba(184, 134, 11, 0.3) !important; color: #0f172a !important; } .light-theme .preview-modal-btn { background: #ffffff !important; color: #b8860b !important; border: 1.5px solid var(--gold) !important; box-shadow: 0 2px 8px rgba(184, 134, 11, 0.2) !important; } .light-theme .preview-modal-btn:hover { background: #fef3c7 !important; border-color: var(--gold-hover) !important; color: #996e05 !important; } .light-theme .change-vid-btn { background: #ffffff !important; color: #64748b !important; border: 1.5px solid #cbd5e1 !important; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05) !important; } .light-theme .change-vid-btn:hover { background: #fef2f2 !important; color: #dc2626 !important; border-color: #fca5a5 !important; } /* Fix Primary Translate Button in Light Mode */ .light-theme .translate-btn, .light-theme button.primary, .light-theme .modal-done-btn { background: linear-gradient(135deg, #dba70e 0%, #b8860b 100%) !important; color: #ffffff !important; box-shadow: 0 4px 14px rgba(184, 134, 11, 0.35) !important; } .light-theme .translate-btn:hover, .light-theme button.primary:hover, .light-theme .modal-done-btn:hover { background: linear-gradient(135deg, #e8b625 0%, #dba70e 100%) !important; box-shadow: 0 6px 18px rgba(184, 134, 11, 0.5) !important; } .light-theme .modal-cancel-btn { background: #f1f5f9 !important; color: #475569 !important; border-color: #cbd5e1 !important; } .light-theme .modal-cancel-btn:hover { background: #e2e8f0 !important; color: #0f172a !important; } .light-theme .modal-use-direct-btn { background: #ffffff !important; color: #b8860b !important; border-color: #b8860b !important; } .light-theme .modal-use-direct-btn:hover { background: #fef9c3 !important; box-shadow: 0 2px 10px rgba(184, 134, 11, 0.2) !important; } /* Fix Translation Result Box in Light Mode */ .light-theme .translation-content-box { background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%) !important; border: 1.5px solid var(--gold-border) !important; box-shadow: inset 0 1px 4px rgba(184, 134, 11, 0.15), 0 2px 8px rgba(184, 134, 11, 0.1) !important; } .light-theme .translation-text { color: #0f172a !important; } /* Fix Show Keypoints Button in Light Mode */ .light-theme .show-keypoints-btn { background: linear-gradient(135deg, #ffffff 0%, #fffbeb 100%) !important; border: 1.5px solid var(--gold) !important; color: #b8860b !important; box-shadow: 0 3px 12px rgba(184, 134, 11, 0.22) !important; } .light-theme .show-keypoints-btn:hover { background: var(--gold) !important; color: #ffffff !important; box-shadow: 0 5px 18px rgba(184, 134, 11, 0.4) !important; } /* Fix Example Buttons & Titles in Light Mode */ .light-theme .example-title { color: #b8860b !important; text-shadow: none !important; } .light-theme .example-btn { background: #ffffff !important; color: #1e293b !important; border: 1.5px solid var(--gold-border) !important; box-shadow: 0 2px 6px rgba(184, 134, 11, 0.12) !important; } .light-theme .example-btn:hover { background: var(--gold) !important; color: #ffffff !important; border-color: var(--gold) !important; } /* Console logs & Info Markdown in Light Mode */ .light-theme .live-console-log { background: #ffffff !important; border-color: rgba(184, 134, 11, 0.25) !important; box-shadow: inset 0 2px 6px rgba(184, 134, 11, 0.08) !important; } .light-theme .console-msg { color: #334155 !important; } .light-theme .console-time { color: #64748b !important; } .light-theme .info-markdown blockquote { background: rgba(184, 134, 11, 0.12) !important; border-left: 4px solid #b8860b !important; } .light-theme .info-markdown blockquote * { color: #0f172a !important; } .light-theme .info-markdown a { color: #b8860b !important; } .light-theme .info-markdown code { background: #e2e8f0 !important; color: #0f172a !important; } .light-theme .modal-overlay, .light-theme.modal-overlay, html.light-theme .modal-overlay, body.light-theme .modal-overlay, .light-theme .keypoints-modal-overlay, .keypoints-modal-overlay.light-theme, [class*="gradio-container"].light-theme .modal-overlay, [class*="gradio-container"] .light-theme .modal-overlay { background: rgba(15, 23, 42, 0.5) !important; } .light-theme .modal-dialog-card, .light-theme.modal-dialog-card, html.light-theme .modal-dialog-card, body.light-theme .modal-dialog-card, .light-theme .gradio-container .modal-dialog-card, .light-theme .gradio-container .contain .modal-dialog-card, .light-theme .gradio-container.gradio-container-5-50-0-dev0 .contain .modal-dialog-card, .light-theme [class*="gradio-container"] [class*="contain"] .modal-dialog-card, html.light-theme .gradio-container.gradio-container-5-50-0-dev0 .contain .modal-dialog-card, body.light-theme .gradio-container.gradio-container-5-50-0-dev0 .contain .modal-dialog-card, .light-theme .keypoints-modal-overlay .modal-dialog-card, .keypoints-modal-overlay.light-theme .modal-dialog-card, html.light-theme .keypoints-modal-overlay .modal-dialog-card, body.light-theme .keypoints-modal-overlay .modal-dialog-card { background: #ffffff !important; background-color: #ffffff !important; border: 2px solid var(--gold) !important; box-shadow: 0 20px 50px rgba(184, 134, 11, 0.35) !important; color: #0f172a !important; } .light-theme .modal-title, .light-theme .modal-title *, .light-theme .modal-header-row h3, .light-theme .modal-header-row h3 *, .light-theme .modal-header-row .prose, .light-theme .modal-header-row .prose *, .light-theme .modal-dialog-card .modal-title, .light-theme .modal-dialog-card .modal-title * { color: #000000 !important; font-size: 18px !important; font-weight: 700 !important; margin: 0px !important; } .light-theme ::-webkit-scrollbar-track { background: #e2e8f0 !important; } .light-theme ::-webkit-scrollbar-thumb { background: #cbd5e1 !important; } .light-theme .restart-btn { color: #64748b !important; border-color: #cbd5e1 !important; } .light-theme .restart-btn:hover { color: #0f172a !important; border-color: var(--gold) !important; background: rgba(184, 134, 11, 0.1) !important; } .theme-toggle-btn { background: var(--bg-button) !important; border: 1px solid var(--gold-border-subtle) !important; color: var(--text-body) !important; font-size: 11.5px !important; font-weight: 600 !important; border-radius: 6px !important; height: 30px !important; padding: 0 12px !important; cursor: pointer !important; transition: all 0.2s ease !important; } .theme-toggle-btn:hover { background: var(--bg-button-hover) !important; border-color: var(--gold) !important; color: var(--gold) !important; } /* Light Mode Video Controls Override - Black Text & Gray Button Background */ .light-theme .controls, .light-theme .controls *, .light-theme [class*="controls"], .light-theme [class*="controls"] * { color: #000000 !important; } .light-theme .controls svg, .light-theme [class*="controls"] svg { color: #000000 !important; } .light-theme .controls button, .light-theme .controls button *, .light-theme [class*="controls"] button, .light-theme [class*="controls"] button * { background: #4b4848 !important; background-color: #4b4848 !important; border-color: #cbd5e1 !important; } .light-theme .controls button:hover, .light-theme [class*="controls"] button:hover { background: #cbd5e1 !important; background-color: #cbd5e1 !important; } /* Queue notice text */ .queue-notice-text { margin-top: 14px !important; font-size: 14px !important; font-weight: 600 !important; color: var(--gold) !important; text-align: center !important; letter-spacing: 0.3px !important; } .light-theme .queue-notice-text { color: #b8860b !important; }