lxrogerscohere's picture
Stop dark-mode flashes on language and example updates
ac5d5c8 verified
Raw History Blame Contribute Delete
17 kB
:root {
color-scheme: light;
--marble-100: #fafafa;
--marble-200: #f4f4f2;
--volcanic-900: #212121;
--volcanic-700: #616161;
--volcanic-500: #91918c;
--green-700: #39594d;
--coral-500: #ff7759;
--quartz-500: #d18ee2;
--mushroom-200: #e4ded2;
--mushroom-300: #d7cfc1;
--mushroom-700: #8e8572;
--sans: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
--shell-width: min(1040px, calc(100% - 48px));
/* Keep Gradio tokens light even when HF injects .dark / prefers-color-scheme */
--body-background-fill: var(--marble-100) !important;
--body-text-color: var(--volcanic-900) !important;
--body-text-color-subdued: var(--volcanic-700) !important;
--background-fill-primary: var(--marble-100) !important;
--background-fill-secondary: var(--marble-200) !important;
--block-background-fill: #ffffff !important;
--block-border-color: var(--mushroom-200) !important;
--block-label-text-color: var(--volcanic-500) !important;
--block-title-text-color: var(--volcanic-500) !important;
--border-color-primary: var(--mushroom-200) !important;
--input-background-fill: #ffffff !important;
--input-border-color: var(--mushroom-300) !important;
--input-placeholder-color: var(--volcanic-500) !important;
--checkbox-background-color: #ffffff !important;
--checkbox-label-background-fill: #ffffff !important;
--checkbox-label-text-color: var(--volcanic-900) !important;
--checkbox-border-color: var(--mushroom-300) !important;
--button-secondary-background-fill: var(--marble-200) !important;
--button-secondary-text-color: var(--volcanic-900) !important;
--button-secondary-border-color: transparent !important;
--color-accent-soft: #f6e8fa !important;
}
html,
body,
.gradio-container,
.gradio-container.dark,
.dark .gradio-container,
gradio-app,
gradio-app.dark {
min-height: 100%;
color-scheme: light !important;
background: var(--marble-100) !important;
color: var(--volcanic-900) !important;
font-family: var(--sans) !important;
}
/* Hugging Face / Gradio dark mode flips body text tokens while our
panels stay light. Keep the branded light surface in both modes. */
@media (prefers-color-scheme: dark) {
:root,
html,
body,
.gradio-container,
.gradio-container.dark,
gradio-app {
color-scheme: light !important;
background: var(--marble-100) !important;
color: var(--volcanic-900) !important;
--body-background-fill: var(--marble-100) !important;
--body-text-color: var(--volcanic-900) !important;
--background-fill-primary: var(--marble-100) !important;
--background-fill-secondary: var(--marble-200) !important;
--block-background-fill: #ffffff !important;
--input-background-fill: #ffffff !important;
--checkbox-label-background-fill: #ffffff !important;
--checkbox-label-text-color: var(--volcanic-900) !important;
}
}
/* Suppress Gradio progress flashes during fast local UI updates */
.progress-bar,
.meta-text,
.toast-wrap {
display: none !important;
}
.gradio-container {
max-width: none !important;
padding: 0 !important;
}
.gradio-container .prose {
color: var(--volcanic-900) !important;
}
footer {
display: none !important;
}
/* Header */
#header-shell {
border-bottom: 1px solid var(--mushroom-200);
}
.cohere-header {
display: flex;
align-items: center;
width: var(--shell-width);
height: 56px;
margin: 0 auto;
}
.cohere-header img {
display: block;
width: 104px;
height: 18px;
}
.model-link {
display: flex;
align-items: center;
margin-left: auto;
gap: 5px;
color: var(--green-700) !important;
font-size: 13px;
font-weight: 600;
text-decoration: none !important;
}
.model-link:hover {
color: #9b60aa !important;
}
#app-shell {
width: var(--shell-width);
margin: 0 auto;
padding: 28px 0 24px;
gap: 22px;
}
.config-banner {
padding: 8px 12px;
border: 1px solid var(--mushroom-300);
border-radius: 10px;
background: #f5f4f2;
color: var(--volcanic-700);
font-size: 12px;
}
/* Translator */
#translator-workspace {
align-items: stretch;
gap: 26px;
}
#source-column,
#output-column {
min-width: 0;
gap: 12px;
}
#source-column {
flex: 0.92 1 0%;
}
#output-column {
flex: 1.08 1 0%;
}
#source-language-control,
#target-language-control {
position: relative;
overflow: visible !important;
flex: 0 0 38px !important;
height: 38px;
min-height: 38px !important;
max-height: 38px;
}
#source-language-control {
z-index: 30;
}
#source-language-button {
width: max-content;
min-width: 0 !important;
border: 0 !important;
background: transparent !important;
color: var(--volcanic-900) !important;
box-shadow: none !important;
font-size: 15px !important;
font-weight: 600 !important;
}
#source-language-button {
padding: 7px 10px !important;
}
#source-language-button:hover {
background: var(--marble-200) !important;
}
#source-language-picker,
#target-language-popup {
position: absolute !important;
z-index: 100;
top: 42px;
width: 680px;
max-width: min(680px, calc(100vw - 48px));
padding: 14px !important;
border: 1px solid var(--mushroom-200) !important;
border-radius: 16px !important;
background: #fff !important;
box-shadow: 0 18px 60px rgb(33 33 33 / 16%) !important;
}
#source-language-picker {
left: 0;
}
#target-language-popup {
right: 0;
padding-top: 42px !important;
}
#target-language-picker {
position: static !important;
width: 100%;
padding: 0 !important;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
box-shadow: none !important;
}
#target-language-popup > .form,
#target-language-popup > .wrap,
#target-language-popup .form,
#target-language-picker > .form,
#target-language-picker > .wrap,
#target-language-picker .form,
#target-language-picker .wrap {
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
}
#target-picker-close {
position: absolute !important;
top: 8px;
right: 8px;
z-index: 2;
width: 30px;
min-width: 30px !important;
max-width: 30px;
height: 30px;
min-height: 30px !important;
padding: 0 !important;
border: 0 !important;
border-radius: 999px !important;
background: transparent !important;
color: var(--volcanic-700) !important;
font-size: 22px !important;
font-weight: 400 !important;
line-height: 1 !important;
box-shadow: none !important;
}
#target-picker-close:hover {
background: var(--marble-200) !important;
}
#source-language-picker .wrap,
#target-language-picker .wrap {
display: grid !important;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 2px 10px !important;
}
#source-language-picker label,
#target-language-picker label {
min-width: 0;
padding: 7px 8px !important;
border: 0 !important;
border-radius: 8px !important;
background: transparent !important;
color: var(--volcanic-900) !important;
font-size: 12px !important;
line-height: 1.25 !important;
}
#source-language-picker label span,
#target-language-picker label span,
#source-language-picker .checkbox-label,
#target-language-picker .checkbox-label,
#source-language-picker input + span,
#target-language-picker input + span {
color: var(--volcanic-900) !important;
}
#source-language-picker label:hover,
#target-language-picker label:hover {
background: var(--marble-200) !important;
}
#instructions-input,
#source-text-input,
#translation-output {
overflow: hidden;
position: relative;
border: 1px solid var(--mushroom-300) !important;
background: #fff !important;
box-shadow: none !important;
}
#instructions-input {
height: 128px;
min-height: 128px;
max-height: 128px;
border-radius: 22px !important;
}
#source-text-input {
height: 356px;
min-height: 356px;
max-height: 356px;
border-radius: 24px !important;
}
#translation-output {
height: 272px;
min-height: 272px;
max-height: 272px;
border-radius: 28px !important;
background: #f0f2f3 !important;
}
#instructions-input::before,
#source-text-input::before,
#translation-output::before {
position: absolute;
top: 13px;
left: 20px;
z-index: 1;
color: var(--volcanic-500) !important;
font-family: var(--sans) !important;
font-size: 10px !important;
font-weight: 600 !important;
line-height: 1.2 !important;
letter-spacing: 0.04em;
text-transform: uppercase;
pointer-events: none;
}
#instructions-input::before {
content: "Instructions";
}
#source-text-input::before {
content: "Source text";
}
#translation-output::before {
content: "Translation";
}
#instructions-input > .wrap,
#source-text-input > .wrap,
#translation-output > .wrap,
#instructions-input .input-container,
#source-text-input .input-container,
#translation-output .input-container {
display: flex !important;
height: 100% !important;
min-height: 0 !important;
max-height: 100% !important;
flex: 1 1 auto;
flex-direction: column;
}
#instructions-input textarea,
#source-text-input textarea,
#translation-output textarea {
height: 100% !important;
min-height: 0 !important;
max-height: 100% !important;
flex: 1 1 auto;
padding: 34px 20px 16px !important;
overflow-y: auto !important;
resize: none !important;
scrollbar-width: thin;
scrollbar-color: rgb(33 33 33 / 18%) transparent;
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
color: var(--volcanic-900) !important;
font-family: var(--sans) !important;
font-size: 15px !important;
line-height: 1.55 !important;
}
#instructions-input textarea::placeholder,
#source-text-input textarea::placeholder,
#translation-output textarea::placeholder {
color: var(--volcanic-500);
opacity: 1;
}
#instructions-input textarea::-webkit-scrollbar,
#source-text-input textarea::-webkit-scrollbar,
#translation-output textarea::-webkit-scrollbar {
width: 6px;
}
#instructions-input textarea::-webkit-scrollbar-track,
#source-text-input textarea::-webkit-scrollbar-track,
#translation-output textarea::-webkit-scrollbar-track {
background: transparent;
}
#instructions-input textarea::-webkit-scrollbar-thumb,
#source-text-input textarea::-webkit-scrollbar-thumb,
#translation-output textarea::-webkit-scrollbar-thumb {
border-radius: 999px;
background: rgb(33 33 33 / 18%);
}
#translate-button {
min-height: 42px;
border: 1px solid #c077d1 !important;
border-radius: 22px !important;
background: #e7afeF !important;
color: var(--volcanic-900) !important;
box-shadow: none !important;
font-size: 15px !important;
font-weight: 600 !important;
}
#translate-button:hover {
border-color: #a95fba !important;
background: #dda0e9 !important;
}
/* Target tabs */
#target-language-control {
align-items: center;
flex-wrap: nowrap !important;
gap: 4px;
z-index: 25;
}
#target-language-control button.target-tab {
appearance: none;
position: relative;
display: inline-flex !important;
flex: 0 0 auto !important;
align-items: center;
width: auto !important;
height: 38px !important;
min-height: 38px !important;
margin: 0 !important;
padding: 0 10px !important;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
color: var(--volcanic-700) !important;
box-shadow: none !important;
cursor: pointer;
font-family: var(--sans) !important;
font-size: 14px !important;
font-weight: 500 !important;
line-height: 1 !important;
transition:
color 160ms ease,
opacity 160ms ease;
}
#target-language-control button.target-tab::after {
position: absolute;
right: 8px;
bottom: 0;
left: 8px;
height: 2px;
border-radius: 999px;
background: var(--volcanic-900);
content: "";
opacity: 0;
transform: scaleX(0.35);
transition:
opacity 160ms ease,
transform 180ms ease;
}
#target-language-control button.target-tab:hover,
#target-language-control button.target-tab.active {
color: var(--volcanic-900) !important;
background: transparent !important;
}
#target-language-control button.target-tab.active::after {
opacity: 1;
transform: scaleX(1);
}
#target-language-control button.target-tab.loading,
#target-language-control button.target-tab.complete {
gap: 6px;
}
#target-language-control button.target-tab.loading::before,
#target-language-control button.target-tab.complete::before {
display: inline-flex;
flex: 0 0 12px;
align-items: center;
justify-content: center;
width: 12px;
height: 12px;
content: "";
}
#target-language-control button.target-tab.loading::before {
border: 1.5px solid rgb(33 33 33 / 22%);
border-top-color: var(--volcanic-900);
border-radius: 999px;
animation: spin 700ms linear infinite;
}
#target-language-control button.target-tab.complete::before {
background-color: var(--green-700);
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2.25 6.25 2.25 2.2 5.25-5.1'/%3E%3C/svg%3E")
center / 12px 12px no-repeat;
-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2.25 6.25 2.25 2.2 5.25-5.1'/%3E%3C/svg%3E")
center / 12px 12px no-repeat;
}
#target-language-control button.target-tab.loading {
opacity: 0.38;
}
#target-language-control button.target-tab.unavailable {
opacity: 0.38;
}
#target-language-control button.target-tab.unavailable:hover,
#target-language-control button.target-tab.unavailable.active {
opacity: 0.55;
}
#target-add {
display: inline-flex;
flex: 0 0 36px !important;
align-items: center;
justify-content: center;
width: 36px;
min-width: 36px !important;
max-width: 36px;
height: 36px;
min-height: 36px !important;
margin-left: 2px;
padding: 0 !important;
border: 0 !important;
border-radius: 999px !important;
background: transparent !important;
color: var(--volcanic-900) !important;
cursor: pointer;
font-family: var(--sans);
font-size: 21px !important;
font-weight: 400 !important;
box-shadow: none !important;
transform: translateY(-2px);
}
#target-add:hover {
background: var(--marble-200) !important;
}
/* Examples */
#example-cards-shell {
margin-top: 10px;
align-items: stretch;
gap: 18px;
}
.example-card-shell {
min-width: 0;
flex: 1 1 0% !important;
opacity: 0.76;
transition: opacity 160ms ease;
}
.example-card-shell:hover {
opacity: 1;
}
.example-card-shell,
.example-card-shell > div,
.example-card-shell .prose {
height: 100%;
}
.example-card {
display: flex;
width: 100%;
height: 100%;
min-height: 132px;
flex-direction: column;
align-items: flex-start;
padding: 18px;
border: 1px solid var(--mushroom-300);
border-radius: 22px;
background: #fff !important;
color: var(--volcanic-900) !important;
cursor: pointer;
font-family: var(--sans);
text-align: left;
transition:
border-color 160ms ease,
box-shadow 160ms ease,
transform 160ms ease;
}
.example-card:hover {
border-color: var(--quartz-500);
box-shadow: 0 10px 26px rgb(117 72 128 / 10%);
transform: translateY(-1px);
}
.example-icon {
display: inline-flex;
width: 24px;
height: 24px;
align-items: center;
justify-content: center;
margin-bottom: 14px;
color: var(--green-700);
}
.example-icon svg {
width: 22px;
height: 22px;
}
.example-title {
margin-bottom: 5px;
color: var(--volcanic-900) !important;
font-size: 15px;
font-weight: 600;
line-height: 1.25;
}
.example-description {
color: var(--volcanic-700) !important;
font-size: 12.5px;
font-weight: 400;
line-height: 1.45;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@media (max-width: 820px) {
:root {
--shell-width: calc(100% - 24px);
}
#app-shell {
padding: 18px 0;
}
#translator-workspace {
flex-direction: column;
gap: 22px;
}
#source-column,
#output-column {
flex: 1 1 auto;
}
#source-language-picker,
#target-language-popup {
width: calc(100vw - 24px);
}
#source-language-picker .wrap,
#target-language-picker .wrap {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
#translation-output {
height: 280px;
min-height: 280px;
max-height: 280px;
}
#example-cards-shell {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
}
@media (max-width: 500px) {
.model-link span:first-child {
display: none;
}
#source-language-picker .wrap,
#target-language-picker .wrap {
grid-template-columns: 1fr;
}
#example-cards-shell {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition: none !important;
}
.tab-spinner {
animation: none;
}
}