|
* { |
|
margin: 0; |
|
padding: 0; |
|
box-sizing: border-box; |
|
} |
|
|
|
body { |
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; |
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
min-height: 100vh; |
|
color: #333; |
|
} |
|
|
|
.container { |
|
max-width: 1200px; |
|
margin: 0 auto; |
|
padding: 20px; |
|
} |
|
|
|
header { |
|
text-align: center; |
|
color: white; |
|
margin-bottom: 40px; |
|
padding: 30px 20px; |
|
} |
|
|
|
header h1 { |
|
font-size: 2.5em; |
|
font-weight: 700; |
|
margin-bottom: 10px; |
|
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1); |
|
} |
|
|
|
.subtitle { |
|
font-size: 1.1em; |
|
opacity: 0.95; |
|
} |
|
|
|
main { |
|
background: white; |
|
border-radius: 20px; |
|
padding: 40px; |
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.1); |
|
} |
|
|
|
.upload-section { |
|
margin-bottom: 30px; |
|
} |
|
|
|
.upload-area { |
|
border: 3px dashed #ddd; |
|
border-radius: 15px; |
|
padding: 60px 30px; |
|
text-align: center; |
|
cursor: pointer; |
|
transition: all 0.3s ease; |
|
background: #fafafa; |
|
} |
|
|
|
.upload-area:hover { |
|
border-color: #667eea; |
|
background: #f5f5ff; |
|
} |
|
|
|
.upload-area.dragover { |
|
border-color: #667eea; |
|
background: #f0f0ff; |
|
transform: scale(1.02); |
|
} |
|
|
|
.upload-icon { |
|
width: 60px; |
|
height: 60px; |
|
color: #667eea; |
|
margin-bottom: 20px; |
|
} |
|
|
|
.upload-area h3 { |
|
color: #333; |
|
margin-bottom: 10px; |
|
font-size: 1.3em; |
|
} |
|
|
|
.upload-area p { |
|
color: #666; |
|
} |
|
|
|
.video-section { |
|
margin-bottom: 30px; |
|
} |
|
|
|
.video-container { |
|
margin-bottom: 30px; |
|
} |
|
|
|
#videoPlayer { |
|
width: 100%; |
|
max-width: 800px; |
|
margin: 0 auto; |
|
display: block; |
|
border-radius: 10px; |
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1); |
|
} |
|
|
|
.controls { |
|
display: flex; |
|
gap: 20px; |
|
align-items: flex-end; |
|
flex-wrap: wrap; |
|
margin-top: 30px; |
|
} |
|
|
|
.control-group { |
|
display: flex; |
|
flex-direction: column; |
|
gap: 8px; |
|
} |
|
|
|
.control-group label { |
|
font-weight: 500; |
|
color: #555; |
|
font-size: 0.9em; |
|
} |
|
|
|
.control-group select { |
|
padding: 10px 15px; |
|
border: 2px solid #e0e0e0; |
|
border-radius: 8px; |
|
font-size: 1em; |
|
background: white; |
|
cursor: pointer; |
|
transition: border-color 0.3s; |
|
} |
|
|
|
.control-group select:hover { |
|
border-color: #667eea; |
|
} |
|
|
|
.control-group select:focus { |
|
outline: none; |
|
border-color: #667eea; |
|
} |
|
|
|
.process-btn { |
|
padding: 12px 30px; |
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
color: white; |
|
border: none; |
|
border-radius: 8px; |
|
font-size: 1em; |
|
font-weight: 600; |
|
cursor: pointer; |
|
transition: transform 0.2s, box-shadow 0.2s; |
|
display: flex; |
|
align-items: center; |
|
gap: 10px; |
|
} |
|
|
|
.process-btn:hover:not(:disabled) { |
|
transform: translateY(-2px); |
|
box-shadow: 0 5px 20px rgba(102, 126, 234, 0.4); |
|
} |
|
|
|
.process-btn:disabled { |
|
opacity: 0.6; |
|
cursor: not-allowed; |
|
} |
|
|
|
.spinner { |
|
width: 20px; |
|
height: 20px; |
|
border: 3px solid rgba(255, 255, 255, 0.3); |
|
border-top-color: white; |
|
border-radius: 50%; |
|
animation: spin 1s linear infinite; |
|
} |
|
|
|
@keyframes spin { |
|
to { transform: rotate(360deg); } |
|
} |
|
|
|
.progress-section { |
|
margin: 30px 0; |
|
} |
|
|
|
.progress-bar { |
|
width: 100%; |
|
height: 30px; |
|
background: #f0f0f0; |
|
border-radius: 15px; |
|
overflow: hidden; |
|
margin-bottom: 15px; |
|
} |
|
|
|
.progress-fill { |
|
height: 100%; |
|
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); |
|
transition: width 0.5s ease; |
|
border-radius: 15px; |
|
} |
|
|
|
#progressText { |
|
text-align: center; |
|
color: #666; |
|
font-size: 0.95em; |
|
} |
|
|
|
.results-section h2 { |
|
margin-bottom: 25px; |
|
color: #333; |
|
font-size: 1.8em; |
|
} |
|
|
|
.frames-list { |
|
display: grid; |
|
gap: 25px; |
|
margin-bottom: 30px; |
|
} |
|
|
|
.frame-card { |
|
display: grid; |
|
grid-template-columns: 200px 1fr; |
|
gap: 20px; |
|
padding: 20px; |
|
background: #f9f9f9; |
|
border-radius: 12px; |
|
transition: transform 0.2s, box-shadow 0.2s; |
|
} |
|
|
|
.frame-card:hover { |
|
transform: translateY(-2px); |
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1); |
|
} |
|
|
|
.frame-thumbnail { |
|
position: relative; |
|
} |
|
|
|
.frame-thumbnail img { |
|
width: 100%; |
|
height: auto; |
|
border-radius: 8px; |
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); |
|
} |
|
|
|
.frame-time { |
|
position: absolute; |
|
bottom: 10px; |
|
right: 10px; |
|
background: rgba(0, 0, 0, 0.7); |
|
color: white; |
|
padding: 5px 10px; |
|
border-radius: 5px; |
|
font-size: 0.85em; |
|
font-weight: 500; |
|
} |
|
|
|
.frame-caption { |
|
display: flex; |
|
align-items: center; |
|
} |
|
|
|
.frame-caption p { |
|
line-height: 1.6; |
|
color: #444; |
|
} |
|
|
|
.export-buttons { |
|
display: flex; |
|
gap: 15px; |
|
justify-content: center; |
|
margin-top: 30px; |
|
} |
|
|
|
.export-btn { |
|
padding: 10px 25px; |
|
background: white; |
|
color: #667eea; |
|
border: 2px solid #667eea; |
|
border-radius: 8px; |
|
font-size: 0.95em; |
|
font-weight: 600; |
|
cursor: pointer; |
|
transition: all 0.3s; |
|
} |
|
|
|
.export-btn:hover { |
|
background: #667eea; |
|
color: white; |
|
transform: translateY(-2px); |
|
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3); |
|
} |
|
|
|
footer { |
|
text-align: center; |
|
color: white; |
|
margin-top: 40px; |
|
padding: 20px; |
|
opacity: 0.9; |
|
} |
|
|
|
.hidden { |
|
display: none !important; |
|
} |
|
|
|
@media (max-width: 768px) { |
|
header h1 { |
|
font-size: 2em; |
|
} |
|
|
|
main { |
|
padding: 20px; |
|
} |
|
|
|
.controls { |
|
flex-direction: column; |
|
align-items: stretch; |
|
} |
|
|
|
.process-btn { |
|
width: 100%; |
|
justify-content: center; |
|
} |
|
|
|
.frame-card { |
|
grid-template-columns: 1fr; |
|
} |
|
|
|
.export-buttons { |
|
flex-direction: column; |
|
} |
|
|
|
.export-btn { |
|
width: 100%; |
|
} |
|
} |