SLT / style.css
plice13's picture
Upload style.css
4482de0 verified
Raw History Blame Contribute Delete
49.4 kB
/* ==============================================================================
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;
}