| * { |
| 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%; |
| } |
| } |