.controls{background:#fff;border-top:1px solid #f0eeec;padding:0 20px 16px;-webkit-user-select:none;user-select:none}.progress-track{height:3px;background:#f0eeec;border-radius:2px;margin-bottom:12px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#ea580c,#f97316);border-radius:2px;transition:width .2s ease}.selectors-row{display:flex;gap:8px;margin-bottom:10px}.selector{flex:1;font-size:12px;font-weight:500;padding:6px 24px 6px 10px;border-radius:8px;border:1px solid #e7e5e4;background:#fafaf9;color:#44403c;cursor:pointer;font-family:inherit;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2378716c'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.selector:hover{border-color:#d6d3d1}.selector:focus{outline:none;border-color:#ea580c;box-shadow:0 0 0 2px #ea580c1a}.controls-row{display:flex;align-items:center;justify-content:space-between}.counter{font-size:13px;font-weight:600;color:#78716c;min-width:70px;font-variant-numeric:tabular-nums;font-family:SF Mono,Fira Code,monospace}.counter-sep{color:#d6d3d1;margin:0 1px}.transport{display:flex;align-items:center;gap:8px}.transport-btn{width:36px;height:36px;border-radius:50%;border:none;background:transparent;color:#78716c;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.transport-btn:hover{background:#f5f5f4;color:#1c1917}.transport-btn:disabled{opacity:.3;cursor:default}.transport-btn:disabled:hover{background:transparent}.play-btn{width:48px;height:48px;border-radius:50%;border:none;background:#1c1917;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease;box-shadow:0 2px 8px #1c191733}.play-btn:hover{background:#292524;transform:scale(1.05);box-shadow:0 4px 12px #1c19174d}.play-btn:active{transform:scale(.97)}.speed-chips{display:flex;gap:4px}.speed-chip{font-size:11px;font-weight:600;padding:4px 10px;border-radius:14px;cursor:pointer;border:1px solid #e7e5e4;background:#fff;color:#a8a29e;transition:all .15s ease;font-family:inherit}.speed-chip:hover{border-color:#d6d3d1;color:#78716c}.speed-chip.active{background:#1c1917;color:#fff;border-color:#1c1917}@keyframes string-pluck-1{0%{transform:translateY(0)}25%{transform:translateY(-2.4px)}50%{transform:translateY(1.6px)}75%{transform:translateY(-.8px)}to{transform:translateY(0)}}@keyframes string-pluck-thick{0%{transform:translateY(0)}25%{transform:translateY(-3.4px)}50%{transform:translateY(2.4px)}75%{transform:translateY(-1.2px)}to{transform:translateY(0)}}.gibson-string{transform-origin:center;transform-box:fill-box;pointer-events:none}.gibson-string.is-plucking-thin{animation:string-pluck-1 .18s ease-out}.gibson-string.is-plucking-thick{animation:string-pluck-thick .22s ease-out}@keyframes fret-flash{0%{opacity:0;transform:scale(.7)}18%{opacity:1;transform:scale(1.05)}to{opacity:0;transform:scale(1.2)}}.fret-flash-circle{transform-origin:center;transform-box:fill-box;animation:fret-flash .32s ease-out forwards}@keyframes hint-pulse{0%{opacity:.55;transform:scale(1)}50%{opacity:.95;transform:scale(1.12)}to{opacity:.55;transform:scale(1)}}.hint-ring{transform-origin:center;transform-box:fill-box;animation:hint-pulse 1.2s ease-in-out infinite}@keyframes match-pulse{0%{opacity:.4;transform:scale(.95)}50%{opacity:.95;transform:scale(1.15)}to{opacity:.4;transform:scale(.95)}}.match-ring{transform-origin:center;transform-box:fill-box;animation:match-pulse 1.4s ease-in-out infinite}@keyframes mic-blink{0%,to{opacity:1}50%{opacity:.3}}.fretboard-cell{cursor:pointer;transition:filter .12s ease}.fretboard-cell:hover .cell-hover-glow{opacity:1}.cell-hover-glow{opacity:0;transition:opacity .12s ease;pointer-events:none}.note-pill{pointer-events:none;-webkit-user-select:none;user-select:none}.tuner-peg{cursor:pointer;transition:transform .2s ease}.tuner-peg:hover{transform:rotate(-12deg);transform-origin:center;transform-box:fill-box}@keyframes open-string-glow{0%{opacity:0}30%{opacity:1}to{opacity:0}}.open-string-flash{animation:open-string-glow .5s ease-out forwards;pointer-events:none}
