Tonemark is a SvelteKit PWA for transcribing YouTube videos, audio and video files, and microphone recordings using a local Whisper backend. Features: - Dark glassmorphic UI with electric-lime accent (5 switchable themes) - Rail nav (desktop) / tab bar (mobile) layout - Drop zone, YouTube URL input, and live audio recording inputs - Audio mode waveform cards (none / standard / aggressive / auto) - Real-time transcription progress with animated waveform - Job queue with SSE streaming updates - Push notifications on job completion - PWA with native SvelteKit service worker - SRT / TXT / MD / JSON transcript downloads Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
+75
@@ -0,0 +1,75 @@
|
||||
@import 'tailwindcss';
|
||||
|
||||
/* ── Tonemark design tokens ─────────────────────────────────── */
|
||||
:root {
|
||||
--accent: #cdf24e;
|
||||
--accent-rgb: 205,242,78;
|
||||
--accent-glow: rgba(205,242,78,0.06);
|
||||
--accent-dim: rgba(205, 242, 78, 0.12);
|
||||
--accent-border: rgba(205, 242, 78, 0.3);
|
||||
--bg: #0c0d10;
|
||||
--surface: rgba(255, 255, 255, 0.025);
|
||||
--surface-hover: rgba(255, 255, 255, 0.04);
|
||||
--border: rgba(255, 255, 255, 0.06);
|
||||
--text: #e8e9ec;
|
||||
--text-muted: rgba(232, 233, 236, 0.5);
|
||||
--text-dim: rgba(232, 233, 236, 0.4);
|
||||
--font-ui: 'Inter', system-ui, -apple-system, sans-serif;
|
||||
--font-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 12px;
|
||||
--radius-lg: 16px;
|
||||
--rail-width: 200px;
|
||||
}
|
||||
|
||||
/* ── Base ───────────────────────────────────────────────────── */
|
||||
*, *::before, *::after { box-sizing: border-box; }
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: var(--font-ui);
|
||||
letter-spacing: -0.01em;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
body {
|
||||
background:
|
||||
radial-gradient(120% 80% at 90% -10%, var(--accent-glow), transparent 60%),
|
||||
var(--bg);
|
||||
}
|
||||
|
||||
/* ── Glass surface ──────────────────────────────────────────── */
|
||||
.glass {
|
||||
background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.015));
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg);
|
||||
backdrop-filter: blur(20px);
|
||||
box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 24px 48px -24px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
/* ── Mono label ─────────────────────────────────────────────── */
|
||||
.mono { font-family: var(--font-mono); }
|
||||
.label {
|
||||
font-family: var(--font-mono);
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* ── Scrollbar ──────────────────────────────────────────────── */
|
||||
::-webkit-scrollbar { width: 4px; }
|
||||
::-webkit-scrollbar-track { background: transparent; }
|
||||
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }
|
||||
|
||||
/* ── Focus ring ─────────────────────────────────────────────── */
|
||||
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
||||
|
||||
/* ── Animations ─────────────────────────────────────────────── */
|
||||
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
|
||||
@keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } }
|
||||
@keyframes spin { to { transform: rotate(360deg); } }
|
||||
|
||||
Reference in New Issue
Block a user