tfrere's picture
tfrere HF Staff
add embedings concept
3f9c62b
/* Font Details Component */
.font-details {
flex: 1;
display: flex;
flex-direction: column;
}
.font-details-placeholder {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: var(--spacing-xl);
color: var(--color-text-secondary);
position: relative;
min-height: 400px;
}
.dark-mode .font-details-placeholder {
color: var(--color-text-secondary-dark);
}
/* Placeholder icon */
.placeholder-icon {
position: relative;
margin-bottom: var(--spacing-xl);
display: flex;
align-items: center;
justify-content: center;
opacity: 0.7;
transition: all 0.3s ease;
}
.placeholder-icon svg {
color: var(--color-text-tertiary);
filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1));
}
.dark-mode .placeholder-icon svg {
color: var(--color-text-tertiary-dark);
filter: drop-shadow(0 2px 8px rgba(255, 255, 255, 0.1));
}
/* Simple icon animation */
.placeholder-icon {
position: relative;
z-index: 2;
opacity: 0.7;
transition: all 0.3s ease;
}
.placeholder-icon svg {
color: var(--color-text-tertiary);
filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1));
}
.dark-mode .placeholder-icon svg {
color: var(--color-text-tertiary-dark);
filter: drop-shadow(0 2px 8px rgba(255, 255, 255, 0.1));
}
/* Content styling */
.placeholder-content {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-md);
max-width: 320px;
}
.placeholder-content h3 {
font-size: 24px;
font-weight: 700;
margin: 0;
color: var(--color-text-primary);
letter-spacing: -0.02em;
line-height: 1.2;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
}
.dark-mode .placeholder-content h3 {
color: var(--color-text-primary-dark);
}
.placeholder-content p {
font-size: 16px;
line-height: 1.5;
margin: 0;
color: var(--color-text-secondary);
font-weight: 400;
}
.dark-mode .placeholder-content p {
color: var(--color-text-secondary-dark);
}
.font-details-header {
display: flex;
justify-content: flex-end;
margin-bottom: var(--spacing-md);
}
.close-btn {
padding: var(--spacing-sm);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-md);
background: var(--color-bg-primary);
color: var(--color-text-secondary);
cursor: pointer;
transition: all var(--transition-normal);
display: flex;
align-items: center;
justify-content: center;
}
.close-btn:hover {
background: var(--color-bg-tertiary);
color: var(--color-text-primary);
border-color: var(--color-border-secondary);
}
.dark-mode .close-btn {
border-color: var(--color-border-primary-dark);
background: var(--color-bg-primary-dark);
color: var(--color-text-secondary-dark);
}
.dark-mode .close-btn:hover {
background: var(--color-bg-tertiary-dark);
color: var(--color-text-primary-dark);
border-color: var(--color-border-secondary-dark);
}
.font-details-content {
flex: 1;
display: flex;
flex-direction: column;
gap: var(--spacing-lg);
padding: 0 var(--spacing-lg) var(--spacing-lg) var(--spacing-lg);
}
.font-preview {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: var(--spacing-xl);
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-lg);
box-shadow: var(--shadow-sm);
}
.dark-mode .font-preview {
background: var(--color-bg-primary-dark);
border-color: var(--color-border-primary-dark);
box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);
}
.font-preview-large {
display: flex;
align-items: center;
justify-content: center;
width: 100px;
height: 100px;
background: transparent;
border-radius: 0;
border: none;
position: relative;
transition: all 0.3s ease;
}
.font-preview-large:hover {
transform: translateY(-2px);
}
.dark-mode .font-preview-large {
background: transparent;
border: none;
}
.dark-mode .font-preview-large:hover {
transform: translateY(-2px);
}
.font-preview-large svg {
filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));
transition: all 0.3s ease;
}
.dark-mode .font-preview-large svg {
filter: drop-shadow(0 4px 12px rgba(255, 255, 255, 0.15));
}
/* Force SVG fill in dark mode for font previews */
.dark-mode .font-preview-large svg use {
fill: #ffffff !important;
color: #ffffff !important;
}
/* Font sentence preview - Design épuré et compact */
.font-sentence-preview {
display: flex;
justify-content: center;
align-items: center;
padding: 16px 20px;
background: transparent;
border-radius: 0;
border: none;
max-width: 100%;
position: relative;
}
.dark-mode .font-sentence-preview {
background: transparent;
border: none;
}
.font-info {
text-align: center;
}
.font-info .font-name {
font-size: 24px;
font-weight: 700;
margin-bottom: var(--spacing-xs);
color: var(--color-text-primary);
line-height: 1.2;
}
.dark-mode .font-info .font-name {
color: var(--color-text-primary-dark);
}
.font-info .font-category {
font-size: 14px;
color: var(--color-text-secondary);
letter-spacing: 0.5px;
font-weight: 500;
}
.dark-mode .font-info .font-category {
color: var(--color-text-secondary-dark);
}
.active-font-label {
font-size: 12px;
font-weight: 500;
color: var(--color-text-tertiary);
letter-spacing: 0.5px;
margin-bottom: 0!important;
}
.dark-mode .active-font-label {
color: var(--color-text-tertiary-dark);
}
.font-details-section {
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-lg);
padding: var(--spacing-lg);
box-shadow: var(--shadow-sm);
}
.dark-mode .font-details-section {
background: var(--color-bg-primary-dark);
border-color: var(--color-border-primary-dark);
box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);
}
.font-details-section h3 {
font-size: 16px;
font-weight: 600;
margin-bottom: var(--spacing-md);
color: var(--color-text-primary);
}
.dark-mode .font-details-section h3 {
color: var(--color-text-primary-dark);
}
.details-grid {
display: flex;
flex-direction: column;
gap: var(--spacing-sm);
}
.detail-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(--spacing-sm) 0;
border-bottom: 1px solid var(--color-border-primary);
}
.detail-item:last-child {
border-bottom: none;
}
.dark-mode .detail-item {
border-bottom-color: var(--color-border-primary-dark);
}
.detail-label {
font-size: 12px;
color: var(--color-text-secondary);
font-weight: 500;
letter-spacing: 0.3px;
}
.dark-mode .detail-label {
color: var(--color-text-secondary-dark);
}
.detail-value {
font-size: 12px;
color: var(--color-text-primary);
font-weight: 600;
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
}
.dark-mode .detail-value {
color: var(--color-text-primary-dark);
}
.text-preview {
display: flex;
flex-direction: column;
gap: var(--spacing-md);
}
.preview-text {
font-size: 16px;
line-height: 1.4;
color: var(--color-text-primary);
padding: 0;
background: transparent;
border: none;
border-radius: 0;
font-weight: 400;
letter-spacing: 0.01em;
text-align: center;
margin: 0;
max-width: 280px;
}
.dark-mode .preview-text {
color: var(--color-text-primary-dark);
background: transparent;
border: none;
}
.font-actions {
display: flex;
flex-direction: column;
gap: var(--spacing-sm);
}
.action-btn {
display: flex;
align-items: center;
justify-content: center;
gap: var(--spacing-sm);
padding: var(--spacing-md) var(--spacing-lg);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-md);
background: var(--color-bg-primary);
color: var(--color-text-primary);
font-size: 14px;
font-weight: 500;
text-decoration: none;
cursor: pointer;
transition: all var(--transition-normal);
text-transform: uppercase;
letter-spacing: 0.3px;
}
.action-btn:hover {
background: var(--color-bg-secondary);
border-color: var(--color-border-secondary);
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
.dark-mode .action-btn {
border-color: var(--color-border-primary-dark);
background: var(--color-bg-primary-dark);
color: var(--color-text-primary-dark);
}
.dark-mode .action-btn:hover {
background: var(--color-bg-tertiary-dark);
border-color: var(--color-border-secondary-dark);
box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);
}
.action-btn.primary {
background: var(--color-accent);
color: #ffffff;
border-color: var(--color-accent);
}
.action-btn.primary:hover {
background: var(--color-accent-hover);
border-color: var(--color-accent-hover);
box-shadow: 0 2px 8px rgba(0, 122, 204, 0.3);
}
.dark-mode .action-btn.primary {
background: var(--color-accent-dark);
border-color: var(--color-accent-dark);
}
.dark-mode .action-btn.primary:hover {
background: var(--color-accent-hover-dark);
border-color: var(--color-accent-hover-dark);
box-shadow: 0 2px 8px rgba(79, 195, 247, 0.3);
}
.action-btn.ghost {
background: #ffffff;
color: var(--color-text-primary);
border: 1px solid var(--color-text-secondary);
margin-top: var(--spacing-md);
}
.action-btn.ghost:hover {
background: var(--color-bg-secondary);
color: var(--color-text-primary);
border-color: var(--color-text-primary);
transform: translateY(-1px);
}
.dark-mode .action-btn.ghost {
background: var(--color-bg-primary-dark);
color: var(--color-text-primary-dark);
border-color: var(--color-text-secondary-dark);
}
.dark-mode .action-btn.ghost:hover {
background: var(--color-bg-secondary-dark);
color: var(--color-text-primary-dark);
border-color: var(--color-text-primary-dark);
}
/* Style pour le lien Google Fonts intégré dans la carte */
.font-action-section .google-fonts-link.ghost {
margin-top: 0!important;
background: var(--color-bg-secondary) !important;
color: var(--color-text-primary) !important;
border-color: var(--color-text-tertiary) !important;
width: 100%;
border-radius: 0 0 var(--border-radius-md) var(--border-radius-md) !important;
border: 1px solid var(--color-text-tertiary) !important;
border-top: 1px solid var(--color-text-tertiary) !important;
border-left: 1px solid var(--color-text-tertiary) !important;
border-right: 1px solid var(--color-text-tertiary) !important;
border-bottom: 1px solid var(--color-text-tertiary) !important;
}
.font-action-section .google-fonts-link.ghost:hover {
background: var(--color-bg-tertiary) !important;
color: var(--color-text-primary) !important;
border-color: var(--color-text-tertiary) !important;
transform: none !important;
box-shadow: none !important;
}
.dark-mode .font-action-section .google-fonts-link.ghost {
background: var(--color-bg-secondary-dark) !important;
color: var(--color-text-primary-dark) !important;
border-color: var(--color-text-tertiary-dark) !important;
border-top-color: var(--color-text-tertiary-dark) !important;
border-left-color: var(--color-text-tertiary-dark) !important;
border-right-color: var(--color-text-tertiary-dark) !important;
border-bottom-color: var(--color-text-tertiary-dark) !important;
}
.dark-mode .font-action-section .google-fonts-link.ghost:hover {
background: var(--color-bg-tertiary-dark) !important;
color: var(--color-text-primary-dark) !important;
border-color: var(--color-text-tertiary-dark) !important;
transform: none !important;
box-shadow: none !important;
}
.google-fonts-link svg {
margin-left: 8px;
}
/* Active font card - Design compact */
.active-font-card {
background: var(--color-bg-primary);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-md);
box-shadow: var(--shadow-sm);
overflow: hidden;
margin-bottom: var(--spacing-md);
position: relative;
transition: all 0.3s ease;
}
.dark-mode .active-font-card {
background: var(--color-bg-primary-dark);
border-color: var(--color-border-primary-dark);
box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);
}
/* Contenu principal avec lettre à gauche et info à droite */
.active-font-content {
display: flex;
align-items: center;
gap: var(--spacing-md);
padding: var(--spacing-md);
background: var(--color-bg-secondary);
border-bottom: 1px solid var(--color-border-primary);
}
.dark-mode .active-font-content {
background: var(--color-bg-secondary-dark);
border-bottom-color: var(--color-border-primary-dark);
}
/* Lettre à gauche */
.font-letter-preview {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
width: 120px;
height: 120px;
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-sm);
background: var(--color-bg-primary);
}
.dark-mode .font-letter-preview {
background: var(--color-bg-primary-dark);
border: 1px solid var(--color-border-primary-dark);
}
.font-letter-preview svg {
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
}
.dark-mode .font-letter-preview svg {
filter: drop-shadow(0 2px 4px rgba(255, 255, 255, 0.1));
}
/* Info à droite */
.font-info-compact {
flex: 1;
display: flex;
flex-direction: column;
gap: 2px;
}
.font-name-compact {
font-size: 18px;
font-weight: 600;
margin: 0;
color: var(--color-text-primary);
line-height: 1.2;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
}
.dark-mode .font-name-compact {
color: var(--color-text-primary-dark);
}
.font-category-compact {
font-size: 12px;
color: var(--color-text-secondary);
margin: 0;
font-weight: 500;
letter-spacing: 0.05em;
text-transform: uppercase;
}
.dark-mode .font-category-compact {
color: var(--color-text-secondary-dark);
}
/* Font metadata (weights et styles) */
.font-metadata {
display: flex;
flex-direction: column;
gap: 2px;
margin-top: 4px;
}
.font-weights, .font-styles {
font-size: 10px;
color: var(--color-text-tertiary);
font-weight: 400;
letter-spacing: 0.02em;
opacity: 0.8;
}
.dark-mode .font-weights, .dark-mode .font-styles {
color: var(--color-text-tertiary-dark);
}
/* Sentence en dessous */
.font-sentence-compact {
padding: var(--spacing-sm) var(--spacing-md) 0 var(--spacing-md);
display: flex;
align-items: center;
justify-content: center;
background: var(--color-bg-primary);
position: relative;
height: 100px; /* Hauteur fixe des images SVG de sentence (165x49) */
}
.dark-mode .font-sentence-compact {
background: var(--color-bg-primary-dark);
}
/* Section d'action intégrée dans la carte */
.font-action-section {
padding: 0;
background: var(--color-bg-primary);
display: flex;
justify-content: center;
}
.dark-mode .font-action-section {
background: var(--color-bg-primary-dark);
}
/* Label Active Font en dehors de la carte */
.active-font-label {
margin: 0 0 var(--spacing-md) 0;
font-size: 16px;
font-weight: 600;
color: var(--color-text-primary);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
}
.dark-mode .active-font-label {
color: var(--color-text-primary-dark);
}
/* Partie 1: Header avec nom et catégorie - Design typographique */
.active-font-header {
padding: 24px 28px 20px 28px;
border-bottom: 1px solid var(--color-border-primary);
background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-bg-primary) 100%);
position: relative;
}
.dark-mode .active-font-header {
background: linear-gradient(135deg, var(--color-bg-secondary-dark) 0%, var(--color-bg-primary-dark) 100%);
border-bottom-color: var(--color-border-primary-dark);
}
.active-font-header .font-name {
font-weight: 700;
font-size: 28px;
margin: 0 0 8px 0;
color: var(--color-text-primary);
letter-spacing: -0.02em;
line-height: 1.2;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
}
.dark-mode .active-font-header .font-name {
color: var(--color-text-primary-dark);
}
.active-font-header .font-category {
font-size: 14px;
color: var(--color-text-secondary);
margin: 0;
font-weight: 500;
letter-spacing: 0.1em;
opacity: 0.8;
}
.dark-mode .active-font-header .font-category {
color: var(--color-text-secondary-dark);
}
/* Partie 2: Preview avec image et phrase - Design compact et élégant */
.active-font-preview {
padding: 24px 28px 28px 28px;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
background: var(--color-bg-primary);
position: relative;
}
.dark-mode .active-font-preview {
background: var(--color-bg-primary-dark);
}
/* Similar Fonts */
.similar-fonts {
margin-top: var(--spacing-lg);
}
.similar-fonts-title {
margin: 0 0 var(--spacing-md) 0;
font-size: 16px;
font-weight: 600;
color: var(--color-text-primary);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
}
.dark-mode .similar-fonts-title {
color: var(--color-text-primary-dark);
}
.similar-fonts-list {
display: flex;
flex-direction: column;
gap: var(--spacing-sm);
}
.similar-font-item {
display: flex;
align-items: center;
height: 60px;
gap: var(--spacing-md);
padding: var(--spacing-md);
border: 1px solid var(--color-border-primary);
border-radius: var(--border-radius-md);
background: var(--color-bg-primary);
transition: all var(--transition-normal);
cursor: pointer;
}
.similar-font-item:hover {
background: var(--color-bg-secondary);
border-color: var(--color-border-secondary);
transform: translateY(-1px);
box-shadow: var(--shadow-sm);
}
.dark-mode .similar-font-item {
border-color: var(--color-border-primary-dark);
background: var(--color-bg-primary-dark);
}
.dark-mode .similar-font-item:hover {
background: var(--color-bg-tertiary-dark);
border-color: var(--color-border-secondary-dark);
box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);
}
/* État hover supprimé pour les similar fonts */
.similar-font-preview {
width: 80px;
height: 32px;
border-radius: var(--border-radius-sm);
overflow: hidden;
background: var(--color-bg-tertiary);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.dark-mode .similar-font-preview {
background: var(--color-bg-tertiary-dark);
}
.font-sprite {
width: 100%;
height: 100%;
object-fit: cover;
}
/* SVG sprites for dark mode */
.dark-mode .font-sprite {
fill: #ffffff !important;
color: #ffffff !important;
}
.dark-mode .font-sprite use {
fill: #ffffff !important;
color: #ffffff !important;
}
/* Force all font glyphs in sidebar to be white in dark mode */
.dark-mode .font-letter-preview svg use {
fill: #ffffff !important;
color: #ffffff !important;
}
.dark-mode .similar-font-glyph svg use {
fill: #ffffff !important;
color: #ffffff !important;
}
.dark-mode .font-glyph-small use {
fill: #ffffff !important;
color: #ffffff !important;
}
.font-fallback {
font-size: 14px;
font-weight: 600;
color: var(--color-text-secondary);
}
.dark-mode .font-fallback {
color: var(--color-text-secondary-dark);
}
.similar-font-glyph {
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: center;
width: 48px;
height: 48px;
margin-right: -8px;
margin-left: -12px;
}
.similar-font-glyph .font-glyph-small {
width: 32px;
height: 32px;
}
.similar-font-info {
flex: 0 0 auto;
display: flex;
flex-direction: column;
gap: 2px;
min-width: 120px;
}
.similar-font-sentence {
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
min-width: 0;
position: relative;
min-height: 49px; /* Hauteur fixe des images SVG de sentence (165x49) */
}
.font-name {
font-size: 12px;
font-weight: 600;
color: var(--color-text-primary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dark-mode .font-name {
color: var(--color-text-primary-dark);
}
.font-family {
font-size: 10px;
color: var(--color-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dark-mode .font-family {
color: var(--color-text-secondary-dark);
}
.similarity-score {
font-size: 10px;
font-weight: 600;
color: var(--color-accent);
background: rgba(0, 122, 204, 0.1);
padding: 2px 6px;
border-radius: 10px;
flex-shrink: 0;
}
.dark-mode .similarity-score {
color: var(--color-accent-dark);
background: rgba(79, 195, 247, 0.1);
}
.no-similar {
font-size: 12px;
color: var(--color-text-secondary);
font-style: italic;
text-align: center;
padding: var(--spacing-md);
}
.dark-mode .no-similar {
color: var(--color-text-secondary-dark);
}