- {index + 1}
+ {/* Voice Assignments */}
+
+ {roles.map((role, index) => (
+
+
+
+ {index + 1}
+
+
-
+
+ ))}
+
+
+ {/* Settings Grid */}
+
+ {/* Language */}
+
+
- ))}
-
- {/* Settings Grid */}
-
- {/* Language */}
-
-
-
-
-
- {/* Speed */}
-
-
-
-
-
0.5x
-
1.5x
+ {/* Speed */}
+
+
+
+
+ 0.5x
+ 1.5x
+
-
- {/* Validation Message */}
- {!allRolesAssigned && !isGenerating && (
-
-
Please assign voices to all roles before continuing.
-
- )}
-
- {/* Action Buttons */}
-
- {onSkipReview && (
-
+ {/* Validation Message */}
+ {!allRolesAssigned && !isGenerating && (
+
+
⚠️ Please assign voices to all roles before continuing.
+
)}
-
);
diff --git a/frontend/src/index.css b/frontend/src/index.css
index 6d1af51..4df675a 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -2,54 +2,66 @@
@tailwind components;
@tailwind utilities;
-@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
+
+* {
+ box-sizing: border-box;
+}
:root {
- font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
font-weight: 400;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
}
body {
margin: 0;
min-width: 320px;
min-height: 100vh;
- background: #f8f9fa;
+ background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
}
@layer utilities {
.card-modern {
background: white;
- border-radius: 16px;
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
- border: 1px solid #e5e7eb;
- transition: all 0.2s ease;
+ border-radius: 24px;
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
+ border: 1px solid rgba(0, 0, 0, 0.05);
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.card-modern:hover {
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
- transform: translateY(-2px);
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
+ transform: translateY(-4px);
}
.btn-primary {
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
color: white;
font-weight: 600;
- padding: 12px 32px;
- border-radius: 12px;
+ padding: 14px 40px;
+ border-radius: 14px;
border: none;
cursor: pointer;
- transition: all 0.2s ease;
- box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
+ box-shadow: 0 4px 14px rgba(99, 102, 241, 0.4);
+ font-size: 16px;
}
.btn-primary:hover:not(:disabled) {
transform: translateY(-2px);
- box-shadow: 0 8px 20px rgba(99, 102, 241, 0.4);
+ box-shadow: 0 8px 24px rgba(99, 102, 241, 0.5);
+ }
+
+ .btn-primary:active:not(:disabled) {
+ transform: translateY(0);
}
.btn-primary:disabled {
- opacity: 0.5;
+ opacity: 0.6;
cursor: not-allowed;
+ transform: none;
}
}