Kokoro-FastAPI/web/styles/base.css

102 lines
No EOL
2.1 KiB
CSS

:root {
--bg-color: #0f172a;
--fg-color: #6366f1;
--surface: rgba(30, 41, 59, 1);
--text: #f8fafc;
--text-light: #cbd5e1;
--border: rgba(148, 163, 184, 0.2);
--error: #ef4444;
--success: #22c55e;
--font-family: 'Inter', system-ui, sans-serif;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: var(--font-family);
line-height: 1.6;
color: var(--text);
background: radial-gradient(circle at top right,
var(--fg-color) 0%,
var(--bg-color) 100%);
min-height: 100vh;
position: relative;
}
.overlay {
position: fixed;
inset: 0;
background-image:
repeating-linear-gradient(0deg,
rgba(255,255,255,0.03) 0px,
rgba(255,255,255,0.03) 1px,
transparent 1px,
transparent 20px),
repeating-linear-gradient(90deg,
rgba(255,255,255,0.03) 0px,
rgba(255,255,255,0.03) 1px,
transparent 1px,
transparent 20px);
pointer-events: none;
}
.sun {
position: fixed;
top: 20px;
right: 20px;
width: 100px;
height: 100px;
border-radius: 50%;
background: radial-gradient(circle at center,
rgba(99, 102, 241, 0.2) 0%,
transparent 70%);
pointer-events: none;
z-index: 0;
}
.scanline {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 2px;
background: rgba(99, 102, 241, 0.1);
animation: scan 4s linear infinite;
}
@keyframes scan {
0% { transform: translateY(0); }
100% { transform: translateY(100px); }
}
.status {
padding: 0.75rem 1rem;
border-radius: 0.5rem;
margin-bottom: 1rem;
transition: all 0.3s ease;
opacity: 0;
font-weight: 500;
text-align: center;
}
.status.info {
background: rgba(99, 102, 241, 0.1);
border: 1px solid rgba(99, 102, 241, 0.2);
opacity: 1;
}
.status.error {
background: rgba(239, 68, 68, 0.1);
border: 1px solid rgba(239, 68, 68, 0.2);
opacity: 1;
}
.status.success {
background: rgba(34, 197, 94, 0.1);
border: 1px solid rgba(34, 197, 94, 0.2);
opacity: 1;
}