Spaces:
Running
Running
:root { | |
--primary-color: #2563eb; | |
--primary-dark: #1d4ed8; | |
--primary-light: #3b82f6; | |
--success-color: #16a34a; | |
--success-light: #22c55e; | |
--error-color: #dc2626; | |
--error-light: #ef4444; | |
--warning-color: #d97706; | |
--warning-light: #f59e0b; | |
--background-color: #f8fafc; | |
--card-background: #ffffff; | |
--text-color: #1e293b; | |
--text-light: #64748b; | |
--border-color: #e2e8f0; | |
--spacing-xs: 0.25rem; | |
--spacing-sm: 0.5rem; | |
--spacing-md: 1rem; | |
--spacing-lg: 1.5rem; | |
--spacing-xl: 2rem; | |
} | |
/* Base Styles */ | |
* { | |
margin: 0; | |
padding: 0; | |
box-sizing: border-box; | |
} | |
body { | |
font-family: system-ui, -apple-system, sans-serif; | |
background-color: var(--background-color); | |
color: var(--text-color); | |
line-height: 1.5; | |
transition: background-color 0.3s, color 0.3s; | |
} | |
/* Dark Mode */ | |
body.dark-theme { | |
--background-color: #0f172a; | |
--card-background: #1e293b; | |
--text-color: #e2e8f0; | |
--text-light: #94a3b8; | |
--border-color: #334155; | |
} | |
/* Layout */ | |
.app { | |
min-height: 100vh; | |
display: flex; | |
flex-direction: column; | |
} | |
.container { | |
width: 100%; | |
max-width: 1200px; | |
margin: 0 auto; | |
padding: 0 var(--spacing-md); | |
} | |
/* Header */ | |
.header { | |
background-color: var(--card-background); | |
border-bottom: 1px solid var(--border-color); | |
padding: var(--spacing-md) 0; | |
margin-bottom: var(--spacing-xl); | |
} | |
.nav { | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
} | |
.title { | |
font-size: 1.5rem; | |
font-weight: 600; | |
} | |
/* Cards */ | |
.card { | |
background-color: var(--card-background); | |
border-radius: 1rem; | |
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); | |
transition: transform 0.2s, box-shadow 0.2s; | |
border: 1px solid var(--border-color); | |
} | |
/* Upload Area */ | |
.upload-container { | |
margin-bottom: var(--spacing-xl); | |
} | |
.upload-area { | |
padding: var(--spacing-xl); | |
text-align: center; | |
border: 2px dashed var(--border-color); | |
border-radius: 0.5rem; | |
transition: all 0.3s ease; | |
} | |
.upload-area.drag-over { | |
border-color: var(--primary-color); | |
background-color: rgba(37, 99, 235, 0.1); | |
} | |
.upload-label { | |
cursor: pointer; | |
display: flex; | |
flex-direction: column; | |
align-items: center; | |
gap: var(--spacing-md); | |
} | |
.upload-icon { | |
width: 4rem; | |
height: 4rem; | |
border: 2px solid var(--text-light); | |
border-radius: 50%; | |
transition: border-color 0.3s; | |
} | |
.upload-text { | |
font-size: 1.125rem; | |
color: var(--text-color); | |
} | |
.upload-info { | |
color: var(--text-light); | |
font-size: 0.875rem; | |
} | |
/* Progress Bar */ | |
.progress-container { | |
margin: var(--spacing-md) 0; | |
} | |
.progress { | |
height: 8px; | |
background-color: var(--border-color); | |
border-radius: 4px; | |
overflow: hidden; | |
} | |
.progress-bar { | |
height: 100%; | |
background: linear-gradient(90deg, var(--primary-light), var(--primary-color)); | |
transition: width 0.3s ease; | |
width: 0; | |
} | |
/* Loading */ | |
.loading { | |
display: flex; | |
flex-direction: column; | |
align-items: center; | |
gap: var(--spacing-md); | |
margin: var(--spacing-xl) 0; | |
} | |
.spinner { | |
width: 3rem; | |
height: 3rem; | |
border: 3px solid var(--border-color); | |
border-top-color: var(--primary-color); | |
border-radius: 50%; | |
animation: spin 1s linear infinite; | |
} | |
/* Results Grid */ | |
.results-grid { | |
display: grid; | |
gap: var(--spacing-xl); | |
margin-top: var(--spacing-xl); | |
} | |
/* Compliance Report */ | |
.compliance-report { | |
padding: var(--spacing-lg); | |
} | |
.report-title { | |
margin-bottom: var(--spacing-lg); | |
font-size: 1.25rem; | |
font-weight: 600; | |
} | |
/* Badges */ | |
.badge { | |
display: inline-flex; | |
align-items: center; | |
padding: 0.25em 0.75em; | |
border-radius: 9999px; | |
font-size: 0.875rem; | |
font-weight: 500; | |
} | |
.badge-success { | |
background-color: var(--success-color); | |
color: white; | |
} | |
.badge-error { | |
background-color: var(--error-color); | |
color: white; | |
} | |
/* Toast */ | |
.toast { | |
position: fixed; | |
bottom: var(--spacing-xl); | |
right: var(--spacing-xl); | |
padding: var(--spacing-md) var(--spacing-lg); | |
background-color: var(--card-background); | |
border-radius: 0.5rem; | |
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); | |
animation: slideIn 0.3s ease-out; | |
z-index: 50; | |
} | |
/* Skeleton Loading */ | |
.skeleton { | |
background: linear-gradient( | |
90deg, | |
var(--border-color) 25%, | |
var(--card-background) 50%, | |
var(--border-color) 75% | |
); | |
background-size: 200% 100%; | |
animation: skeleton-loading 1.5s infinite; | |
border-radius: 4px; | |
height: 1rem; | |
margin-bottom: var(--spacing-sm); | |
} | |
.skeleton-line { | |
height: 1rem; | |
margin-bottom: var(--spacing-sm); | |
} | |
/* Animations */ | |
@keyframes spin { | |
to { | |
transform: rotate(360deg); | |
} | |
} | |
@keyframes slideIn { | |
from { | |
transform: translateY(100%); | |
opacity: 0; | |
} | |
to { | |
transform: translateY(0); | |
opacity: 1; | |
} | |
} | |
@keyframes skeleton-loading { | |
from { | |
background-position: 200% 0; | |
} | |
to { | |
background-position: -200% 0; | |
} | |
} | |
/* Utilities */ | |
.hidden { | |
display: none ; | |
} | |
/* Responsive */ | |
@media (max-width: 768px) { | |
.container { | |
padding: 0 var(--spacing-sm); | |
} | |
.upload-area { | |
padding: var(--spacing-lg); | |
} | |
.toast { | |
left: var(--spacing-md); | |
right: var(--spacing-md); | |
bottom: var(--spacing-md); | |
} | |
} |