OmniVoice-Studio / frontend /src /components /CastingView.css
LΓͺ Phi Nam
Deploy to HF Space
94004a2
Raw
History Blame Contribute Delete
5.92 kB
/* ── CastingView β€” Speaker-to-voice assignment grid ──────────────────── */
.casting-view {
border: 1px solid color-mix(in srgb, var(--chrome-border, #3c3836) 60%, transparent);
border-radius: 12px;
background: color-mix(in srgb, var(--chrome-bg, #282828) 50%, transparent);
padding: 12px 14px;
}
.casting-view__header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.casting-view__title {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
font-size: var(--text-sm, 13px);
font-weight: 600;
color: var(--chrome-fg, #ebdbb2);
}
.casting-view__actions {
display: flex;
align-items: center;
gap: 8px;
}
.casting-view__auto-btn {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 10px;
border-radius: 8px;
border: 1px solid color-mix(in srgb, #d3869b 30%, transparent);
background: color-mix(in srgb, #d3869b 8%, transparent);
color: #d3869b;
font-size: var(--text-xs, 11px);
font-weight: 500;
cursor: pointer;
transition: all 0.15s;
}
.casting-view__auto-btn:hover {
background: color-mix(in srgb, #d3869b 15%, transparent);
}
.casting-view__badge {
display: inline-flex;
align-items: center;
gap: 3px;
font-size: var(--text-2xs, 10px);
color: #8ec07c;
font-weight: 500;
}
/* ── Grid ───────────────────────────────────────────────────────────── */
.casting-view__grid {
display: flex;
flex-direction: column;
gap: 6px;
}
.casting-row {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 10px;
border-radius: 10px;
background: color-mix(in srgb, var(--chrome-bg, #282828) 80%, transparent);
border: 1px solid transparent;
transition: border-color 0.2s, background 0.2s;
}
.casting-row--assigned {
border-color: color-mix(in srgb, #8ec07c 20%, transparent);
background: color-mix(in srgb, #8ec07c 3%, var(--chrome-bg, #282828));
}
.casting-row__speaker {
display: flex;
align-items: center;
gap: 8px;
min-width: 120px;
}
.casting-row__avatar {
width: 28px;
height: 28px;
border-radius: 50%;
background: linear-gradient(135deg, #d3869b, #b16286);
color: #1d2021;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
font-weight: 700;
flex-shrink: 0;
}
.casting-row__info {
display: flex;
flex-direction: column;
}
.casting-row__name {
font-size: var(--text-sm, 13px);
font-weight: 500;
color: var(--chrome-fg, #ebdbb2);
}
.casting-row__meta {
font-size: var(--text-2xs, 10px);
color: var(--chrome-fg-dim, #665c54);
}
.casting-row__arrow {
color: var(--chrome-fg-dim, #665c54);
font-size: 14px;
flex-shrink: 0;
}
/* ── Voice picker ───────────────────────────────────────────────────── */
.casting-row__voice {
position: relative;
flex: 1;
}
.casting-row__picker {
display: flex;
align-items: center;
gap: 6px;
width: 100%;
padding: 5px 10px;
border-radius: 8px;
border: 1px solid color-mix(in srgb, var(--chrome-border, #3c3836) 80%, transparent);
background: color-mix(in srgb, var(--chrome-bg, #282828) 60%, transparent);
color: var(--chrome-fg, #ebdbb2);
font-size: var(--text-xs, 11px);
cursor: pointer;
transition: border-color 0.15s;
text-align: left;
}
.casting-row__picker:hover {
border-color: color-mix(in srgb, #d3869b 40%, transparent);
}
.casting-row__unassigned {
color: var(--chrome-fg-dim, #665c54);
font-style: italic;
}
.casting-row__preview {
background: none;
border: none;
color: var(--chrome-fg-muted, #a89984);
cursor: pointer;
padding: 4px;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
transition: color 0.15s, background 0.15s;
}
.casting-row__preview:hover {
color: #f3a5b6;
background: color-mix(in srgb, #f3a5b6 10%, transparent);
}
/* ── Dropdown ───────────────────────────────────────────────────────── */
.casting-dropdown {
position: absolute;
top: calc(100% + 4px);
left: 0;
right: 0;
z-index: 100;
background: color-mix(in srgb, var(--chrome-bg, #282828) 96%, transparent);
backdrop-filter: blur(16px);
border: 1px solid var(--chrome-border, #3c3836);
border-radius: 10px;
padding: 4px;
max-height: 200px;
overflow-y: auto;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
animation: casting-drop 0.15s ease-out;
}
@keyframes casting-drop {
from { opacity: 0; transform: translateY(-4px); }
to { opacity: 1; transform: translateY(0); }
}
.casting-dropdown__item {
display: flex;
align-items: center;
gap: 6px;
width: 100%;
padding: 6px 8px;
border-radius: 7px;
border: none;
background: none;
color: var(--chrome-fg, #ebdbb2);
font-size: var(--text-xs, 11px);
cursor: pointer;
text-align: left;
transition: background 0.1s;
}
.casting-dropdown__item:hover {
background: color-mix(in srgb, var(--chrome-fg, #ebdbb2) 8%, transparent);
}
.casting-dropdown__item.is-active {
color: #8ec07c;
}
.casting-dropdown__tag {
margin-left: auto;
font-size: var(--text-2xs, 10px);
color: var(--chrome-fg-dim, #665c54);
background: color-mix(in srgb, var(--chrome-fg-dim, #665c54) 12%, transparent);
padding: 1px 5px;
border-radius: 4px;
}
.casting-dropdown__divider {
height: 1px;
background: color-mix(in srgb, var(--chrome-border, #3c3836) 50%, transparent);
margin: 3px 6px;
}
.casting-dropdown__empty {
padding: 8px;
font-size: var(--text-xs, 11px);
color: var(--chrome-fg-dim, #665c54);
text-align: center;
font-style: italic;
}