: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;justify-content:center}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}}.app{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app-header{text-align:center;padding:2rem 0;background:#0000001a;margin-bottom:2rem}.app-header h1{font-size:2.5rem;margin:0 0 .5rem;background:linear-gradient(45deg,#ff6b6b,#4ecdc4,#45b7d1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-header p{font-size:1.1rem;opacity:.9;margin:0}.app-main{max-width:1200px;margin:0 auto;padding:0 1rem;display:grid;grid-template-columns:1fr 2fr;gap:2rem}.upload-section{background:#ffffff1a;border-radius:1rem;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.image-uploader{height:100%}.upload-area{border:2px dashed rgba(255,255,255,.3);border-radius:1rem;padding:2rem;text-align:center;cursor:pointer;transition:all .3s ease;background:#ffffff0d}.upload-area:hover,.upload-area.drag-over{border-color:#4ecdc4;background:#4ecdc41a;transform:translateY(-2px)}.upload-area svg{opacity:.7;margin-bottom:1rem}.upload-area h3{margin:0 0 .5rem;font-size:1.3rem}.upload-area p{margin:.5rem 0;opacity:.8}.format-hint{font-size:.9rem;opacity:.6}.image-gallery{margin-top:1.5rem}.image-gallery h4{margin:0 0 1rem;font-size:1.1rem}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem}.image-item{position:relative;border-radius:.5rem;overflow:hidden;background:#ffffff1a;transition:transform .2s ease}.image-item:hover{transform:scale(1.05)}.image-preview{width:100%;height:80px;object-fit:cover;display:block}.remove-button{position:absolute;top:4px;right:4px;background:#f00c;border:none;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;transition:background .2s ease}.remove-button:hover{background:red}.image-name{padding:.5rem;font-size:.8rem;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.video-section{background:#ffffff1a;border-radius:1rem;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.video-container{position:relative;background:#000;border-radius:.5rem;overflow:hidden;margin-bottom:1rem;display:flex;justify-content:center;max-width:480px;margin:0 auto 1rem}.video-canvas{width:100%;height:auto;display:block;border-radius:.5rem;max-width:360px;max-height:640px}.video-controls{display:flex;flex-direction:column;gap:1rem}.control-group{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.control-button{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.2rem;border:none;border-radius:.5rem;background:#fff3;color:#fff;cursor:pointer;transition:all .2s ease;font-size:.9rem;font-weight:500;flex:1;min-width:100px;max-width:140px}.control-button:hover:not(:disabled){background:#ffffff4d;transform:translateY(-1px)}.control-button:disabled{opacity:.5;cursor:not-allowed}.control-button.primary{background:linear-gradient(45deg,#ff6b6b,#ee5a52)}.control-button.primary:hover:not(:disabled){background:linear-gradient(45deg,#ff5252,#e53e3e)}.control-button.success{background:linear-gradient(45deg,#4ecdc4,#44a08d)}.control-button.success:hover:not(:disabled){background:linear-gradient(45deg,#44a08d,#3d8b85)}.spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-info{display:flex;justify-content:space-around;padding:1rem;background:#0003;border-radius:.5rem;margin-top:1rem}.status-item{text-align:center}.status-label{display:block;font-size:.8rem;opacity:.7;margin-bottom:.25rem}.status-value{font-weight:600;font-size:.9rem}.status-value.ready{color:#4ecdc4}.status-value.not-ready{color:#ff6b6b}.status-value.playing{color:#4ecdc4}.status-value.paused{color:#ffa726}.audio-analyzer{grid-column:1 / -1;background:#0003;border-radius:1rem;padding:1rem;margin-top:1rem}.analyzer-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.analyzer-info h4{margin:0;font-size:1.1rem}.status{font-size:.9rem;opacity:.8}.spectrum-visualizer{display:flex;align-items:end;height:80px;gap:2px;background:#0000004d;border-radius:.5rem;padding:.5rem}.spectrum-bar{flex:1;min-height:2px;border-radius:1px;transition:height .1s ease}.video-renderer{margin-top:1rem}.renderer-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem;padding:.5rem 1rem;background:#0003;border-radius:.5rem;font-size:.8rem}.renderer-info div{text-align:center;padding:.25rem;background:#ffffff0d;border-radius:.25rem}.video-container{position:relative;background:linear-gradient(45deg,#1a1a2e,#16213e);border-radius:.5rem;overflow:hidden;margin-bottom:1rem;box-shadow:0 8px 32px #0000004d;display:flex;justify-content:center;max-width:480px;margin:0 auto 1rem}.video-canvas{width:100%;height:auto;display:block;border-radius:.5rem;transition:filter .3s ease;max-width:360px;max-height:640px}.video-canvas:hover{filter:brightness(1.1)}@media (max-width: 768px){.app-main{grid-template-columns:1fr;gap:1rem}.app-header h1{font-size:2rem}.control-group{flex-wrap:wrap}.control-button{flex:1;min-width:120px;max-width:none}.video-container{max-width:320px}.video-canvas{max-width:280px;max-height:498px}.status-info{flex-direction:column;gap:.5rem}}
