OmniVoice-Studio / frontend /src /components /BootstrapSplash.css
Lê Phi Nam
Deploy to HF Space
94004a2
Raw
History Blame Contribute Delete
7.11 kB
.bootstrap-splash {
position: fixed;
inset: 0;
display: grid;
place-items: center;
background: var(--chrome-bg, #141414);
color: var(--chrome-fg, #eee);
font-family: 'Inter Variable', 'Inter', system-ui, sans-serif;
z-index: 9999;
padding: 2rem;
}
.bootstrap-splash__card {
width: 100%;
max-width: 560px;
background: color-mix(in srgb, var(--chrome-fg, #eee) 4%, transparent);
border: 1px solid color-mix(in srgb, var(--chrome-fg, #eee) 10%, transparent);
border-radius: 14px;
padding: 2rem;
text-align: left;
}
.bootstrap-splash__title-row {
display: flex;
align-items: baseline;
gap: 0.5rem;
margin-bottom: 0.5rem;
}
.bootstrap-splash__card h1 {
margin: 0;
font-size: 1.25rem;
font-weight: 600;
letter-spacing: -0.01em;
}
.bootstrap-splash__version {
font-size: 0.72rem;
opacity: 0.45;
font-family: 'IBM Plex Mono', ui-monospace, monospace;
font-variant-numeric: tabular-nums;
}
.bootstrap-splash__region {
margin-left: auto;
display: flex;
align-items: center;
}
.bootstrap-splash__region-select {
background: color-mix(in srgb, var(--chrome-fg, #eee) 8%, transparent);
border: 1px solid color-mix(in srgb, var(--chrome-fg, #eee) 12%, transparent);
color: inherit;
font: inherit;
font-size: 0.72rem;
padding: 0.25rem 0.5rem;
border-radius: 6px;
cursor: pointer;
appearance: none;
-webkit-appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23999'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.4rem center;
padding-right: 1.4rem;
transition: all 0.15s ease;
}
.bootstrap-splash__region-select:hover {
background-color: color-mix(in srgb, var(--chrome-fg, #eee) 14%, transparent);
}
.bootstrap-splash__region-select:focus {
outline: 1px solid var(--chrome-accent, #8ec07c);
outline-offset: 1px;
}
.bootstrap-splash__region-select option {
background: #1a1a1a;
color: #eee;
}
.bootstrap-splash__status {
margin: 0 0 1.25rem;
font-size: 0.95rem;
opacity: 0.85;
}
.bootstrap-splash__bar {
height: 4px;
width: 100%;
border-radius: 3px;
background: color-mix(in srgb, var(--chrome-fg, #eee) 8%, transparent);
overflow: hidden;
margin-bottom: 1.25rem;
}
.bootstrap-splash__bar-fill {
height: 100%;
background: var(--chrome-accent, #8ec07c);
transition: width 0.4s ease;
}
.bootstrap-splash__steps {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
font-size: 0.85rem;
}
.bootstrap-splash__steps li {
padding-left: 1.5rem;
position: relative;
opacity: 0.5;
}
.bootstrap-splash__steps li::before {
content: '○';
position: absolute;
left: 0;
top: 0;
}
.bootstrap-splash__steps li.done {
opacity: 0.6;
}
.bootstrap-splash__steps li.done::before {
content: '✓';
color: var(--chrome-accent, #8ec07c);
}
.bootstrap-splash__steps li.active {
opacity: 1;
font-weight: 500;
}
.bootstrap-splash__steps li.active::before {
content: '●';
color: var(--chrome-accent, #8ec07c);
animation: bootstrap-pulse 1.4s ease-in-out infinite;
}
@keyframes bootstrap-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
.bootstrap-splash__error {
font-family: 'IBM Plex Mono', ui-monospace, monospace;
font-size: 0.8rem;
background: color-mix(in srgb, #ef4444 12%, transparent);
border: 1px solid color-mix(in srgb, #ef4444 35%, transparent);
color: #fca5a5;
padding: 0.75rem 1rem;
border-radius: 8px;
white-space: pre-wrap;
word-break: break-word;
max-height: 250px;
overflow-y: auto;
user-select: text;
}
.bootstrap-splash__sub-progress {
margin: -0.5rem 0 1rem;
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.bootstrap-splash__sub-bar {
height: 3px;
width: 100%;
border-radius: 2px;
background: color-mix(in srgb, var(--chrome-fg, #eee) 6%, transparent);
overflow: hidden;
}
.bootstrap-splash__sub-bar-fill {
height: 100%;
background: color-mix(in srgb, var(--chrome-accent, #8ec07c) 70%, transparent);
transition: width 0.2s ease;
}
.bootstrap-splash__sub-label {
font-family: 'IBM Plex Mono', ui-monospace, monospace;
font-size: 0.72rem;
opacity: 0.65;
}
.bootstrap-splash__log-header {
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: 1.25rem;
}
.bootstrap-splash__log-toggle {
background: none;
border: none;
color: inherit;
opacity: 0.65;
font: inherit;
font-size: 0.78rem;
padding: 0.25rem 0;
cursor: pointer;
text-align: left;
}
.bootstrap-splash__log-toggle:hover { opacity: 1; }
.bootstrap-splash__log-count {
flex: 1;
opacity: 0.45;
font-size: 0.72rem;
font-variant-numeric: tabular-nums;
}
.bootstrap-splash__logs {
margin: 0.5rem 0 0;
max-height: 280px;
min-height: 100px;
overflow-y: auto;
font-family: 'IBM Plex Mono', ui-monospace, monospace;
font-size: 0.72rem;
line-height: 1.45;
background: color-mix(in srgb, var(--chrome-fg, #eee) 4%, transparent);
border: 1px solid color-mix(in srgb, var(--chrome-fg, #eee) 8%, transparent);
border-radius: 8px;
padding: 0.6rem 0.75rem;
white-space: pre-wrap;
word-break: break-word;
opacity: 0.85;
user-select: text;
}
.bootstrap-splash__copy-btn {
margin-top: 0.5rem;
background: color-mix(in srgb, var(--chrome-fg, #eee) 8%, transparent);
border: 1px solid color-mix(in srgb, var(--chrome-fg, #eee) 12%, transparent);
color: inherit;
font: inherit;
font-size: 0.75rem;
padding: 0.35rem 0.75rem;
border-radius: 6px;
cursor: pointer;
transition: all 0.15s;
}
.bootstrap-splash__copy-btn:hover {
background: color-mix(in srgb, var(--chrome-fg, #eee) 14%, transparent);
}
/* ── Error hints + retry actions ── */
.bootstrap-splash__hints {
margin-top: 0.75rem;
font-size: 0.8rem;
opacity: 0.9;
line-height: 1.5;
}
.bootstrap-splash__hints strong { display: block; margin-bottom: 0.35rem; }
.bootstrap-splash__hints ul {
margin: 0; padding-left: 1.25rem;
display: flex; flex-direction: column; gap: 0.25rem;
}
.bootstrap-splash__hints li { opacity: 0.85; }
.bootstrap-splash__actions {
display: flex; gap: 0.5rem; margin-top: 1rem;
}
.bootstrap-splash__retry-btn {
flex: 1;
padding: 0.5rem 1rem;
border-radius: 8px;
border: 1px solid color-mix(in srgb, var(--chrome-fg, #eee) 15%, transparent);
background: color-mix(in srgb, var(--chrome-accent, #8ec07c) 15%, transparent);
color: var(--chrome-fg, #eee);
font: inherit; font-size: 0.82rem; font-weight: 500;
cursor: pointer;
transition: all 0.15s;
}
.bootstrap-splash__retry-btn:hover:not(:disabled) {
background: color-mix(in srgb, var(--chrome-accent, #8ec07c) 25%, transparent);
}
.bootstrap-splash__retry-btn:disabled { opacity: 0.5; cursor: wait; }
.bootstrap-splash__retry-btn--danger {
background: color-mix(in srgb, #ef4444 12%, transparent);
border-color: color-mix(in srgb, #ef4444 30%, transparent);
}
.bootstrap-splash__retry-btn--danger:hover:not(:disabled) {
background: color-mix(in srgb, #ef4444 22%, transparent);
}