@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root,:root.light{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--bg-base:#fafafa;--bg-surface:#fff;--bg-surface-hover:#f3f4f6;--bg-panel:#fff;--accent-primary:#000;--accent-primary-hover:#333;--accent-primary-text:#fff;--accent-blue:#0070f3;--text-primary:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--border-subtle:#00000014;--border-focus:#0003;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 12px #0000000d;--shadow-lg:0 12px 32px #00000014;--progress-track:#f3f4f6;--progress-fill:#111827;font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-base);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s,color .3s}@media (prefers-color-scheme:dark){:root:not(.light){--bg-base:#0a0a0a;--bg-surface:#171717;--bg-surface-hover:#262626;--bg-panel:#171717;--accent-primary:#fff;--accent-primary-hover:#e5e5e5;--accent-primary-text:#000;--accent-blue:#3291ff;--text-primary:#f3f4f6;--text-secondary:#a1a1aa;--text-muted:#52525b;--border-subtle:#ffffff1a;--border-focus:#ffffff40;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 4px 12px #0006;--shadow-lg:0 12px 32px #00000080;--progress-track:#262626;--progress-fill:#fff}}:root.dark{--bg-base:#0a0a0a;--bg-surface:#171717;--bg-surface-hover:#262626;--bg-panel:#171717;--accent-primary:#fff;--accent-primary-hover:#e5e5e5;--accent-primary-text:#000;--accent-blue:#3291ff;--text-primary:#f3f4f6;--text-secondary:#a1a1aa;--text-muted:#52525b;--border-subtle:#ffffff1a;--border-focus:#ffffff40;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 4px 12px #0006;--shadow-lg:0 12px 32px #00000080;--progress-track:#262626;--progress-fill:#fff}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-base);min-width:320px;min-height:100vh;color:var(--text-primary);transition:background-color .3s,color .3s;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-focus);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}button,input,select{font:inherit;outline:none}button{-webkit-tap-highlight-color:transparent}.theme-toggle{background:var(--bg-surface);border:1px solid var(--border-subtle);width:44px;height:44px;color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-md);z-index:1000;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:fixed;bottom:24px;right:24px}.theme-toggle:hover{background:var(--bg-surface-hover);box-shadow:var(--shadow-lg);transform:scale(1.05)}.app-shell{flex-direction:column;min-height:100vh;padding:32px 24px;display:flex}.topbar{align-items:center;gap:16px;width:100%;max-width:1200px;height:56px;margin:0 auto 32px;display:flex}.back-link{width:36px;height:36px;color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:8px;justify-content:center;align-items:center;text-decoration:none;transition:all .2s;display:flex}.back-link:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-focus)}.brand{color:var(--text-primary);letter-spacing:-.5px;margin-right:auto;font-size:20px;font-weight:700}.library-status,.icon-button{border:1px solid var(--border-subtle);background:var(--bg-surface);height:36px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:8px;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.library-status{padding:0 14px}.icon-button{width:36px}.library-status:hover,.icon-button:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-focus)}.workspace{flex:1;grid-template-columns:340px minmax(0,1fr);gap:24px;width:100%;max-width:1200px;margin:0 auto;display:grid}.input-column{flex-direction:column;gap:20px;display:flex}.preview-column{flex-direction:column;display:flex}.drop-panel{border:1px dashed var(--border-focus);background:var(--bg-surface);text-align:center;min-height:260px;box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;transition:all .2s;display:flex;position:relative;overflow:hidden}.drop-panel.dragging{border-color:var(--accent-blue);background:#0070f30d;transform:scale(1.01)}.drop-icon{background:var(--bg-base);width:56px;height:56px;color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:12px;place-items:center;transition:all .2s;display:grid}.drop-panel:hover .drop-icon{color:var(--text-primary);border-color:var(--border-focus)}.drop-panel strong{color:var(--text-primary);margin-top:8px;font-size:16px;font-weight:600}.drop-panel span,.drop-panel p{color:var(--text-secondary);font-size:13px;line-height:1.5}.audio-input{opacity:0;cursor:pointer;z-index:10;position:absolute;inset:0}.file-row{text-align:left;background:var(--bg-base);border:1px solid var(--border-subtle);border-radius:8px;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:12px;width:100%;padding:8px 12px;display:grid}.file-row strong{white-space:nowrap;text-overflow:ellipsis;color:var(--text-primary);margin-top:0;font-size:13px;font-weight:500;overflow:hidden}.file-row button{z-index:11;width:28px;height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;transition:all .2s;display:grid;position:relative}.file-row button:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.meta-row{flex-wrap:wrap;justify-content:center;gap:8px;width:100%;display:flex}.meta-row span{background:var(--bg-base);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500}.waveform{justify-content:center;align-items:center;gap:2px;width:100%;height:48px;padding-top:12px;display:flex}.waveform i{background:var(--text-muted);opacity:.6;border-radius:999px;flex:1;min-width:2px;max-width:3px;transition:height .2s,background-color .2s}.primary-action{background:var(--accent-primary);width:100%;height:48px;color:var(--accent-primary-text);cursor:pointer;box-shadow:var(--shadow-sm);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:600;transition:all .2s;display:inline-flex}.primary-action:hover:not(:disabled){background:var(--accent-primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.primary-action:active:not(:disabled){transform:translateY(0)}.primary-action:disabled{background:var(--bg-surface);color:var(--text-muted);border:1px solid var(--border-subtle);box-shadow:none;cursor:not-allowed}.progress-block{background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:16px;padding:20px}.progress-label{color:var(--text-primary);justify-content:space-between;margin-bottom:12px;font-size:13px;font-weight:600;display:flex}.progress-track{background:var(--progress-track);border-radius:999px;height:6px;margin:0 0 12px;overflow:hidden}.progress-track div{border-radius:inherit;background:var(--progress-fill);height:100%;transition:width .3s}.progress-block p{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.5}.wasm-notice{background:var(--bg-base);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:8px;margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.6}.preview-frame{background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);border-radius:16px;flex-direction:column;height:auto;display:flex;overflow:hidden}.preview-frame video,.preview-empty{aspect-ratio:16/9;object-fit:contain;background:#000;width:100%;display:block}.preview-empty{color:var(--text-muted);background:var(--bg-base);place-items:center;display:grid;position:relative}.preview-empty div{aspect-ratio:16/9;border:1px dashed var(--border-focus);background:var(--bg-surface);border-radius:8px;width:min(30vw,320px);position:absolute}.preview-empty span{z-index:1;font-size:14px;font-weight:500;position:relative}.preview-footer{min-height:56px;color:var(--text-secondary);border-top:1px solid var(--border-subtle);background:var(--bg-surface);justify-content:space-between;align-items:center;padding:0 20px;font-size:13px;font-weight:500;display:flex}.download-link{background:var(--bg-base);height:32px;color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:6px;align-items:center;gap:6px;padding:0 12px;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.download-link:not(.disabled):hover{background:var(--bg-surface-hover);border-color:var(--border-focus)}.download-link.disabled{opacity:.5;pointer-events:none;background:0 0}.logs{background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:12px;margin-top:24px;padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.logs summary{cursor:pointer;color:var(--text-primary);outline:none;margin-bottom:12px;font-weight:500}.logs code{white-space:nowrap;text-overflow:ellipsis;color:var(--text-secondary);background:var(--bg-base);border:1px solid var(--border-subtle);border-radius:4px;margin-top:4px;padding:4px 8px;display:block;overflow:hidden}.hidden-input{display:none}.library-prompt,.scan-count{background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-primary);box-shadow:var(--shadow-md);z-index:100;border-radius:999px;padding:10px 20px;font-size:14px;font-weight:500;animation:.3s forwards slideUp;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.library-prompt{cursor:pointer;transition:all .2s}.library-prompt:hover{background:var(--bg-surface-hover);border-color:var(--border-focus);box-shadow:var(--shadow-lg)}.config-card{border:1px solid var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;gap:16px;padding:20px;display:flex}.config-card label{color:var(--text-primary);gap:6px;font-size:13px;font-weight:500;display:grid}.config-card select,.config-card input[type=range]{width:100%}.config-card select{border:1px solid var(--border-subtle);background:var(--bg-base);height:38px;color:var(--text-primary);appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 10px center;background-repeat:no-repeat;background-size:14px;border-radius:8px;padding:0 10px;font-size:13px;transition:all .2s}.config-card select:focus{border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--accent-primary)}.config-card input[type=range]{-webkit-appearance:none;background:var(--border-subtle);border-radius:2px;outline:none;height:4px;margin-top:4px}.config-card input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--bg-surface);border:2px solid var(--accent-primary);cursor:pointer;border-radius:50%;width:14px;height:14px;transition:transform .1s}.config-card input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.1)}@media (width<=900px){.workspace{grid-template-columns:1fr;gap:20px}.topbar{padding:0}}@media (width<=600px){.app-shell{padding:16px 12px}.topbar{flex-wrap:wrap;gap:12px;height:auto;margin-bottom:24px;display:flex}.brand{text-align:center;white-space:normal;width:100%;margin-bottom:4px;font-size:18px;line-height:1.2}.library-status{flex:1;justify-content:center}.icon-button{flex:0 0 36px}.drop-panel{min-height:200px;padding:16px}.drop-icon{width:48px;height:48px}.drop-panel strong{font-size:15px}.primary-action{height:44px;font-size:14px}.preview-footer{text-align:center;flex-direction:column;align-items:center;gap:12px;height:auto;padding:12px 16px}.download-link{justify-content:center;width:100%;height:40px}}.device-info-block{background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);border-radius:12px;margin-top:12px;padding:12px}.device-info-block details summary{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;font-size:13px;font-weight:600}.device-info-block details summary:hover{color:var(--text-primary)}.device-info-grid{border-top:1px dashed var(--border-subtle);flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;font-size:12px;line-height:1.4;display:flex}.device-info-grid div{justify-content:space-between;gap:12px;display:flex}.device-info-grid span{color:var(--text-secondary)}.device-info-grid strong{color:var(--text-primary);text-align:right;word-break:break-all;font-weight:500}.timeline-card{background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:16px;flex-direction:column;gap:16px;margin-top:24px;padding:20px;display:flex}.timeline-header{flex-direction:column;gap:4px;display:flex}.timeline-header h3{color:var(--text-primary);margin:0;font-size:16px;font-weight:600}.timeline-hint{color:var(--text-secondary);font-size:12px;line-height:1.4}.timeline-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px;max-height:480px;padding-right:4px;display:grid;overflow-y:auto}.timeline-item{background:var(--bg-base);border:1px solid var(--border-subtle);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:12px;flex-direction:column;height:146px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden}.timeline-item:hover{border-color:var(--border-focus);box-shadow:var(--shadow-sm);background:var(--bg-surface-hover);transform:translateY(-2px)}.timeline-item:active{cursor:grabbing}.timeline-item.dragging{opacity:.3;border:2px dashed var(--accent-blue);background:#0070f30d;transform:scale(.95)}.item-thumbnail{background:#000;flex-shrink:0;width:100%;height:82px;position:relative;overflow:hidden}.thumbnail-video{object-fit:cover;width:100%;height:100%;display:block}.thumbnail-placeholder{background:var(--bg-surface-hover);width:100%;height:100%}.item-index{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#000000a6;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600;position:absolute;top:6px;left:6px}.item-delete{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#000000a6;border:none;border-radius:4px;place-items:center;width:20px;height:20px;transition:all .2s;display:grid;position:absolute;top:6px;right:6px}.item-delete:hover{color:#fff;background:#ff4d4f;transform:scale(1.1)}.item-info{flex-direction:column;flex:1;justify-content:center;gap:2px;min-height:0;padding:6px 8px;display:flex}.item-name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:500;overflow:hidden}.item-meta{color:var(--text-secondary);justify-content:space-between;font-size:10px;display:flex}.item-controls{border-top:1px solid var(--border-subtle);flex-shrink:0;grid-template-columns:1fr 1fr;height:28px;display:grid}.item-controls button{height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:flex}.item-controls button:first-child{border-right:1px solid var(--border-subtle)}.item-controls button:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--text-primary)}.item-controls button:disabled{opacity:.25;cursor:not-allowed}.timeline-tabs{border-bottom:1px solid var(--border-subtle);gap:8px;margin-bottom:16px;padding-bottom:12px;display:flex}.timeline-tab-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-size:14px;font-weight:600;transition:all .2s;display:inline-flex}.timeline-tab-btn:hover{color:var(--text-primary);background:var(--bg-surface-hover)}.timeline-tab-btn.active{background:var(--bg-base);color:var(--text-primary);box-shadow:var(--shadow-sm);border:1px solid var(--border-subtle)}.pool-toolbar{background:var(--bg-base);border:1px solid var(--border-subtle);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px;display:flex}.pool-search-input{background:var(--bg-surface);border:1px solid var(--border-subtle);min-width:180px;height:32px;color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:0 10px;font-size:13px;transition:all .2s}.pool-search-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--accent-primary)}.pool-actions{flex-wrap:wrap;gap:6px;display:flex}.pool-btn{background:var(--bg-surface);border:1px solid var(--border-subtle);height:32px;color:var(--text-secondary);cursor:pointer;border-radius:6px;padding:0 10px;font-size:12px;font-weight:500;transition:all .2s}.pool-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-focus)}.timeline-item.pool-item{cursor:pointer;-webkit-user-select:none;user-select:none}.timeline-item.pool-item.unselected{opacity:.45;filter:grayscale(60%)}.timeline-item.pool-item.selected{border-color:var(--accent-primary);box-shadow:0 0 0 1.5px var(--accent-primary);background:rgba(var(--accent-primary), .02)}.select-badge{color:#fff;z-index:2;background:#000000a6;border:1.5px solid #fff;border-radius:50%;place-items:center;width:18px;height:18px;transition:all .2s;display:grid;position:absolute;top:6px;right:6px}.timeline-item.selected .select-badge{background:#22c55e;border-color:#22c55e}.timeline-item .item-controls{grid-template-columns:repeat(4,1fr);height:28px}.timeline-item .item-controls button{height:28px;border-right:1px solid var(--border-subtle)!important}.timeline-item .item-controls button:last-child{border-right:none!important}
