:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.video-recorder{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:1rem;background:#f5f5f5;border-radius:12px;box-shadow:0 4px 6px #0000001a;max-width:100vw;margin:0 auto}.video-container{position:relative;width:100%;max-width:500px;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden}.camera-preview{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.recording-overlay{position:absolute;inset:0;background:#0000004d;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.5rem}.recording-indicator{display:flex;align-items:center;gap:.5rem;color:#fff;font-weight:700;font-size:1.1rem}.recording-dot{width:12px;height:12px;background:#f44;border-radius:50%;animation:pulse 1.5s infinite}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.initializing-overlay{position:absolute;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1rem;color:#fff}.loading-spinner{width:40px;height:40px;border:4px solid #333;border-top:4px solid #fff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.controls-section{width:100%;max-width:500px;display:flex;flex-direction:column;gap:1rem}.rotation-info{background:#fff;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.heading-display{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-size:1.1rem}.heading-label{font-weight:600;color:#333}.heading-value{font-family:monospace;font-size:1.2rem;font-weight:700;color:#2196f3}.progress-container{display:flex;flex-direction:column;gap:.5rem}.progress-info{display:flex;justify-content:space-between;font-size:.9rem;color:#666}.progress-bar{width:100%;height:12px;background:#e0e0e0;border-radius:6px;overflow:hidden}.progress-fill{height:100%;transition:width .3s ease,background-color .3s ease;border-radius:6px}.recording-controls{display:flex;gap:.5rem;justify-content:center}.btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-width:140px;text-align:center}.btn-primary{background:#2196f3;color:#fff}.btn-primary:hover:not(:disabled){background:#1976d2;transform:translateY(-1px)}.btn-stop{background:#f44336;color:#fff}.btn-stop:hover:not(:disabled){background:#d32f2f;transform:translateY(-1px)}.btn-secondary{background:#757575;color:#fff}.btn-secondary:hover:not(:disabled){background:#616161}.error-message{background:#ffebee;border:1px solid #f44336;border-radius:8px;padding:1rem;color:#c62828;text-align:center}.error-message p{margin:0 0 .5rem}@media (max-width: 768px){.video-recorder{padding:.5rem;gap:.75rem}.video-container{max-width:100%;border-radius:4px}.controls-section{max-width:100%}.rotation-info{padding:.75rem}.btn{padding:.875rem 1.25rem;font-size:.95rem;min-width:120px}.heading-value{font-size:1.1rem}}@media (max-width: 480px){.video-recorder{padding:.25rem}.recording-controls{flex-direction:column;align-items:stretch}.btn{min-width:auto}}@media (prefers-color-scheme: dark){.video-recorder{background:#2d2d2d;color:#fff}.rotation-info{background:#3d3d3d;color:#fff}.heading-label{color:#ccc}.progress-info{color:#aaa}.progress-bar{background:#555}}.recording-session{max-width:600px;margin:0 auto;padding:1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.session-header{text-align:center;margin-bottom:2rem}.session-header h2{color:#333;margin:0 0 1rem;font-size:1.5rem;font-weight:600}.session-progress{max-width:300px;margin:0 auto}.progress-text{display:flex;justify-content:space-between;margin-bottom:.5rem;font-size:.9rem;color:#666}.progress-bar{width:100%;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#2196f3,#21cbf3);transition:width .3s ease;border-radius:4px}.session-content{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;overflow:hidden}.session-start{padding:2rem;text-align:center}.start-instructions{margin-bottom:2rem}.start-instructions h3{color:#333;margin:0 0 1rem;font-size:1.3rem}.start-instructions p{color:#666;margin:0 0 1.5rem;line-height:1.5}.start-instructions ul{text-align:left;max-width:300px;margin:0 auto 2rem;color:#555;line-height:1.6}.start-instructions li{margin-bottom:.5rem}.btn-large{padding:1rem 2rem;font-size:1.1rem;min-width:200px}.session-recording{padding:1.5rem}.recording-status{margin-top:1.5rem;display:flex;justify-content:space-around;flex-wrap:wrap;gap:1rem}.status-item{display:flex;flex-direction:column;align-items:center;text-align:center}.status-label{font-size:.8rem;color:#666;margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.5px}.status-value{font-size:1.1rem;font-weight:600;color:#2196f3;font-family:monospace}.session-complete{padding:2rem;text-align:center}.completion-icon{font-size:3rem;color:#4caf50;margin-bottom:1rem}.session-complete h3{color:#333;margin:0 0 1rem;font-size:1.4rem}.session-complete p{color:#666;margin:0 0 2rem;line-height:1.5}.completion-stats{background:#f8f9fa;border-radius:8px;padding:1.5rem;margin-bottom:2rem}.stat-item{display:flex;justify-content:space-between;margin-bottom:.5rem}.stat-item:last-child{margin-bottom:0}.stat-label{color:#666;font-size:.9rem}.stat-value{font-weight:600;color:#333;font-family:monospace}.completion-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.session-error{background:#ffebee;border:1px solid #f44336;border-radius:8px;margin:1rem}.error-content{padding:1.5rem;text-align:center}.error-content h3{color:#c62828;margin:0 0 1rem}.error-content p{color:#c62828;margin:0 0 1.5rem}.error-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}@media (max-width: 768px){.recording-session{padding:.5rem}.session-header h2{font-size:1.3rem}.session-start{padding:1.5rem}.start-instructions h3{font-size:1.2rem}.btn-large{padding:.875rem 1.5rem;font-size:1rem;min-width:180px}.session-recording{padding:1rem}.recording-status{flex-direction:column;gap:.75rem}.status-item{flex-direction:row;justify-content:space-between}.session-complete{padding:1.5rem}.completion-icon{font-size:2.5rem}.completion-actions{flex-direction:column;align-items:stretch}.btn{min-width:auto}.error-actions{flex-direction:column;align-items:stretch}}@media (max-width: 480px){.recording-session{padding:.25rem}.session-header{margin-bottom:1.5rem}.session-start{padding:1rem}.start-instructions ul{font-size:.9rem}}@media (prefers-color-scheme: dark){.recording-session{color:#fff}.session-content{background:#2d2d2d}.session-header h2,.start-instructions h3{color:#fff}.start-instructions p,.start-instructions ul{color:#ccc}.completion-stats{background:#3d3d3d}.stat-label{color:#aaa}.stat-value{color:#fff}}.session-content>*{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.video-preview{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;overflow:hidden;margin-bottom:1rem}.video-container{position:relative;background:#000}.preview-video{width:100%;height:auto;max-height:300px;display:block}.video-controls{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:#000c;color:#fff}.play-pause-btn{background:none;border:none;color:#fff;font-size:1.2rem;cursor:pointer;padding:.25rem;border-radius:4px;transition:background-color .2s}.play-pause-btn:hover{background:#fff3}.progress-container{flex:1;cursor:pointer}.progress-bar{width:100%;height:6px;background:#ffffff4d;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:#2196f3;transition:width .1s;border-radius:3px}.time-display{font-size:.8rem;font-family:monospace;color:#ccc;min-width:80px;text-align:right}.video-metadata{padding:1rem;background:#f8f9fa;border-top:1px solid #e9ecef}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem}.metadata-item{display:flex;justify-content:space-between;align-items:center}.metadata-label{font-size:.85rem;color:#666;font-weight:500}.metadata-value{font-size:.85rem;color:#333;font-family:monospace;font-weight:600}.video-actions{padding:1rem;display:flex;gap:.5rem;justify-content:flex-end;background:#fff}.btn{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-secondary:hover:not(:disabled){background:#5a6268;transform:translateY(-1px)}@media (max-width: 768px){.video-preview{border-radius:8px}.preview-video{max-height:250px}.video-controls{padding:.5rem;gap:.25rem}.play-pause-btn{font-size:1.1rem}.time-display{font-size:.75rem;min-width:70px}.video-metadata{padding:.75rem}.metadata-grid{grid-template-columns:1fr;gap:.5rem}.metadata-item{flex-direction:column;align-items:flex-start;gap:.25rem}.metadata-label,.metadata-value{font-size:.8rem}.video-actions{padding:.75rem;flex-direction:column}.btn{width:100%;padding:.75rem}}@media (max-width: 480px){.preview-video{max-height:200px}.video-controls{flex-wrap:wrap}.progress-container{order:3;width:100%;margin-top:.25rem}.time-display{order:2;text-align:center;min-width:auto}}@media (prefers-color-scheme: dark){.video-preview{background:#2d2d2d}.video-metadata{background:#3d3d3d;border-top-color:#555}.metadata-label{color:#aaa}.metadata-value{color:#fff}.video-actions{background:#2d2d2d}}.video-preview.loading{opacity:.7}.video-preview.loading .preview-video{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:loading 1.5s infinite}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.app{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-header{background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:1.5rem 1rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.2)}.app-header h1{margin:0 0 .5rem;color:#fff;font-size:1.8rem;font-weight:700}.app-header p{margin:0;color:#fffc;font-size:1rem}.app-main{padding:1rem;max-width:800px;margin:0 auto}.device-warning{background:#ffffffe6;border:1px solid #ffc107;border-radius:8px;padding:1rem;margin-bottom:1rem;text-align:center}.device-warning h3{margin:0 0 .5rem;color:#856404}.device-warning p{margin:0;color:#856404}.error-banner{background:#f8d7da;border:1px solid #f5c6cb;border-radius:8px;padding:1rem;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.error-banner p{margin:0;color:#721c24}.home-view{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px #0000001a}.app-info h2{color:#333;margin-bottom:1rem;font-size:1.4rem}.app-info ol{text-align:left;max-width:400px;margin:0 auto 2rem;color:#666;line-height:1.6}.app-info li{margin-bottom:.5rem}.videos-summary{background:#e8f4fd;border-radius:8px;padding:1.5rem;margin-bottom:2rem;text-align:center;border:1px solid #bee5eb}.videos-summary h3{margin:0 0 1rem;color:#0c5460}.videos-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.preview-view h2{color:#333;text-align:center;margin-bottom:2rem}.videos-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.preview-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.upload-progress{background:#fff;border-radius:12px;padding:2rem;text-align:center;box-shadow:0 4px 6px #0000001a}.upload-progress h3{margin:0 0 1.5rem;color:#333}.progress-container{max-width:300px;margin:0 auto}.progress-bar{width:100%;height:12px;background:#e9ecef;border-radius:6px;overflow:hidden;margin-bottom:.5rem}.progress-fill{height:100%;background:linear-gradient(90deg,#28a745,#20c997);transition:width .3s ease;border-radius:6px}.progress-text{font-size:.9rem;color:#666;font-weight:600}.upload-complete{background:#fff;border-radius:12px;padding:2rem;text-align:center;box-shadow:0 4px 6px #0000001a}.upload-complete h3{margin:0 0 1rem;color:#333}.upload-stats{background:#d4edda;border:1px solid #c3e6cb;border-radius:8px;padding:1rem;margin-bottom:2rem}.upload-stats p{margin:0;color:#155724}.upload-warning{color:#856404!important;margin-top:.5rem!important}.upload-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-decoration:none;display:inline-block;text-align:center;min-width:140px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:#007bff;color:#fff}.btn-primary:hover:not(:disabled){background:#0056b3;transform:translateY(-1px);box-shadow:0 4px 8px #007bff4d}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover:not(:disabled){background:#545b62;transform:translateY(-1px)}.btn-success{background:#28a745;color:#fff}.btn-success:hover:not(:disabled){background:#1e7e34;transform:translateY(-1px);box-shadow:0 4px 8px #28a7454d}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover:not(:disabled){background:#c82333;transform:translateY(-1px)}@media (max-width: 768px){.app-header{padding:1rem .75rem}.app-header h1{font-size:1.5rem}.app-header p{font-size:.9rem}.app-main{padding:.5rem}.home-view{padding:1.5rem}.app-info h2{font-size:1.2rem}.videos-actions,.preview-actions,.upload-actions{flex-direction:column;align-items:stretch}.btn{min-width:auto;padding:.875rem 1.25rem}.error-banner{flex-direction:column;text-align:center}}@media (max-width: 480px){.app-header h1{font-size:1.3rem}.home-view{padding:1rem}.upload-progress,.upload-complete{padding:1.5rem}}@media (prefers-color-scheme: dark){.app{background:linear-gradient(135deg,#2d3748,#1a202c);color:#fff}.home-view,.upload-progress,.upload-complete{background:#2d3748;color:#fff}.device-warning{background:#ffc1071a;border-color:#ffc107}.device-warning h3,.device-warning p{color:#fff3cd}.error-banner{background:#dc35451a;border-color:#dc3545}.error-banner p{color:#f8d7da}.videos-summary{background:#007bff1a;border-color:#007bff}.videos-summary h3{color:#bee5eb}.upload-stats{background:#28a7451a;border-color:#28a745}.upload-stats p{color:#d4edda}}.pwa-install-prompt{position:fixed;bottom:1rem;left:1rem;right:1rem;background:#fff;border-radius:8px;padding:1rem;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;gap:1rem;z-index:1000}.pwa-install-prompt button{margin-left:auto;background:#007bff;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.app-main>*{animation:fadeIn .3s ease-out}
