@import"https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap";:root{--black: #000000;--white: #ffffff;--gray-50: #0a0a0a;--gray-100: #111111;--gray-200: #1a1a1a;--gray-300: #333333;--gray-400: #4a4a4a;--gray-500: #666666;--gray-600: #888888;--gray-700: #aaaaaa;--gray-800: #d4d4d4;--gray-900: #e5e5e5;--text-primary: #f0f0f0;--text-secondary: #999999;--text-muted: #666666;--accent: #ff3b30;--accent-dim: #cc2f26;--bg-primary: #000000;--bg-secondary: #0d0d0d;--bg-elevated: #151515;--bg-hover: #1a1a1a;--border: #333333;--border-hover: #4a4a4a;--font-mono: "Space Mono", "SF Mono", "Monaco", "Inconsolata", monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .4s ease-out}:root.light{--text-primary: #1a1a1a;--text-secondary: #666666;--text-muted: #999999;--bg-primary: #ffffff;--bg-secondary: #f5f5f5;--bg-elevated: #eeeeee;--bg-hover: #e8e8e8;--border: #d4d4d4;--border-hover: #aaaaaa;--gray-300: #d4d4d4;--gray-400: #aaaaaa;--gray-500: #888888;--gray-600: #666666;--gray-700: #444444;--gray-800: #222222}.theme-toggle{position:fixed;top:1.5rem;right:1.5rem;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:2px solid var(--border);border-radius:50%;cursor:pointer;transition:all var(--transition-fast);z-index:1000;color:var(--text-secondary)}.theme-toggle:hover{border-color:var(--text-primary);color:var(--text-primary);background:var(--bg-hover)}.theme-toggle .icon-moon{display:none}.theme-toggle .icon-sun{display:block}:root.light .theme-toggle .icon-moon{display:block}:root.light .theme-toggle .icon-sun{display:none}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-mono);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100%;display:flex;flex-direction:column}.screen{display:none;flex-direction:column;min-height:100vh;padding:3rem 2rem}.screen.active{display:flex}header{text-align:center;margin-bottom:3rem}header h1{font-family:var(--font-mono);font-size:.875rem;font-weight:400;letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary)}main{flex:1;max-width:520px;width:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center}main.centered{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2rem}.step-container{display:flex;flex-direction:column;justify-content:center;min-height:60vh}.step{opacity:0;transform:translateY(30px);transition:opacity var(--transition-slow),transform var(--transition-slow);pointer-events:none;position:absolute;width:100%;max-width:520px;visibility:hidden}.step.visible{opacity:1;transform:translateY(0);pointer-events:auto;position:relative;visibility:visible}.step.completed{opacity:0;transform:translateY(-30px);pointer-events:none;position:absolute;visibility:hidden}.step-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.step-number{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;border:2px solid var(--border);border-radius:50%;color:var(--text-secondary);transition:all var(--transition-normal)}.step.visible .step-number{border-color:var(--text-primary);color:var(--text-primary)}.step-title{font-size:1rem;font-weight:400;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);transition:color var(--transition-normal)}.step.visible .step-title{color:var(--text-primary)}.drop-zone{position:relative;border:2px dashed var(--border);border-radius:4px;padding:4rem 2rem;text-align:center;cursor:pointer;transition:all var(--transition-normal);background:transparent}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--text-primary);background:var(--bg-secondary)}.drop-zone.drag-over{border-style:solid}.drop-zone.has-files{padding:2rem;border-style:solid;border-color:var(--border)}.drop-zone-content{pointer-events:none}.drop-icon{color:var(--text-muted);margin-bottom:1.5rem;transition:color var(--transition-fast)}.drop-zone:hover .drop-icon,.drop-zone.drag-over .drop-icon{color:var(--text-primary)}.drop-text{font-size:1.125rem;font-weight:400;letter-spacing:.05em;margin-bottom:.5rem;color:var(--text-primary)}.drop-subtext{font-size:.9375rem;color:var(--text-muted);letter-spacing:.05em}.drop-zone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.file-list{margin-top:1.5rem;border:2px solid var(--border);border-radius:4px;overflow:hidden}.file-list.hidden{display:none}.file-list-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;background:var(--bg-secondary);border-bottom:2px solid var(--border)}.file-list-header span{font-size:.875rem;font-weight:400;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em}.file-list ul{list-style:none;max-height:200px;overflow-y:auto}.file-list ul::-webkit-scrollbar{width:6px}.file-list ul::-webkit-scrollbar-track{background:var(--bg-secondary)}.file-list ul::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.file-list li{display:flex;justify-content:space-between;align-items:center;padding:.875rem 1.25rem;border-bottom:1px solid var(--bg-secondary);font-size:.9375rem}.file-list li:last-child{border-bottom:none}.file-list .file-name{font-size:.9375rem;word-break:break-all;color:var(--text-secondary)}.file-list .file-note{font-size:.875rem;color:var(--text-muted);margin-left:1rem;flex-shrink:0}.file-list .file-note.detected{color:var(--text-primary)}.form-section{margin-bottom:1.5rem}.form-section:last-child{margin-bottom:0}.form-section>label{display:block;font-size:.875rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:.75rem}.form-section input[type=text]{width:100%;padding:1.25rem;font-family:var(--font-mono);font-size:1.125rem;color:var(--text-primary);background:var(--bg-secondary);border:2px solid var(--border);border-radius:4px;outline:none;transition:border-color var(--transition-fast);letter-spacing:.02em}.form-section input[type=text]:focus{border-color:var(--text-primary)}.form-section input[type=text]::placeholder{color:var(--text-muted)}.option-cards{display:flex;gap:1rem}.option-card{flex:1;position:relative;cursor:pointer}.option-card input{position:absolute;opacity:0;pointer-events:none}.option-card-content{display:flex;flex-direction:column;align-items:center;padding:1.75rem 1.25rem;border:2px solid var(--border);border-radius:4px;transition:all var(--transition-fast);background:transparent}.option-card:hover .option-card-content{border-color:var(--border-hover);background:var(--bg-secondary)}.option-card input:checked+.option-card-content{border-color:var(--text-primary);background:var(--bg-elevated)}.option-card-label{font-size:1.0625rem;font-weight:400;color:var(--text-primary);margin-bottom:.375rem;letter-spacing:.02em}.option-card-desc{font-size:.875rem;color:var(--text-muted);letter-spacing:.05em}.option-card input:checked+.option-card-content .option-card-desc{color:var(--text-secondary)}.option-card-badge{position:absolute;top:-8px;right:10px;font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;padding:4px 8px;background:var(--accent);color:var(--white);border-radius:2px}.density-recommendation{font-size:.9375rem;color:var(--text-secondary);margin:0 0 1.25rem;padding:1rem 1.25rem;background:var(--bg-secondary);border-radius:4px;border-left:3px solid var(--accent);line-height:1.5}.preset-name-section{margin-top:0}.preset-name-section input{text-align:center;font-size:1.25rem;padding:1.5rem;background:transparent;border:2px solid var(--border)}.preset-name-section input:focus{border-color:var(--text-secondary)}.primary-button{width:100%;padding:1.25rem 2rem;font-family:var(--font-mono);font-size:.9375rem;font-weight:400;text-transform:uppercase;letter-spacing:.12em;background:var(--text-primary);color:var(--bg-primary);border:none;border-radius:4px;cursor:pointer;transition:all var(--transition-fast)}.primary-button:hover:not(:disabled){background:var(--gray-800)}.primary-button:disabled{background:var(--gray-400);color:var(--gray-600);cursor:not-allowed}.text-button{font-family:var(--font-mono);font-size:.875rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);background:none;border:none;cursor:pointer;transition:color var(--transition-fast);padding:.5rem}.text-button:hover{color:var(--text-primary)}.step-continue{margin-top:2rem;padding:1.25rem 2rem;font-size:.875rem;background:transparent;border:2px solid var(--border);color:var(--text-secondary)}.step-continue:hover:not(:disabled){border-color:var(--text-primary);color:var(--text-primary);background:transparent}.step-continue:disabled{background:transparent;border-color:var(--border);color:var(--text-muted)}.warnings{margin-top:1.5rem;padding:1rem;background:var(--bg-secondary);border-radius:2px;border-left:2px solid var(--text-muted)}.warnings.hidden{display:none}.warnings p{font-size:.75rem;color:var(--text-secondary);margin-bottom:.5rem}.warnings p:last-child{margin-bottom:0}#screen-processing main{gap:2rem}.loader{margin-bottom:.5rem}.loader-dots{display:flex;gap:8px}.loader-dots span{width:8px;height:8px;border-radius:50%;animation:pulse 1.4s ease-in-out infinite}.loader-dots span:nth-child(1){background:#e5e5e5;animation-delay:0s}.loader-dots span:nth-child(2){background:#ccc;animation-delay:.1s}.loader-dots span:nth-child(3){background:#b3b3b3;animation-delay:.2s}.loader-dots span:nth-child(4){background:#999;animation-delay:.3s}.loader-dots span:nth-child(5){background:gray;animation-delay:.4s}.loader-dots span:nth-child(6){background:#666;animation-delay:.5s}.loader-dots span:nth-child(7){background:#4d4d4d;animation-delay:.6s}.loader-dots span:nth-child(8){background:#333;animation-delay:.7s}.loader-dots span:nth-child(9){background:#1a1a1a;animation-delay:.8s}:root.light .loader-dots span:nth-child(1){background:#1a1a1a}:root.light .loader-dots span:nth-child(2){background:#333}:root.light .loader-dots span:nth-child(3){background:#4d4d4d}:root.light .loader-dots span:nth-child(4){background:#666}:root.light .loader-dots span:nth-child(5){background:gray}:root.light .loader-dots span:nth-child(6){background:#999}:root.light .loader-dots span:nth-child(7){background:#b3b3b3}:root.light .loader-dots span:nth-child(8){background:#ccc}:root.light .loader-dots span:nth-child(9){background:#e5e5e5}@keyframes pulse{0%,60%,to{opacity:.15;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}#screen-processing h2{font-size:1.125rem;font-weight:400;letter-spacing:.05em}.status-text{font-size:1rem;color:var(--text-muted);letter-spacing:.05em}#screen-complete.fade-in{opacity:0}#screen-complete.fade-in.visible{opacity:1;transition:opacity .6s ease-out}#screen-complete.fade-in .success-icon,#screen-complete.fade-in h2,#screen-complete.fade-in .primary-button,#screen-complete.fade-in .info-text,#screen-complete.fade-in .instructions,#screen-complete.fade-in .text-button{opacity:0;transform:translateY(20px)}#screen-complete.fade-in.visible .success-icon{opacity:.9;transform:translateY(0);transition:opacity .5s ease-out .1s,transform .5s ease-out .1s}#screen-complete.fade-in.visible h2{opacity:1;transform:translateY(0);transition:opacity .5s ease-out .2s,transform .5s ease-out .2s}#screen-complete.fade-in.visible .primary-button{opacity:1;transform:translateY(0);transition:opacity .5s ease-out .35s,transform .5s ease-out .35s}#screen-complete.fade-in.visible .info-text{opacity:1;transform:translateY(0);transition:opacity .5s ease-out .45s,transform .5s ease-out .45s}#screen-complete.fade-in.visible .instructions{opacity:1;transform:translateY(0);transition:opacity .5s ease-out .55s,transform .5s ease-out .55s}#screen-complete.fade-in.visible .text-button{opacity:1;transform:translateY(0);transition:opacity .5s ease-out .7s,transform .5s ease-out .7s}.success-icon{color:var(--text-primary);opacity:.9}#screen-complete h2{font-size:1.25rem;font-weight:400;letter-spacing:.02em}.info-text{font-size:.875rem;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase}.instructions{width:100%;max-width:400px;margin-top:1.5rem;padding:1.75rem;background:var(--bg-secondary);border-radius:4px;text-align:left;border:2px solid var(--border)}.instructions h3{font-size:.8125rem;font-weight:400;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);margin-bottom:1.25rem}.instructions ol{padding-left:1.5rem}.instructions li{font-size:1rem;margin-bottom:.75rem;color:var(--text-secondary);line-height:1.5}.instructions li:last-child{margin-bottom:0}.instructions code{font-size:.875rem;background:var(--bg-elevated);color:var(--text-primary);padding:.25rem .625rem;border-radius:3px;border:1px solid var(--border)}#screen-assign header{text-align:center;margin-bottom:2rem}#screen-assign main{max-width:600px}.keyboard-section{margin-bottom:2rem;padding:1.5rem;background:var(--bg-secondary);border-radius:2px;border:1px solid var(--border)}.keyboard-controls{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.25rem}.octave-btn{width:36px;height:36px;font-family:var(--font-mono);font-size:1.25rem;font-weight:400;background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border);border-radius:2px;cursor:pointer;transition:all var(--transition-fast)}.octave-btn:hover{background:var(--bg-hover);border-color:var(--text-primary);color:var(--text-primary)}#current-octave{font-size:.75rem;font-weight:400;min-width:40px;text-align:center;color:var(--text-secondary);letter-spacing:.05em}.keyboard{position:relative;height:120px;margin:0 auto;width:238px}.key{position:absolute;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;font-size:.5625rem;letter-spacing:.02em;-webkit-user-select:none;user-select:none}.key.white{width:34px;height:120px;background:#d4d4d4;color:#333;border:1px solid var(--border);border-radius:0 0 2px 2px;top:0}.key.black{width:24px;height:75px;background:#1a1a1a;color:#888;border:1px solid #333333;border-radius:0 0 2px 2px;z-index:2;top:0;padding-bottom:6px}.key.white:hover{background:#c4c4c4}.key.black:hover{background:#333}.key.white:active,.key.white.active{background:#aaa}.key.black:active,.key.black.active{background:#444}:root.light .key.white{background:#fff;color:#666;border-color:#ccc}:root.light .key.black{background:#1a1a1a;color:#888;border-color:#000}:root.light .key.white:hover{background:#f0f0f0}:root.light .key.black:hover{background:#333}:root.light .key.white:active,:root.light .key.white.active{background:#e0e0e0}:root.light .key.black:active,:root.light .key.black.active{background:#444}.played-note-display{text-align:center;font-size:1.25rem;font-weight:400;margin-top:1.25rem;min-height:1.75rem;color:var(--text-primary);letter-spacing:.05em}.assign-section{margin-bottom:1.5rem}.assign-section h3{font-size:.625rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:1rem}.unassigned-list{display:flex;flex-direction:column;gap:.5rem;max-height:280px;overflow-y:auto}.unassigned-list::-webkit-scrollbar{width:4px}.unassigned-list::-webkit-scrollbar-track{background:var(--bg-secondary)}.unassigned-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.unassigned-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:2px}.unassigned-item .play-btn{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--text-primary);color:var(--bg-primary);border:none;border-radius:50%;cursor:pointer;transition:all var(--transition-fast)}.unassigned-item .play-btn:hover{background:var(--gray-700);transform:scale(1.05)}.unassigned-item .play-btn:active{transform:scale(.95)}.unassigned-item .sample-name{flex:1;font-size:.6875rem;word-break:break-all;min-width:0;color:var(--text-secondary)}.unassigned-item .note-input{width:56px;padding:.5rem;font-family:var(--font-mono);font-size:.8125rem;text-align:center;text-transform:uppercase;color:var(--text-primary);background:var(--bg-elevated);border:1px solid var(--border);border-radius:2px;outline:none;flex-shrink:0}.unassigned-item .note-input:focus{border-color:var(--text-primary)}.unassigned-item .note-input.error{border-color:var(--accent);background:#ff3b301a}.unassigned-item .assign-btn{padding:.5rem .75rem;font-family:var(--font-mono);font-size:.625rem;font-weight:400;text-transform:uppercase;letter-spacing:.05em;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:2px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.unassigned-item .assign-btn:hover{background:var(--text-primary);color:var(--bg-primary);border-color:var(--text-primary)}.unassigned-item .remove-btn{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--text-muted);border:none;border-radius:2px;cursor:pointer;transition:all var(--transition-fast);opacity:.5}.unassigned-item .remove-btn:hover{color:var(--accent);opacity:1}.unassigned-item .remove-btn:active{transform:scale(.9)}.no-unassigned{text-align:center;padding:2rem;color:var(--text-muted);font-size:.75rem}.grouping-info{font-size:1rem;color:var(--text-secondary);margin-bottom:1.5rem;line-height:1.5}.grouping-info span{color:var(--text-primary);font-weight:400}.group-preview{display:flex;gap:.75rem;margin-bottom:2rem;flex-wrap:wrap}.group-card{flex:1;min-width:100px;padding:1.25rem 1rem;background:var(--bg-secondary);border:2px solid var(--border);border-radius:4px;text-align:center;transition:all var(--transition-fast)}.group-card:hover{border-color:var(--border-hover);background:var(--bg-elevated)}.group-card-name{display:block;font-size:1.0625rem;font-weight:400;color:var(--text-primary);margin-bottom:.375rem;letter-spacing:.02em}.group-card-count{display:block;font-size:.875rem;color:var(--text-muted);letter-spacing:.05em}.grouping-actions{display:flex;flex-direction:column;gap:1rem}.grouping-actions .primary-button{background:transparent;border:2px solid var(--border);color:var(--text-secondary)}.grouping-actions .primary-button:hover:not(:disabled){border-color:var(--text-primary);color:var(--text-primary);background:transparent}.grouping-actions .text-button{text-align:center}.hidden{display:none!important}@media (max-width: 520px){.screen{padding:2rem 1.5rem}.drop-zone{padding:3rem 1.5rem}.option-cards{flex-direction:column}.option-card-badge{top:50%;transform:translateY(-50%)}.keyboard-section{padding:1rem}.keyboard{transform:scale(.9);transform-origin:center}}
