style(frontend): match Flask design with gold gradients and glass morphism

- Add Montserrat font from Google Fonts
- Use original color scheme (gold #FFC407, dark gradients)
- Add glass morphism effect with backdrop blur
- Add shimmer animation on header
- Style upload zone with hover/drag states
- Match all original design elements from Flask version

Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
SamoilenkoVadym 2026-02-09 14:15:23 +00:00
parent 632272f6b6
commit 16aa4f6b49

View file

@ -1,7 +1,40 @@
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
/* Oliver Gold Theme - matching Flask version */
--primary-gold: #FFC407;
--primary-gold-dark: #e6b007;
--primary-gold-light: #ffcf33;
--dark-primary: #2c2c2c;
--dark-secondary: #1a1a1a;
--white: #ffffff;
--light-bg: #fafafa;
--light-bg-gradient: #f8fafc;
--text-primary: #1f2937;
--text-secondary: #374151;
--text-muted: #6b7280;
--success-green: #4ade80;
--error-red: #ef4444;
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.1);
--shadow-md: 0 10px 25px rgba(0, 0, 0, 0.15);
--shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.1);
--radius-md: 12px;
--radius-lg: 18px;
--radius-xl: 20px;
--transition-normal: 0.3s ease;
}
* {
margin: 0;
padding: 0;
@ -9,14 +42,150 @@
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background: linear-gradient(135deg, var(--dark-primary) 0%, var(--dark-secondary) 100%);
min-height: 100vh;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
/* Dashboard with glass morphism effect */
.dashboard-wrapper {
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-lg);
border: 1px solid rgba(255, 255, 255, 0.2);
}
/* Gold gradient header */
.header-gold {
background: linear-gradient(135deg, var(--primary-gold) 0%, var(--primary-gold-dark) 100%);
position: relative;
overflow: hidden;
}
.header-gold::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, transparent 30%, rgba(255,255,255,0.1) 50%, transparent 70%);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%); }
100% { transform: translateX(100%); }
}
/* Gold button styling */
.btn-gold {
background: linear-gradient(135deg, var(--primary-gold), var(--primary-gold-dark));
color: var(--dark-secondary);
font-weight: 600;
padding: 12px 24px;
border-radius: var(--radius-md);
border: none;
cursor: pointer;
transition: all var(--transition-normal);
box-shadow: var(--shadow-sm);
}
.btn-gold:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: var(--shadow-md);
}
.btn-gold:disabled {
opacity: 0.6;
cursor: not-allowed;
}
/* Upload zone styling */
.upload-zone {
border: 2px dashed #ddd;
background: white;
padding: 60px 40px;
border-radius: var(--radius-lg);
transition: all var(--transition-normal);
cursor: pointer;
}
.upload-zone:hover {
border-color: var(--primary-gold);
background: #fffbf0;
transform: scale(1.01);
}
.upload-zone.drag-active {
border-color: var(--primary-gold-dark);
background: #fff9e6;
transform: scale(1.02);
box-shadow: var(--shadow-md);
}
/* File item cards */
.file-card {
background: white;
border-radius: var(--radius-md);
padding: 20px;
box-shadow: var(--shadow-sm);
transition: all var(--transition-normal);
border: 1px solid rgba(0, 0, 0, 0.05);
}
.file-card:hover {
box-shadow: var(--shadow-md);
transform: translateY(-2px);
}
/* Metadata field styling */
.metadata-field {
margin-bottom: 16px;
}
.metadata-field label {
display: block;
font-weight: 500;
color: var(--text-primary);
margin-bottom: 6px;
font-size: 14px;
}
.metadata-field input,
.metadata-field textarea,
.metadata-field select {
width: 100%;
padding: 10px 12px;
border: 1px solid #ddd;
border-radius: var(--radius-sm);
font-family: inherit;
font-size: 14px;
transition: all var(--transition-fast);
}
.metadata-field input:focus,
.metadata-field textarea:focus,
.metadata-field select:focus {
outline: none;
border-color: var(--primary-gold);
box-shadow: 0 0 0 3px rgba(255, 196, 7, 0.1);
}
/* Character counter */
.char-counter {
font-size: 12px;
color: var(--text-muted);
margin-top: 4px;
}
.char-counter.warning {
color: #f59e0b;
}
.char-counter.danger {
color: var(--error-red);
}