1import{K as e,u as a,x as t,a as n,o as r,c as o,b as s,t as i,d,F as l,r as c,n as u,e as b,i as p,w as m,p as h,h as f,v as g,m as v,l as y,b5 as k,L as x,a4 as C}from"./sk-vue.BcAGqpPP.js";import{u as z}from"./useRealtimeChordDetection.B84KhuVT.js";import{a as w,b as D,D as q}from"./index.0bwconjg.js";import{f as S}from"./fretboard-2200-v2.DeHAPkeV.js";import{_ as A}from"./fretboard-elements.css_vue_type_style_index_0_src_true_inline_lang.B7D8cmrl.js";import"./useMicCapture.m6-iHgWi.js";import"./soundPreference.Blft6w-I.js";import"./micDeviceSelection.blSlew7t.js";import"./index.Bt43VEn5.js";import"./shapeKind.FnwSiC_a.js";const I=[{name:"Pop (C)",chords:["C","G","Am","F","C","G","Am","F"]},{name:"Pop (G)",chords:["G","D","Em","C","G","D","Em","C"]},{name:"Blues (A)",chords:["A","A","D","D","A","A","E","D"]},{name:"50s (C)",chords:["C","Am","F","G","C","Am","F","G"]},{name:"Minor (Am)",chords:["Am","F","C","G","Am","F","C","G"]},{name:"Folk (D)",chords:["D","A","G","D","D","A","G","D"]},{name:"Rock (E)",chords:["E","A","D","A","E","A","D","A"]},{name:"Ballad (G)",chords:["G","Em","C","D","G","Em","C","D"]},{name:"Jazz (C)",chords:["Cmaj7","Am7","Dm7","G7","Cmaj7","Am7","Dm7","G7"],use7ths:!0},{name:"Jazz (G)",chords:["Gmaj7","Em7","Am7","D7","Gmaj7","Em7","Am7","D7"],use7ths:!0}];function N(){const n=a(!1),r=a(!1),o=a(0),s=a(-1),i=a([]),d=a(""),l=a(!1),c=a([]);let u=0,b=null;const p=t(()=>{if(n.value&&r.value)return"count-in";if(n.value&&!r.value)return"playing";return c.value.some(e=>null!==e.hit)?"results":"idle"}),m=t(()=>{const e=c.value.length;return{hit:c.value.filter(e=>!0===e.hit).length,total:e}});function h(e){if(e>0){const a=c.value[e-1];a&&null===a.hit&&(a.hit=!1)}if(e>=i.value.length){const e=c.value[i.value.length-1];return e&&null===e.hit&&(e.hit=!1),w.stop(),w.cancel(),n.value=!1,r.value=!1,void g()}s.value=e}function f(){u=0,o.value=0,s.value=-1,n.value=!0,r.value=!0,w.bpm.value=70,w.cancel(),g(),b=new D({oscillator:{type:"sine"},envelope:{attack:.001,decay:.05,sustain:0,release:.05}}).toDestination(),w.scheduleRepeat(e=>{!function(e){const a=u;u++;const t=4*i.value.length;if(b&&!(a>=4+t)){const t=a%4==0?"C5":"C4";b.triggerAttackRelease(t,"16n",e)}q.schedule(()=>{const e=a%4;if(o.value=e,a<4);else if(0===e){const e=(a-4)/4;r.value=!1,h(e)}},e)}(e)},"4n"),w.start()}function g(){b&&(b.dispose(),b=null)}function v(){w.stop(),w.cancel(),n.value=!1,r.value=!1,s.value=-1,o.value=0,u=0,i.value=[],d.value="",c.value=[],g()}return e(()=>{n.value&&v(),g()}),{isPlaying:n,isCountingIn:r,currentBeat:o,currentChordIndex:s,progression:i,progressionName:d,use7ths:l,results:c,phase:p,score:m,start:function(e){const a=null!=e?e:Math.floor(Math.random()*I.length),t=I[a];i.value=[...t.chords],d.value=t.name,l.value=t.use7ths||!1,c.value=t.chords.map(e=>({chord:e,hit:null})),f()},stop:v,retry:function(){c.value=i.value.map(e=>({chord:e,hit:null})),f()},markChordHit:function(){if("playing"!==p.value)return;const e=s.value;e<0||e>=c.value.length||null===c.value[e].hit&&(c.value[e].hit=!0)},_advanceToChord:h,_progressions:I}}const F=[{name:"low-e",openNote:28,index:0},{name:"a",openNote:33,index:1},{name:"d",openNote:38,index:2},{name:"g",openNote:43,index:3},{name:"b",openNote:47,index:4},{name:"high-e",openNote:52,index:5}],j={class:"chord-fretboard-container"},Q={class:"chord-fretboard-header"},P={key:0,class:"chord-name"},G={key:1,class:"chord-inversion"},T={class:"fretboard"},L={class:"fretboard-image-wrapper"},E=["src"],M={key:0,class:"detected-notes-list"};const B={class:"realtime-test"},H={key:0,class:"quiz-section"},R={class:"quiz-prompt"},_={key:0,class:"checkmark"},U={class:"quiz-progress"},V={class:"quiz-dots"},O={key:0,class:"target-match-info"},J={key:1,class:"quiz-start"},$={key:2,class:"prog-quiz-section"},K={key:0,class:"prog-quiz-start"},W=["value"],X={key:1,class:"prog-quiz-countin"},Y={class:"countin-number"},Z={key:2,class:"prog-quiz-chart"},ee={class:"prog-quiz-name"},ae={class:"chord-chart"},te={class:"chord-chart-row"},ne={class:"chord-box-name"},re={key:0,class:"chord-box-icon"},oe={key:1,class:"chord-box-icon miss"},se={key:2,class:"chord-box-score"},ie={class:"chord-chart-row"},de={class:"chord-box-name"},le={key:0,class:"chord-box-icon"},ce={key:1,class:"chord-box-icon miss"},ue={key:2,class:"chord-box-score"},be={key:0,class:"beat-dots"},pe={key:3,class:"prog-quiz-results"},me={class:"results-score"},he={class:"chord-chart"},fe={class:"chord-chart-row"},ge={class:"chord-box-name"},ve={key:0,class:"chord-box-icon"},ye={key:1,class:"chord-box-icon miss"},ke={key:2,class:"chord-box-score"},xe={class:"chord-chart-row"},Ce={class:"chord-box-name"},ze={key:0,class:"chord-box-icon"},we={key:1,class:"chord-box-icon miss"},De={key:2,class:"chord-box-score"},qe={class:"results-buttons"},Se={class:"test-layout"},Ae={class:"controls-section"},Ie={key:0,class:"status initializing"},Ne={key:3,class:"listening-indicator"},Fe={class:"detection-display"},je={key:0,class:"empty-state"},Qe={key:1,class:"chord-result"},Pe={key:0},Ge={key:1,class:"no-chord"},Te={class:"inversion"},Le={class:"notes-display"},Ee={class:"freq"},Me={key:0,class:"no-notes"},Be={class:"confidence-row"},He={class:"confidence-section"},Re={class:"confidence-bar"},_e={class:"confidence-value"},Ue={class:"confirmed-badge"},Ve={class:"fretboard-display-section"},Oe={class:"history-section"},Je={class:"history-header"},$e={key:0,class:"history-empty"},Ke={key:1,class:"history-list"},We={class:"history-chord"},Xe={key:0,class:"history-notes"},Ye={key:1,class:"history-inversion"},Ze={class:"history-time"},ea={key:0,class:"capture-section"}
1,aa={key:0,class:"capture-controls"},ta=["disabled"],na={key:1,class:"capture-active"},ra={key:2,class:"capture-results"},oa={class:"summary-header"},sa={class:"expected"},ia={class:"detected"},da={class:"result-icon"},la={class:"summary-stats"},ca={class:"capture-notes"},ua={class:"note-breakdown"},ba={class:"note-label"},pa={class:"note-bar-container"},ma={class:"note-pct"},ha={class:"note-details"},fa={key:0,class:"capture-filtered"},ga={class:"filtered-list"},va={key:1,class:"capture-filtered"},ya={class:"filtered-list"},ka={key:2,class:"capture-filtered"},xa={class:"filtered-list"},Ca={class:"capture-chords"},za={class:"chord-counts"},wa={key:0,class:"chord-count-item unknown"},Da={key:1,class:"chord-count-item no-chord"},qa={class:"ranking-section"},Sa={class:"ranking-list"},Aa={class:"ranking-note"},Ia={class:"note-name"},Na={class:"note-freq"},Fa={class:"ranking-bar-container"},ja={class:"ranking-stats"},Qa={class:"top3-pct"},Pa={class:"rank-breakdown"},Ga={class:"settings-section"},Ta={class:"setting"},La={class:"setting"},Ea={class:"setting"},Ma={class:"setting"},Ba={class:"setting setting-checkbox"},Ha={class:"setting setting-checkbox"},Ra={class:"debug-section"};const _a=n({name:"RealtimeChordTest",components:{ChordFretboardDisplay:n({name:"ChordFretboardDisplay",props:{notes:{type:Array,default:()=>[]},chordName:{type:String,default:""},inversion:{type:String,default:""}},data:()=>({fretboardImage:S}),computed:{displayNotes(){if(0===this.notes.length)return[];const e=this.findChordVoicing(this.notes);return e||this.notes.map(e=>{const a=this.getAllPositionsForNote(e);return a.length>0?a[0]:null}).filter(e=>null!==e)},bassNoteName(){if(0===this.notes.length)return null;let e=null,a=1/0;for(const t of this.notes){const n=this.noteToPitch(t);null!==n&&n<a&&(a=n,e=t)}return e}},methods:{getNoteClass:e=>({"fretboard-note":!0,"fretboard-note--neutral":!e.isBass,"fretboard-note--root":e.isBass,[`fretboard-note--string--${e.string}`]:!0,[`fretboard-note--fret--${e.fret}`]:!0}),noteToPitch(e){const a=e.match(/^([A-G]#?)(\d+)$/);if(!a)return null;const t=a[1];return 12*parseInt(a[2])+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},isBassNote(e){return e===this.bassNoteName},getAllPositionsForNote(e){const a=this.noteToPitch(e);if(null===a)return[];const t=[];for(const n of F){const r=a-n.openNote;r>=0&&r<=12&&t.push({string:n.name,stringIndex:n.index,fret:r,displayName:e.replace(/\d+$/,""),noteName:e,isBass:e===this.bassNoteName})}return t.sort((e,a)=>e.fret-a.fret)},findChordVoicing(e){if(0===e.length)return null;const a=[...e].sort((e,a)=>this.noteToPitch(e)-this.noteToPitch(a)),t=a[0],n=a.slice(1),r=this.getAllPositionsForNote(t),o=n.map(e=>this.getAllPositionsForNote(e)),s=e.length<=3?3:4;for(const i of r){if(i.stringIndex>3)continue;const e=this.backtrackVoicing(o,0,new Set([i.stringIndex]),[i],i.fret,i.fret,s,i.stringIndex);if(e)return e}return null},backtrackVoicing(e,a,t,n,r,o,s,i){if(a===e.length)return n;const d=e[a];for(const l of d){if(t.has(l.stringIndex))continue;if(l.stringIndex<=i)continue;const d=Math.min(r,l.fret),c=Math.max(o,l.fret);if(c-d>s)continue;t.add(l.stringIndex);const u=this.backtrackVoicing(e,a+1,t,[...n,l],d,c,s,i);if(u)return u;t.delete(l.stringIndex)}return null}}},[["render",function(e,a,t,n,b,p){return r(),o("div",j,[s("div",Q,[t.chordName?(r(),o("div",P,i(t.chordName),1)):d("",!0),t.inversion?(r(),o("div",G,i(t.inversion),1
1)):d("",!0)]),s("div",T,[s("div",L,[s("img",{src:b.fretboardImage,alt:"fretboard",class:"fretboard-image"},null,8,E),(r(!0),o(l,null,c(p.displayNotes,(e,a)=>(r(),o("div",{key:a,class:u(p.getNoteClass(e))},i(e.displayName),3))),128))])]),t.notes.length>0?(r(),o("div",M,[(r(!0),o(l,null,c(t.notes,(e,a)=>(r(),o("span",{key:a,class:u(["detected-note",{"is-bass":p.isBassNote(e)}])},i(e),3))),128))])):d("",!0)])}],["styles",[A,".chord-fretboard-container[data-v-664e7d67]{display:flex;flex-direction:column;align-items:center;gap:.5rem}.chord-fretboard-header[data-v-664e7d67]{display:flex;align-items:baseline;gap:.75rem;justify-content:center}.chord-name[data-v-664e7d67]{font-size:2rem;font-weight:700;color:#2c3e50}.chord-inversion[data-v-664e7d67]{font-size:.9rem;color:#6c757d;font-style:italic}.fretboard-note.fretboard-note--root[data-v-664e7d67]{background-color:#e74c3c;opacity:1}.detected-notes-list[data-v-664e7d67]{display:flex;justify-content:center;gap:.5rem;margin-top:.5rem}.detected-note[data-v-664e7d67]{padding:.25rem .5rem;background:#e9ecef;border-radius:4px;font-size:.85rem;font-weight:500;font-family:monospace}.detected-note.is-bass[data-v-664e7d67]{background:#e74c3c;color:#fff}"]],["__scopeId","data-v-664e7d67"]])},setup(){const e=C({updateInterval:100,fftSize:8192,smoothing:.3,confirmationThreshold:2.5}),n=a(null),r=a([]),o=a({});let s=0;const i=t(()=>{const e=o.value,a=r.value.length||1;return Object.entries(e).map(([e,t])=>({note:e,freq:t.freq,appearances:t.appearances,percentage:Math.round(t.appearances/a*100),rank1:t.rank1,rank2:t.rank2,rank3:t.rank3,avgRank:(t.totalRank/t.appearances).toFixed(1),inTop3:t.rank1+t.rank2+t.rank3,top3Pct:Math.round((t.rank1+t.rank2+t.rank3)/a*100)})).sort((e,a)=>a.top3Pct-e.top3Pct).slice(0,8)}),d=a(!1),l=a(0),c=a(!1),u=a([]),b={Db:"C#",Eb:"D#",Fb:"E",Gb:"F#",Ab:"G#",Bb:"A#",Cb:"B"};function p(e){const a=e.match(/^([A-G][b#]?)(.*)/);if(!a)return e;const t=a[1],n=a[2];return(b[t]||t)+n}function m(){d.value=!1,l.value=0,c.value=!1,Q()}const h=a(""),{isListening:f,isInitializing:g,currentChord:v,detectedNotes:y,confidence:k,confirmedChord:w,chordScores:D,confirmedChordHistory:q,detect7thChords:S,isCapturing:A,captureData:I,targetMatchInfo:F,setTargetChord:j,clearTargetChord:Q,openChordQuizFilter:P,startListening:G,stopListening:T,clearHistory:L,startCapture:E,stopCapture:M}=z({fftSize:e.fftSize,smoothingTimeConstant:e.smoothing,updateInterval:e.updateInterval,emaDecay:.7,confirmationThreshold:e.confirmationThreshold,onChordDetected:e=>{if(n.value=e,e&&e.notes&&function(e){if(!e||0===e.length)return;const a=Date.now(),t={timestamp:a,notes:e.slice(0,6).map((e,a)=>({note:e.note,freq:e.frequency,rank:a+1}))};if(r.value.push(t),r.value=r.value.filter(e=>a-e.timestamp<2e3),a-s<1e3)return;s=a;const n={};for(const o of r.value)for(const e of o.notes)n[e.note]||(n[e.note]={appearances:0,rank1:0,rank2:0,rank3:0,totalRank:0,freq:e.freq}),n[e.note].appearances++,n[e.note].totalRank+=e.rank,1===e.rank?n[e.note].rank1++:2===e.rank?n[e.note].rank2++:3===e.rank&&n[e.note].rank3++;o.value=n}(e.notes),"playing"===B.phase.value){const e=B.currentChordIndex.value;if(e>=0&&e<B.results.value.length){const a=p(B.progression.value[e]),t=D.value[a]||0,n=B.results.value[e];(!n.peakScore||t>n.peakScore)&&(n.peakScore=Math.round(10*t)/10)}}},onChordConfirmed:e=>{if(function(e){if(!d.value||c.value)return;const a=p(u.value[l.value]);p(e)===a&&(c.value=!0,setTimeout(()=>{l.value<u.value.length-1?(l.value++,c.value=!1,j(u.value[l.value])):(m(),alert("Quiz complete! Great job!"))},1e3))}(e.chord),"playing"===B.phase.value){const a=B.currentChordIndex.value;if(a>=0&&a<B.progression.value.length){const t=p(B.progression.value[a]);e.chord===t&&B.markChordHit()}}},onError:e=>{alert(`Error: ${e.message}`)}}),B=N(),H=a(null);let R=!1;x(()=>B.isPlaying.value,e=>{e?(R=S.value,S.value=B.use7ths.value,P.value=!0):(S.value=R,P.value=!1,Q())}),x(()=>B.currentChordIndex.value,e=>{e>=0&&e<B.progression.value.length&&j(B.progression.value[e])},{flush:"sync"});const _=t(()=>k.value>.5?"high":k.value>.3?"medium":"low"),U=t(()=>JSON.stringify({isListening:f.value,notesDetected:y.value.length,currentChord:v.value,confidence:k.value,settings:e},null,2)),V=t(()=>0===q.value.length?null:q.value[q.value.length-1]);return{settings:e,isListening:f,isInitializing:g,currentChord:v,detectedNotes:y,confidence:k,confirmedChord:w,chordScores:D,confirmedChordHistory:q,detect7thChords:S,openChordQuizFilter:P,confidenceClass:_,debugInfo:U,latestConfirmedChord:V,handleStart:async function(){await G()},handleStop:function(){T()},handleClearHistory:function(){L()},restartIfListening:async function(){f.value&&(T(),await new Promise(e=>setTimeout(e,100)),await G())},qualityDisplay:function(e){return{major:"",minor:"m",diminished:"dim",augmented:"aug",maj7:"maj7",7:"7",m7:"m7",mMaj7:"mMaj7",m7b5:"m7b5",dim7:"dim7",unknown:"?"}[e]||""},inversionDisplay:function(e){return{root:"Root position",first:"1st inversion",second:"2nd inversion",third:"3rd inversion",unknown:"Unknown"}[e]||""},shortInversion:function(e){return{root:"Root",first:"1st inv",second:"2nd inv",third:"3rd inv",unknown:""}[e]||""},formatTime:function(e){return new Date(e).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit"})},sortedRankingStats:i,quizActive:d,quizIndex:l,quizSuccess:c,quizChords:u,startQuiz:function(){u.value=function(e=8){const a=["C","D","E","F","G","A","B","Eb","Bb","F#"],t=["","m"],n=[];for(let r=0;r<e;r++){const e=a[Math.floor(Math.random()*a.length)],r=t[Math.floor(Math.random()*t.length)];n.push(e+r)}return n}(8),l.value=0,c.value=!1,d.value=!0,j(u.value[0])},stopQuiz:m,targetMatchInfo:F,progQuiz:B,selectedProgression:H,isCapturing:A,captureData:I,captureChordName:h,handleStartCapture:function(){h.value&&E(h.value,3e3)},handleStopCapture:function(){M()},copyCaptureData:function(){if(I.value){const e=JSON.stringify(I.value,null,2);
1navigator.clipboard.writeText(e).then(()=>{alert("Capture data copied to clipboard!")}).catch(e=>{console.error("Failed to copy:",e)})}}}}},[["render",function(e,a,t,n,x,C){const z=b("ChordFretboardDisplay");return r(),o("div",B,[a[48]||(a[48]=s("h3",null,"Real-time Chord Detection Test",-1)),n.quizActive?(r(),o("div",H,[s("div",R,[a[22]||(a[22]=s("div",{class:"quiz-label"},"Play this chord:",-1)),s("div",{class:u(["quiz-chord",{success:n.quizSuccess}])},[p(i(n.quizChords[n.quizIndex])+" ",1),n.quizSuccess?(r(),o("span",_,"â")):d("",!0)],2)]),s("div",U,[s("span",null,i(n.quizIndex+1)+" / "+i(n.quizChords.length),1),s("div",V,[(r(!0),o(l,null,c(n.quizChords,(e,a)=>(r(),o("span",{key:a,class:u(["quiz-dot",{completed:a<n.quizIndex,current:a===n.quizIndex}])},null,2))),128))])]),n.quizActive&&n.targetMatchInfo?(r(),o("div",O,[(r(!0),o(l,null,c(n.targetMatchInfo.pitchClasses,(e,a)=>(r(),o("span",{key:a,class:u(["pitch-class-dot",{matched:n.targetMatchInfo.detected.includes(["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][e])}])},i(["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][e]),3))),128))])):d("",!0),s("button",{onClick:a[0]||(a[0]=(...e)=>n.stopQuiz&&n.stopQuiz(...e)),class:"btn btn-outline btn-small"},"End Quiz")])):d("",!0),!n.quizActive&&"idle"===n.progQuiz.phase.value&&n.isListening?(r(),o("div",J,[s("button",{onClick:a[1]||(a[1]=(...e)=>n.startQuiz&&n.startQuiz(...e)),class:"btn btn-success"}," Start Quiz ")])):d("",!0),n.quizActive||"idle"===n.progQuiz.phase.value&&!n.isListening?d("",!0):(r(),o("div",$,["idle"!==n.progQuiz.phase.value||n.quizActive?d("",!0):(r(),o("div",K,[m(s("select",{"onUpdate:modelValue":a[2]||(a[2]=e=>n.selectedProgression=e),class:"prog-select"},[a[23]||(a[23]=s("option",{value:null},"Random",-1)),(r(!0),o(l,null,c(n.progQuiz._progressions,(e,a)=>(r(),o("option",{key:a,value:a},i(e.name),9,W))),128))],512),[[h,n.selectedProgression]]),s("button",{onClick:a[3]||(a[3]=e=>n.progQuiz.start(n.selectedProgression)),class:"btn btn-success"}," Start ")])),"count-in"===n.progQuiz.phase.value?(r(),o("div",X,[s("div",Y,i(n.progQuiz.currentBeat.value+1),1),a[24]||(a[24]=s("div",{class:"countin-label"},"Get ready...",-1))])):d("",!0),"playing"===n.progQuiz.phase.value||"count-in"===n.progQuiz.phase.value?(r(),o("div",Z,[s("div",ee,i(n.progQuiz.progressionName.value),1),s("div",ae,[s("div",te,[(r(!0),o(l,null,c(n.progQuiz.results.value.slice(0,4),(e,a)=>(r(),o("div",{key:"row1-"+a,class:u(["chord-box",{current:a===n.progQuiz.currentChordIndex.value,hit:!0===e.hit,missed:!1===e.hit}])},[s("span",ne,i(e.chord),1),!0===e.hit?(r(),o("span",re,"â")):d("",!0),!1===e.hit?(r(),o("span",oe,"â")):d("",!0),null!=e.peakScore?(r(),o("span",se,i(e.peakScore),1)):d("",!0)],2))),128))]),s("div",ie,[(r(!0),o(l,null,c(n.progQuiz.results.value.slice(4,8),(e,a)=>(r(),o("div",{key:"row2-"+a,class:u(["chord-box",{current:a+4===n.progQuiz.currentChordIndex.value,hit:!0===e.hit,missed:!1===e.hit}])},[s("span",de,i(e.chord),1),!0===e.hit?(r(),o("span",le,"â")):d("",!0),!1===e.hit?(r(),o("span",ce,"â")):d("",!0),null!=e.peakScore?(r(),o("span",ue,i(e.peakScore),1)):d("",!0)],2))),128))])]),"playing"===n.progQuiz.phase.value?(r(),o("div",be,[(r(),o(l,null,c(4,e=>s("span",{key:e,class:u(["beat-dot",{active:e-1<=n.progQuiz.currentBeat.value}])},null,2)),64))])):d("",!0),s("button",{onClick:a[4]||(a[4]=e=>n.progQuiz.stop()),class:"btn btn-outline btn-small prog-stop-btn"},"Stop")])):d("",!0),"results"===n.progQuiz.phase.value?(r(),o("div",pe,[
1s("div",me,i(n.progQuiz.score.value.hit)+" / "+i(n.progQuiz.score.value.total),1),s("div",he,[s("div",fe,[(r(!0),o(l,null,c(n.progQuiz.results.value.slice(0,4),(e,a)=>(r(),o("div",{key:"res1-"+a,class:u(["chord-box",{hit:!0===e.hit,missed:!1===e.hit}])},[s("span",ge,i(e.chord),1),!0===e.hit?(r(),o("span",ve,"â")):d("",!0),!1===e.hit?(r(),o("span",ye,"â")):d("",!0),null!=e.peakScore?(r(),o("span",ke,i(e.peakScore),1)):d("",!0)],2))),128))]),s("div",xe,[(r(!0),o(l,null,c(n.progQuiz.results.value.slice(4,8),(e,a)=>(r(),o("div",{key:"res2-"+a,class:u(["chord-box",{hit:!0===e.hit,missed:!1===e.hit}])},[s("span",Ce,i(e.chord),1),!0===e.hit?(r(),o("span",ze,"â")):d("",!0),!1===e.hit?(r(),o("span",we,"â")):d("",!0),null!=e.peakScore?(r(),o("span",De,i(e.peakScore),1)):d("",!0)],2))),128))])]),s("div",qe,[s("button",{onClick:a[5]||(a[5]=e=>n.progQuiz.retry()),class:"btn btn-success"},"Try Again"),s("button",{onClick:a[6]||(a[6]=e=>n.progQuiz.start()),class:"btn btn-outline prog-new-btn"},"New Progression")])])):d("",!0)])),s("div",Se,[s("div",Ae,[n.isInitializing?(r(),o("div",Ie," Activating microphone... ")):d("",!0),n.isListening||n.isInitializing?d("",!0):(r(),o("button",{key:1,onClick:a[7]||(a[7]=(...e)=>n.handleStart&&n.handleStart(...e)),class:"btn btn-primary btn-large"}," Start Listening ")),n.isListening?(r(),o("button",{key:2,onClick:a[8]||(a[8]=(...e)=>n.handleStop&&n.handleStop(...e)),class:"btn btn-danger btn-large"}," Stop ")):d("",!0),n.isListening?(r(),o("div",Ne,[...a[25]||(a[25]=[s("span",{class:"pulse"},null,-1),p(" Listening... ",-1)])])):d("",!0)]),s("div",Fe,[n.isListening||n.currentChord?(r(),o("div",Qe,[s("div",{class:u(["chord-name",{detected:n.currentChord}])},[n.currentChord?(r(),o("span",Pe,i(n.currentChord.root)+i(n.qualityDisplay(n.currentChord.quality)),1)):(r(),o("span",Ge,"â"))],2),s("div",Te,i(n.currentChord?n.inversionDisplay(n.currentChord.inversion):"Â "),1),s("div",Le,[(r(!0),o(l,null,c(n.detectedNotes.slice(0,6),(e,a)=>(r(),o("div",{key:a,class:u(["note-chip",{strong:a<3}])},[p(i(e.note)+" ",1),s("span",Ee,i(e.frequency.toFixed(0))+"Hz",1)],2))),128)),0===n.detectedNotes.length?(r(),o("div",Me," No notes detected ")):d("",!0)]),s("div",Be,[s("div",He,[a[27]||(a[27]=s("label",null,"Confidence",-1)),s("div",Re,[s("div",{class:u(["confidence-fill",n.confidenceClass]),style:f({width:100*n.confidence+"%"})},null,6)]),s("span",_e,i((100*n.confidence).toFixed(0))+"%",1)]),m(s("span",Ue,[n.confirmedChord?(r(),o(l,{key:0},[p(i(n.confirmedChord.root)+i(n.qualityDisplay(n.confirmedChord.quality)),1)],64)):d("",!0)],512),[[g,n.confirmedChord]])])])):(r(),o("div",je,[...a[26]||(a[26]=[s("p",null,'Click "Start Listening" and play a chord',-1)])]))]),m(s("div",Ve,[n.latestConfirmedChord?(r(),v(z,{key:0,notes:n.latestConfirmedChord.notes||[],"chord-name":n.latestConfirmedChord.chord,inversion:n.latestConfirmedChord.details?n.shortInversion(n.latestConfirmedChord.details.inversion):""},null,8,["notes","chord-name","inversion"])):d("",!0)],512),[[g,n.latestConfirmedChord]]),s("div",Oe,[s("div",Je,[a[28]||(a[28]=s("h4",null,"Confirmed Chords",-1)),n.confirmedChordHistory.length>0?(r(),o("button",{key:0,onClick:a[9]||(a[9]=(...e)=>n.handleClearHistory&&n.handleClearHistory(...e)),class:"btn-clear"}," Clear ")):d("",!0)]),0===n.confirmedChordHistory.length?(r(),o("div",$e," Play chords to see them appear here ")):(r(),o("div",Ke,[(r(!0),o(l,null,c([...n.confirmedChordHistory].reverse(),(e,a)=>(r(),o("div",{key:e.timestamp,class:u(["history-item",{latest:0===a}])},[s("span",We,i(e.chord),1),e.notes?(r(),o("span",Xe,i(e.notes.join(" ")),1)):d("",!0),e.details?(r(),o("span",Ye,i(n.shortInversion(e.details.inversion)),1)):d("",!0),s("span",Ze,i(n.formatTime(e.timestamp)),1)],2))),128))]))]),n.isListening?(r(),o("div",ea,[a[37]||(a[37]=s("h4",null,"Debug Capture",-1)),n.isCapturing?(r(),o("div",na,[a[29]||(a[29]=s("span",{class:"capture-indicator"},null,-1)),p(' Capturing "'+i(n.captureChordName)+'"... ',1),s("button",{onClick:a[12]||(a[12]=(...e)=>n.handleStopCapture&&n.handleStopCapture(...e)),class:"btn btn-small btn-outline"},"Stop")])):(r(),o("div",aa,[m(s("input",{type:"text","onUpdate:modelValue":a[10]||(a[10]=e=>n.captureChordName=e),placeholder:"Chord name (e.g., Am)",class:"capture-input"},null,512),[[y,n.captureChordName]]),s("button",{onClick:a[11]||(a[11]=(...e)=>n.handleStartCapture&&n.handleStartCapture(...e)),class:"btn btn-capture",disabled:!n.captureChordName}," Capture 3s ",8,ta)])),n.captureData?(r(),o("div",ra,[s("div",{class:u(["capture-summary",{success:n.captureData.analysis.success,failure:!n.captureData.analysis.success}])},[s("div",oa,[s("span",sa,[a[30]||(a[30]=p("Expected: ",-1)),s("strong",null,i(n.captureData.expectedChord),1)]),s("span",ia,[a[31]||(a[31]=p("Detected: ",-1)),s("strong",null,i(n.captureData.analysis.mostCommonChord||"
1None"),1),p(" ("+i(n.captureData.analysis.mostCommonPct)+"%)",1)]),s("span",da,i(n.captureData.analysis.success?"â":"â"),1)]),s("div",la,[s("span",null,i(n.captureData.frameCount)+" frames in "+i(n.captureData.duration)+"ms",1),s("span",null,"Expected detected: "+i(n.captureData.analysis.expectedDetectedPct)+"%",1)])],2),s("div",ca,[a[32]||(a[32]=s("h5",null,"Top Notes (by time in top 3)",-1)),s("div",ua,[(r(!0),o(l,null,c(n.captureData.analysis.noteSummary,e=>(r(),o("div",{key:e.note,class:"note-row"},[s("span",ba,i(e.note),1),s("div",pa,[s("div",{class:"note-bar",style:f({width:e.top3Pct+"%"})},null,4)]),s("span",ma,i(e.top3Pct)+"%",1),s("span",ha,"(avg pos: "+i(e.avgPosition)+", ~"+i(e.avgFrequency)+"Hz)",1)]))),128))])]),Object.keys(n.captureData.analysis.filteredAsPhantom||{}).length>0?(r(),o("div",fa,[a[33]||(a[33]=s("h5",null,"Filtered as Phantoms",-1)),s("div",ga,[(r(!0),o(l,null,c(n.captureData.analysis.filteredAsPhantom,(e,a)=>(r(),o("span",{key:a,class:"filtered-item phantom"},i(a)+": "+i(e)+"x ",1))),128))])])):d("",!0),Object.keys(n.captureData.analysis.filteredAsHarmonic).length>0?(r(),o("div",va,[a[34]||(a[34]=s("h5",null,"Filtered as Harmonics",-1)),s("div",ya,[(r(!0),o(l,null,c(n.captureData.analysis.filteredAsHarmonic,(e,a)=>(r(),o("span",{key:a,class:"filtered-item"},i(a)+": "+i(e)+"x ",1))),128))])])):d("",!0),Object.keys(n.captureData.analysis.filteredAsDuplicate).length>0?(r(),o("div",ka,[a[35]||(a[35]=s("h5",null,"Filtered as Octave Duplicates",-1)),s("div",xa,[(r(!0),o(l,null,c(n.captureData.analysis.filteredAsDuplicate,(e,a)=>(r(),o("span",{key:a,class:"filtered-item"},i(a)+": "+i(e)+"x ",1))),128))])])):d("",!0),s("div",Ca,[a[36]||(a[36]=s("h5",null,"All Detected Chords",-1)),s("div",za,[(r(!0),o(l,null,c(n.captureData.analysis.chordCounts,(e,a)=>(r(),o("span",{key:a,class:"chord-count-item"},i(a)+": "+i(e),1))),128)),n.captureData.analysis.unknownCount>0?(r(),o("span",wa," Unknown: "+i(n.captureData.analysis.unknownCount),1)):d("",!0),n.captureData.analysis.noChordCount>0?(r(),o("span",Da," No chord: "+i(n.captureData.analysis.noChordCount),1)):d("",!0)])]),s("button",{onClick:a[13]||(a[13]=(...e)=>n.copyCaptureData&&n.copyCaptureData(...e)),class:"btn btn-small"},"Copy Full Data (JSON)")])):d("",!0)])):d("",!0),m(s("div",qa,[a[38]||(a[38]=s("h4",null,"Note Rankings (last 2s)",-1)),s("div",Sa,[(r(!0),o(l,null,c(n.sortedRankingStats,(e,a)=>(r(),o("div",{key:e.note,class:u(["ranking-item",{"in-top3":a<3}])},[s("div",Aa,[s("span",Ia,i(e.note),1),s("span",Na,i(e.freq.toFixed(0))+"Hz",1)]),s("div",Fa,[s("div",{class:u(["ranking-bar",{"rank-1":e.rank1>e.rank2&&e.rank1>e.rank3}]),style:f({width:e.top3Pct+"%"})},null,6)]),s("div",ja,[s("span",Qa,i(e.top3Pct)+"%",1),s("span",Pa,"(#1: "+i(e.rank1)+", #2: "+i(e.rank2)+", #3: "+i(e.rank3)+")",1)])],2))),128))])],512),[[g,n.isListening&&n.sortedRankingStats.length>0]]),s("div",Ga,[a[46]||(a[46]=s("h4",null,"Settings",-1)),s("div",Ta,[a[39]||(a[39]=s("label",null,"Update Speed (ms)",-1)),m(s("input",{type:"range","onUpdate:modelValue":a[14]||(a[14]=e=>n.settings.updateInterval=e),min:"50",max:"300",step:"25"},null,512),[[y,n.settings.updateInterval,void 0,{number:!0}]]),s("span",null,i(n.settings.updateInterval)+"ms",1)]),s("div",La,[a[41]||(a[41]=s("label",null,"FFT Size",-1)),m(s("select",{"onUpdate:modelValue":a[15]||(a[15]=e=>n.settings.fftSize=e),onChange:a[16]||(a[16]=(...e)=>n.restartIfListening&&n.restartIfListening(...e))},[...a[40]||(a[40]=[s("option",{value:4096},"4096 (faster)",-1),s("option",{value:8192},"8192 (balanced)",-1),s("option",{value:16384},"16384 (more accurate)",-1)])],544),[[h,n.settings.fftSize,void 0,{number:!0}]])]),s("div",Ea,[a[42]||(a[42]=s("label",null,"Smoothing",-1)),m(s("input",{type:"range","onUpdate:modelValue":a[17]||(a[17]=e=>n.settings.smoothing=e),min:"0",max:"0.9",step:"0.1"},null,512),[[y,n.settings.smoothing,void 0,{number:!0}]]),s("span",null,i(n.settings.smoothing.toFixed(1)),1)]),s("div",Ma,[a[43]||(a[43]=s("label",null,"Confirmation Threshold",-1)),m(s("input",{type:"range","onUpdate:modelValue":a[18]||(a[18]=e=>n.settings.confirmationThreshold=e),min:"1",max:"5",step:"0.5",onChange:a[
119]||(a[19]=(...e)=>n.restartIfListening&&n.restartIfListening(...e))},null,544),[[y,n.settings.confirmationThreshold,void 0,{number:!0}]]),s("span",null,i(n.settings.confirmationThreshold.toFixed(1)),1)]),s("div",Ba,[s("label",null,[m(s("input",{type:"checkbox","onUpdate:modelValue":a[20]||(a[20]=e=>n.detect7thChords=e)},null,512),[[k,n.detect7thChords]]),a[44]||(a[44]=p(" Detect 7th chords (4 notes) ",-1))])]),s("div",Ha,[s("label",null,[m(s("input",{type:"checkbox","onUpdate:modelValue":a[21]||(a[21]=e=>n.openChordQuizFilter=e)},null,512),[[k,n.openChordQuizFilter]]),a[45]||(a[45]=p(" Open chord quiz filter (82-392 Hz) ",-1))])])])]),s("details",Ra,[a[47]||(a[47]=s("summary",null,"Debug Info",-1)),s("pre",null,i(n.debugInfo),1)])])}],["styles",[".realtime-test[data-v-71b15baa]{max-width:900px;margin:0 auto;padding:1.5rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}h3[data-v-71b15baa]{margin:0 0 1.5rem;font-size:1.4rem;color:#2c3e50}.quiz-section[data-v-71b15baa]{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;padding:1.5rem;margin-bottom:1rem;text-align:center;color:#fff}.quiz-prompt[data-v-71b15baa]{margin-bottom:1rem}.quiz-label[data-v-71b15baa]{font-size:1rem;opacity:.9;margin-bottom:.5rem}.quiz-chord[data-v-71b15baa]{font-size:4rem;font-weight:700;line-height:1;transition:all .3s}.quiz-chord.success[data-v-71b15baa]{color:#90ee90;transform:scale(1.1)}.checkmark[data-v-71b15baa]{display:inline-block;margin-left:.5rem;animation:pop-71b15baa .3s ease-out}@keyframes pop-71b15baa{0%{transform:scale(0)}50%{transform:scale(1.3)}to{transform:scale(1)}}.quiz-progress[data-v-71b15baa]{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1rem;font-size:.9rem;opacity:.9}.quiz-dots[data-v-71b15baa]{display:flex;gap:.4rem}.quiz-dot[data-v-71b15baa]{width:10px;height:10px;border-radius:50%;background:#ffffff4d}.quiz-dot.completed[data-v-71b15baa]{background:#90ee90}.quiz-dot.current[data-v-71b15baa]{background:#fff;box-shadow:0 0 8px #ffffff80}.target-match-info[data-v-71b15baa]{display:flex;gap:.5rem;justify-content:center;margin-top:.5rem}.pitch-class-dot[data-v-71b15baa]{padding:.2rem .5rem;border-radius:4px;font-size:.8rem;font-weight:600;background:#e9ecef;color:#6c757d;transition:all .15s}.pitch-class-dot.matched[data-v-71b15baa]{background:#28a745;color:#fff}.quiz-start[data-v-71b15baa]{text-align:center;margin-bottom:1rem}.btn-success[data-v-71b15baa]{background:#28a745;color:#fff}.btn-success[data-v-71b15baa]:hover{background:#218838}.btn-outline[data-v-71b15baa]{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.5)}.btn-outline[data-v-71b15baa]:hover{background:#ffffff1a}.btn-small[data-v-71b15baa]{padding:.4rem 1rem;font-size:.85rem}h4[data-v-71b15baa]{margin:0 0 .75rem;font-size:.9rem;font-weight:600;color:#495057;text-transform:uppercase;letter-spacing:.5px}.test-layout[data-v-71b15baa]{display:grid;grid-template-columns:1fr 250px;grid-template-rows:auto 1fr;gap:1rem}.controls-section[data-v-71b15baa]{grid-column:1 / -1;display:flex;align-items:center;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:8px}.btn[data-v-71b15baa]{padding:.75rem 1.5rem;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-large[data-v-71b15baa]{padding:1rem 2rem;font-size:1.1rem}.btn-primary[data-v-71b15baa]{background:#007bff;color:#fff}.btn-primary[data-v-71b15baa]:hover{background:#0056b3}.btn-danger[data-v-71b15baa]{background:#dc3545;color:#fff}.btn-danger[data-v-71b15baa]:hover{background:#c82333}.status[data-v-71b15baa]{padding:.75rem 1rem;border-radius:6px;font-weight:500}.status.initializing[data-v-71b15baa]{background:#fff3cd;color:#856404}.listening-indicator[data-v-71b15baa]{display:flex;align-items:center;gap:.5rem;color:#28a745;font-weight:600}.pulse[data-v-71b15baa]{width:12px;height:12px;background:#28a745;border-radius:50%;animation:pulse-71b15baa 1.5s infinite}@keyframes pulse-71b15baa{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.detection-display[data-v-71b15baa]{background:#f8f9fa;border-radius:8px;padding:1.5rem;min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center}.empty-state[data-v-71b15baa]{color:#6c757d;text-align:center;font-style:italic}.chord-result[data-v-71b15baa]{width:100%;text-align:center;min-height:200px}.chord-name[data-v-71b15baa]{font-size:4rem;font-weight:700;color:#dee2e6;transition:all .15s;line-height:1;margin-bottom:.5rem;min-height:4.5rem;display:flex;align-items:center;justify-content:center}.chord-name.detected[data-v-71b15baa]{color:#2c3e50}.chord-name .no-chord[data-v-71b15baa]{color:#dee2e6}.inversion[data-v-71b15baa]{font-size:1rem;color:#6c757d;margin-bottom:1.5rem;min-height:1.5rem}.notes-display[data-v-71b15baa]{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.3rem;margin-bottom:1.5rem;min-height:30px;align-items:center}.note-chip[data-v-71b15baa]{padding:.2rem .5rem;background:#e9ecef;border-radius:12px;font-size:.75rem;font-weight:500;color:#495057}.note-chip.strong[data-v-71b15baa]{background:#007bff;color:#fff}.note-chip .freq[data-v-71b15baa]{font-size:.6rem;opacity:.7;margin-left:.15rem}.no-notes[data-v-71b15baa]{color:#adb5bd;font-style:italic}.confidence-row[data-v-71b15baa]{display:flex;align-items:center;gap:1rem;width:100%;min-height:2rem}.confidence-section[data-v-71b15baa]{display:flex;align-items:center;gap:.75rem;flex:1}.confidence-section label[data-v-71b15baa]{font-size:.8rem;font-weight:600;color:#495057;white-space:nowrap}.confidence-bar[data-v-71b15baa]{flex:1;height:8px;background:#e9ecef;border-radius:4px;overflow:hidden}.confidence-fill[data-v-71b15baa]{height:100%;transition:width .15s,background .15s;border-radius:4px}.confidence-fill.low[data-v-71b15baa]{background:#dc3545}.confidence-fill.medium[data-v-71b15baa]{background:#ffc107}.confidence-fill.high[data-v-71b15baa]{background:#28a745}.confidence-value[data-v-71b15baa]{font-size:.85rem;font-weight:600;color:#495057;min-width:40px;text-align:right}.confirmed-badge[data-v-71b15baa]{padding:.25rem .6rem;background:#d4edda;border:1px solid #28a745;border-radius:4px;color:#155724;font-size:.8rem;font-weight:700;white-space:nowrap;min-width:3rem;text-align:center}.fretboard-display-section[data-v-71b15baa]{grid-column:1 / -1;background:#f8f9fa;border-radius:8px;padding:1rem;margin-top:.5rem}.history-section[data-v-71b15baa]{grid-column:1 / -1;background:#f8f9fa;border-radius:8px;padding:1rem}.history-header[data-v-71b15baa]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.history-header h4[data-v-71b15baa]{margin:0}.btn-clear[data-v-71b15baa]{padding:.25rem .5rem;font-size:.75rem;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer}
1.btn-clear[data-v-71b15baa]:hover{background:#5a6268}.history-empty[data-v-71b15baa]{color:#6c757d;font-style:italic;text-align:center;padding:1rem}.history-list[data-v-71b15baa]{display:flex;flex-wrap:wrap;gap:.5rem}.history-item[data-v-71b15baa]{display:flex;flex-direction:column;align-items:center;padding:.5rem .75rem;background:#fff;border:1px solid #dee2e6;border-radius:6px;min-width:60px}.history-item.latest[data-v-71b15baa]{background:#d4edda;border-color:#28a745}.history-chord[data-v-71b15baa]{font-size:1.1rem;font-weight:700;color:#2c3e50}.history-notes[data-v-71b15baa]{font-size:.7rem;color:#007bff;font-family:monospace;margin-top:.15rem}.history-inversion[data-v-71b15baa]{font-size:.65rem;color:#6c757d;font-style:italic;margin-top:.1rem}.history-time[data-v-71b15baa]{font-size:.65rem;color:#6c757d;margin-top:.25rem}.settings-section[data-v-71b15baa]{background:#f8f9fa;border-radius:8px;padding:1rem}.setting[data-v-71b15baa]{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem}.setting[data-v-71b15baa]:last-child{margin-bottom:0}.setting label[data-v-71b15baa]{font-size:.8rem;font-weight:600;color:#495057}.setting input[type=range][data-v-71b15baa]{width:100%}.setting select[data-v-71b15baa]{padding:.4rem;border:1px solid #ced4da;border-radius:4px;font-size:.85rem}.setting span[data-v-71b15baa]{font-size:.8rem;color:#007bff;font-weight:600}.setting-checkbox[data-v-71b15baa]{flex-direction:row;align-items:center}.setting-checkbox label[data-v-71b15baa]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.setting-checkbox input[type=checkbox][data-v-71b15baa]{width:16px;height:16px;cursor:pointer}.ranking-section[data-v-71b15baa]{grid-column:1 / -1;background:#f8f9fa;border-radius:8px;padding:1rem;margin-top:1rem}.ranking-section h4[data-v-71b15baa]{margin:0 0 .75rem;font-size:.9rem;font-weight:600;color:#495057}.ranking-list[data-v-71b15baa]{display:flex;flex-direction:column;gap:.5rem}.ranking-item[data-v-71b15baa]{display:grid;grid-template-columns:80px 1fr 120px;align-items:center;gap:.75rem;padding:.4rem .5rem;background:#fff;border-radius:4px;border:1px solid #e9ecef}.ranking-item.in-top3[data-v-71b15baa]{background:#e8f4fd;border-color:#007bff}.ranking-note[data-v-71b15baa]{display:flex;flex-direction:column}.note-name[data-v-71b15baa]{font-weight:700;font-size:.95rem;color:#2c3e50}.note-freq[data-v-71b15baa]{font-size:.7rem;color:#6c757d}.ranking-bar-container[data-v-71b15baa]{height:16px;background:#e9ecef;border-radius:8px;overflow:hidden}.ranking-bar[data-v-71b15baa]{height:100%;background:#6c757d;border-radius:8px;transition:width .15s}.ranking-bar.rank-1[data-v-71b15baa]{background:#007bff}.ranking-stats[data-v-71b15baa]{display:flex;flex-direction:column;align-items:flex-end;font-size:.75rem}.top3-pct[data-v-71b15baa]{font-weight:700;color:#2c3e50}.rank-breakdown[data-v-71b15baa]{color:#6c757d;font-size:.65rem}.debug-section[data-v-71b15baa]{margin-top:1.5rem;padding:1rem;background:#f8f9fa;border-radius:8px}.debug-section summary[data-v-71b15baa]{cursor:pointer;font-weight:600;color:#495057}.debug-section pre[data-v-71b15baa]{margin:.75rem 0 0;padding:.75rem;background:#2c3e50;color:#ecf0f1;border-radius:4px;font-size:.75rem;overflow-x:auto}.capture-section[data-v-71b15baa]{grid-column:1 / -1;background:#f8f9fa;border-radius:8px;padding:1rem;border:2px dashed #dee2e6}.capture-section h4[data-v-71b15baa]{margin:0 0 .75rem;color:#6c757d}.capture-controls[data-v-71b15baa]{display:flex;gap:.5rem;align-items:center}.capture-input[data-v-71b15baa]{flex:1;max-width:150px;padding:.5rem;border:1px solid #ced4da;border-radius:4px;font-size:.9rem}.btn-capture[data-v-71b15baa]{background:#6f42c1;color:#fff;padding:.5rem 1rem}.btn-capture[data-v-71b15baa]:hover:not(:disabled){background:#5a32a3}.btn-capture[data-v-71b15baa]:disabled{opacity:.5;cursor:not-allowed}.capture-active[data-v-71b15baa]{display:flex;align-items:center;gap:.5rem;color:#6f42c1;font-weight:600}.capture-indicator[data-v-71b15baa]{width:12px;height:12px;background:#dc3545;border-radius:50%;animation:pulse-71b15baa 1s infinite}.capture-results[data-v-71b15baa]{margin-top:1rem;padding-top:1rem;border-top:1px solid #dee2e6}.capture-summary[data-v-71b15baa]{padding:.75rem;border-radius:6px;margin-bottom:1rem}.capture-summary.success[data-v-71b15baa]{background:#d4edda;border:1px solid #28a745}.capture-summary.failure[data-v-71b15baa]{background:#f8d7da;border:1px solid #dc3545}.summary-header[data-v-71b15baa]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}.summary-header .expected[data-v-71b15baa],.summary-header .detected[data-v-71b15baa]{font-size:.9rem}.summary-header .result-icon[data-v-71b15baa]{font-size:1.5rem}.summary-stats[data-v-71b15baa]{display:flex;gap:1rem;margin-top:.5rem;font-size:.8rem;color:#6c757d}.capture-notes[data-v-71b15baa],.capture-filtered[data-v-71b15baa],.capture-chords[data-v-71b15baa]{margin-top:1rem}.capture-notes h5[data-v-71b15baa],.capture-filtered h5[data-v-71b15baa],.capture-chords h5[data-v-71b15baa]{margin:0 0 .5rem;font-size:.85rem;color:#495057}.note-breakdown[data-v-71b15baa]{display:flex;flex-direction:column;gap:.25rem}.note-row[data-v-71b15baa]{display:grid;grid-template-columns:50px 1fr 45px auto;align-items:center;gap:.5rem;font-size:.8rem}.note-label[data-v-71b15baa]{font-weight:600}.note-bar-container[data-v-71b15baa]{height:12px;background:#e9ecef;border-radius:6px;overflow:hidden}.note-bar[data-v-71b15baa]{height:100%;background:#007bff;border-radius:6px}.note-pct[data-v-71b15baa]{text-align:right;font-weight:600}.note-details[data-v-71b15baa]{color:#6c757d;font-size:.7rem}.filtered-list[data-v-71b15baa],.chord-counts[data-v-71b15baa]{display:flex;flex-wrap:wrap;gap:.5rem}.filtered-item[data-v-71b15baa],.chord-count-item[data-v-71b15baa]{padding:.25rem .5rem;background:#e9ecef;border-radius:4px;font-size:.8rem}.chord-count-item.unknown[data-v-71b15baa]{background:#fff3cd;color:#856404}.chord-count-item.no-chord[data-v-71b15baa]{background:#f8d7da;color:#721c24}.prog-quiz-section[data-v-71b15baa]{margin-bottom:1rem}.prog-quiz-start[data-v-71b15baa]{text-align:center;margin-bottom:1rem;display:flex;gap:.5rem;justify-content:center;align-items:center}.prog-select[data-v-71b15baa]{padding:.4rem .5rem;border-radius:6px;border:1px solid #ccc;font-size:.85rem}.prog-quiz-name[data-v-71b15baa]{text-align:center;font-size:.85rem;color:#6c757d;margin-bottom:.5rem}.prog-quiz-countin[data-v-71b15baa]{text-align:center;margin:1rem 0}.countin-number[data-v-71b15baa]{font-size:4rem;font-weight:700;color:#495057;line-height:1}.countin-label[data-v-71b15baa]{font-size:.9rem;color:#6c757d;margin-top:.25rem}.prog-quiz-chart[data-v-71b15baa]{text-align:center}.chord-chart[data-v-71b15baa]{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.chord-chart-row[data-v-71b15baa]{display:flex;gap:.5rem;justify-content:center}.chord-box[data-v-71b15baa]{width:4rem;height:3.5rem;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid #dee2e6;border-radius:8px;background:#f8f9fa;transition:all .15s;position:relative}.chord-box.current[data-v-71b15baa]{border-color:#007bff;background:#e7f1ff;box-shadow:0 0 8px #007bff4d}.chord-box.hit[data-v-71b15baa]{border-color:#28a745;background:#d4edda}.chord-box.missed[data-v-71b15baa]{border-color:#dc3545;background:#f8d7da}.chord-box-name[data-v-71b15baa]{font-size:1.1rem;font-weight:700;color:#2c3e50}.chord-box-icon[data-v-71b15baa]{font-size:.8rem;color:#28a745;font-weight:700}.chord-box-icon.miss[data-v-71b15baa]{color:#dc3545}.chord-box-score[data-v-71b15baa]{font-size:.6rem;color:#999;display:block}.beat-dots[data-v-71b15baa]{display:flex;gap:.4rem;justify-content:center;margin:.5rem 0}.beat-dot[data-v-71b15baa]{width:10px;height:10px;border-radius:50%;background:#dee2e6;transition:background .1s}.beat-dot.active[data-v-71b15baa]{background:#007bff}.prog-stop-btn[data-v-71b15baa]{color:#495057;border-color:#ced4da}.prog-quiz-results[data-v-71b15baa]{text-align:center}.results-score[data-v-71b15baa]{font-size:2.5rem;font-weight:700;color:#2c3e50;margin-bottom:.75rem}.results-buttons[data-v-71b15baa]{display:flex;gap:.75rem;justify-content:center;margin-top:.75rem}.prog-new-btn[data-v-71b15baa]{color:#495057;border-color:#ced4da}"]],["__scopeId","data-v-71b15baa"]]);export{_a as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.