@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700&display=swap";@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:"DM Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, monospace;--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-400:oklch(67.3% .182 276.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.left-1\/2{left:50%}.z-10{z-index:10}.z-30{z-index:30}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.h-dvh{height:100dvh}.h-full{height:100%}.min-h-0{min-height:0}.min-h-48{min-height:calc(var(--spacing) * 48)}.w-full{width:100%}.min-w-0{min-width:0}.min-w-28{min-width:calc(var(--spacing) * 28)}.flex-1{flex:1}.flex-\[0_0_var\(--measure-width\)\]{flex:0 0 var(--measure-width)}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.resize{resize:both}.grid-rows-\[3\.5rem_minmax\(0\,1fr\)_5\.5rem\]{grid-template-rows:3.5rem minmax(0,1fr) 5.5rem}.grid-rows-\[3\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-rows:3.5rem minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-slate-700{border-color:var(--color-slate-700)}.border-slate-800{border-color:var(--color-slate-800)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/90{background-color:#0f172be6}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/90{background-color:color-mix(in oklab, var(--color-slate-900) 90%, transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-inline:var(--spacing)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:var(--spacing)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-36{padding-bottom:calc(var(--spacing) * 36)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[10px\]{font-size:10px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-indigo-300{color:var(--color-indigo-300)}.text-inherit{color:inherit}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:border-indigo-400:hover{border-color:var(--color-indigo-400)}.hover\:text-indigo-200:hover{color:var(--color-indigo-200)}}@media (width>=40rem){.sm\:block{display:block}.sm\:min-w-35{min-width:calc(var(--spacing) * 35)}}@media (width>=48rem){.md\:grid-rows-\[4rem_minmax\(0\,1fr\)_6rem\]{grid-template-rows:4rem minmax(0,1fr) 6rem}.md\:grid-rows-\[4rem_minmax\(0\,1fr\)_auto\]{grid-template-rows:4rem minmax(0,1fr) auto}.md\:p-7{padding:calc(var(--spacing) * 7)}.md\:px-7{padding-inline:calc(var(--spacing) * 7)}}}:root{font-synthesis:none}*{box-sizing:border-box}body{min-width:320px;margin:0}button,select,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.settings-fields label,.tempo-popover label{color:#94a3b8;font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;gap:.5rem;display:grid}.generation-options{border:0;gap:.5rem;margin:0;padding:0;display:grid}.generation-options legend{color:#94a3b8;font:500 10px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.75rem}.generation-option{color:#cbd5e1;font:500 .8125rem var(--font-sans);letter-spacing:0;text-transform:none;grid-template-columns:none;align-items:center;gap:.625rem;display:flex}.generation-option input{accent-color:#818cf8;width:1rem;height:1rem;margin:0}.settings-fields select{appearance:none;color:#e2e8f0;background:#1e293b url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='m1 1 4 4 4-4' fill='none' stroke='%2394a3b8' stroke-width='1.5'/%3E%3C/svg%3E") calc(100% - .75rem)/10px no-repeat;border:1px solid #334155;border-radius:.5rem;width:100%;padding:.625rem 2rem .625rem .75rem}.bpm output{color:#a5b4fc;letter-spacing:-.025em;font-size:1.5rem;font-weight:700}.bpm output small{color:#94a3b8;font:500 9px var(--font-mono)}.bpm input{accent-color:#818cf8;width:100%}.header-control{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:.55rem;align-items:center;gap:.45rem;min-height:2.4rem;padding:.45rem .7rem;font-size:.8rem;font-weight:600;transition:all .15s;display:inline-flex}.header-control:hover{border-color:#818cf8}.tempo-value{color:#a5b4fc;font-family:var(--font-mono)}.tempo-control{position:relative}.tempo-popover{z-index:1;background:#0f172a;border:1px solid #334155;border-radius:.75rem;gap:.9rem;width:min(18rem,100vw - 2rem);padding:1rem;display:grid;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 18px 48px #00000080}.tempo-popover label{gap:.55rem;display:grid}.tempo-popover output{color:#a5b4fc;font-size:1.1rem;font-weight:700}.tempo-popover input[type=range]{appearance:none;background:0 0;width:100%;height:1.25rem}.tempo-popover input[type=range]::-webkit-slider-runnable-track{box-sizing:border-box;background:linear-gradient(to right, #818cf8 0 var(--range-value-position), #4a4a4a var(--range-value-position) 100%);border:1px solid #767676;border-radius:999px;height:.5rem}.tempo-popover input[type=range]::-webkit-slider-thumb{appearance:none;background:#818cf8;border:0;border-radius:50%;width:1.25rem;height:1.25rem;margin-top:-.375rem}.tempo-popover input[type=range]::-moz-range-track{box-sizing:border-box;background:linear-gradient(to right, #818cf8 0 var(--range-value-position), #4a4a4a var(--range-value-position) 100%);border:1px solid #767676;border-radius:999px;height:.5rem}.tempo-popover input[type=range]::-moz-range-thumb{background:#818cf8;border:0;border-radius:50%;width:1.25rem;height:1.25rem}.tempo-popover input.tempo-ceiling-slider::-webkit-slider-runnable-track{background:linear-gradient(to right, #334155 0 var(--tempo-minimum-position), #818cf8 var(--tempo-minimum-position) var(--range-value-position), #4a4a4a var(--range-value-position) 100%)}.tempo-popover input.tempo-ceiling-slider::-moz-range-track{background:linear-gradient(to right, #334155 0 var(--tempo-minimum-position), #818cf8 var(--tempo-minimum-position) var(--range-value-position), #4a4a4a var(--range-value-position) 100%)}.tempo-popover select{color:#e2e8f0;text-transform:none;background:#1e293b;border:1px solid #334155;border-radius:.5rem;width:100%;padding:.55rem .65rem}.secondary{color:#e2e8f0;text-align:left;background:#1e293b;border:1px solid #334155;border-radius:.5rem;padding:.75rem 1rem;font-size:.875rem;font-weight:600;transition:all .15s}.secondary:hover{background:#273449;border-color:#818cf8}.notation-scroll{scrollbar-color:#475569 #0f172a;scrollbar-width:thin;min-height:0;overflow:hidden auto}.notation-source{color:#64748b;font:600 .65rem var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .75rem .25rem}.notation-source span{color:#a5b4fc}.exercise-comment{align-items:center;gap:.5rem;margin:0 0 1rem .25rem;display:flex}.exercise-comment p{color:#cbd5e1;max-width:min(100%,30rem);min-height:1.25rem;margin:0;font-size:.8rem}.exercise-comment input{color:#e2e8f0;width:min(100%,30rem);font:400 .8rem var(--font-sans);letter-spacing:normal;text-transform:none;background:#0f172a;border:1px solid #334155;border-radius:.45rem;padding:.5rem .65rem}.exercise-comment input:focus{border-color:#818cf8;outline:none}.comment-edit,.favorite-button,.comment-save,.favorite-remove{color:#c7d2fe;white-space:nowrap;background:#1e293b;border:1px solid #475569;border-radius:.45rem;padding:.45rem .55rem;font-size:.75rem;font-weight:600}.comment-edit:hover,.favorite-button:hover,.comment-save:hover,.favorite-remove:hover{background:#273449;border-color:#818cf8}.favorite-button.is-favorite{color:#fbbf24;border-color:#fbbf24}.favorite-button.is-favorite:hover{background:#3a3018;border-color:#fcd34d}.favorites-list{gap:.6rem;padding:1.25rem;display:grid}.favorite-exercise{background:#1e293b;border:1px solid #334155;border-radius:.65rem;align-items:stretch;gap:.5rem;width:100%;display:flex;position:relative;overflow:hidden}.favorite-exercise:hover{border-color:#818cf8}.favorite-exercise-open{color:#e2e8f0;text-align:left;flex:1;gap:.35rem;padding:.85rem 3.25rem .85rem 1rem;display:grid}.favorite-exercise-open:hover{background:#273449}.favorite-exercise-open>span,.favorite-exercise-open small,.favorites-empty{color:#94a3b8;font-size:.75rem}.favorite-exercise-open small{color:#64748b}.favorite-remove{color:#fda4af;position:absolute;top:.65rem;right:.65rem}.favorites-empty{text-align:center;margin:0}.count-in-overlay{z-index:20;color:#eef2ff;pointer-events:none;background:#0f172ae8;border:1px solid #818cf880;border-radius:1rem;place-items:center;gap:.4rem;min-width:8.75rem;padding:1rem 1.25rem;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 18px 48px #00000080,0 0 0 5px #818cf81a}.count-in-label{color:#c7d2fe;font:500 .625rem var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.count-in-beat{color:#a5b4fc;text-align:center;min-width:1.1em;font-size:4rem;font-weight:700;line-height:.95;animation:.28s ease-out count-in-pulse}.count-in-dots{gap:.35rem;display:flex}.count-in-dots i{background:#475569;border-radius:999px;width:.45rem;height:.45rem;transition:background-color .15s,transform .15s}.count-in-dots i.is-complete{background:#a5b4fc;transform:scale(1.2)}@keyframes count-in-pulse{0%{opacity:.35;transform:scale(.72)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.count-in-beat{animation:none}.count-in-dots i{transition:none}}.measure.selected{background:#818cf810}.measure-actions{z-index:10;background:#0f172ae8;border:1px solid #334155;border-radius:.5rem;gap:.2rem;padding:.2rem;display:flex;position:absolute;top:.35rem;right:.35rem;box-shadow:0 5px 18px #02061780}.measure-actions button,.workspace-action{color:#cbd5e1;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.35rem;place-items:center;width:1.9rem;height:1.9rem;transition:background-color .15s,color .15s,border-color .15s;display:grid}.measure-actions button:hover:not(:disabled),.workspace-action:hover:not(:disabled){color:#e0e7ff;background:#312e814d;border-color:#818cf8}.measure-actions button.danger:hover:not(:disabled),.workspace-action.danger:hover:not(:disabled){color:#fecdd3;background:#88133755;border-color:#fb7185}.measure-actions button:disabled,.workspace-action:disabled{cursor:not-allowed;opacity:.35}.workspace-top-actions{z-index:20;align-items:center;gap:.35rem;display:flex;position:absolute;top:1.25rem;right:1.25rem}.workspace-top-actions .workspace-action{color:#c7d2fe;background:#1e293b;border-color:#475569;border-radius:.45rem;width:2.5rem;height:2.5rem;font-size:1rem}.workspace-top-actions .workspace-action:hover:not(:disabled){color:#e0e7ff;background:#273449;border-color:#818cf8}.workspace-top-actions .workspace-action.danger{color:#fda4af;border-color:#7f1d1d}.workspace-top-actions .workspace-action.danger:hover:not(:disabled){color:#fecdd3;background:#4c1d2a;border-color:#fb7185}.signature-control{color:#c7d2fe;height:2.5rem;font:600 .8rem var(--font-mono);background:#1e293b;border:1px solid #475569;border-radius:.45rem;padding:0 .6rem}.signature-control:hover:not(:disabled){background:#273449;border-color:#818cf8}@media (width>=768px){.workspace-top-actions{top:1.75rem;right:1.75rem}}.measure:focus,.measure:focus-visible{outline:none}.measure.active{background:#22d3ee0d}.engraved-score{z-index:1;height:120px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.vexflow-measure,.vexflow-measure svg{width:100%;height:100%}.vexflow-measure svg{overflow:visible}.vexflow-measure path,.vexflow-measure line{stroke:#cbd5e1}.tap{color:#64748b;font:9px var(--font-mono);opacity:0;transition:opacity .15s;position:absolute;bottom:-.25rem;right:.75rem}.measure:hover .tap,.measure.selected .tap{opacity:1}.player-hit{z-index:5;background:#0f172a;border:2px solid #22d3ee;border-radius:9999px;width:8px;height:8px;position:absolute;bottom:3px;transform:translate(-50%)}.player-hit.incorrect{border-color:#fb7185}.timeline{border-bottom:1px solid #64748b;height:30px;margin:20px 0 6px 1.85rem;position:relative;overflow:visible}.timeline.with-tempo{margin-left:5.35rem}.axis span{color:#94a3b8;font:10px var(--font-mono);position:absolute;top:-15px;transform:translate(-50%)}.marker{border-radius:9999px;width:9px;height:9px;position:absolute;bottom:-7px;transform:translate(-50%)}.marker.player{background:#22d3ee;width:7px;height:7px;bottom:-5px}.marker.player.incorrect{background:#fb7185}.loop-timeline{color:#64748b;height:18px;font:9px var(--font-mono);grid-template-columns:1.5rem minmax(0,1fr);align-items:center;gap:.35rem;display:grid}.loop-timeline.with-tempo{grid-template-columns:5rem minmax(0,1fr)}.loop-timeline.with-tempo>span{text-align:left;white-space:nowrap}.loop-timeline>div{background:#334155;height:1px;position:relative}.loop-timeline i{background:#22d3ee;border-radius:999px;width:6px;height:6px;position:absolute;bottom:-3px;transform:translate(-50%)}.loop-timeline i.incorrect{background:#fb7185}.subdivision{border-left:1px solid #475569;position:absolute;bottom:0;transform:translate(-50%)}.subdivision.sixteenth{opacity:.55;height:8px}.subdivision.eighth{border-color:#64748b;height:15px}.subdivision.beat{border-color:#cbd5e1;height:23px}.rhythm-bar{background:linear-gradient(90deg,#a5b4fc 0%,#818cf8 45%,#818cf833 100%);border-radius:9999px 0 0 9999px;min-width:5px;height:8px;position:absolute;bottom:3px;box-shadow:0 0 9px #818cf840}.rhythm-bar:before{content:"";background:#e0e7ff;border-radius:9999px;width:7px;height:7px;position:absolute;top:50%;left:0;transform:translate(-35%,-50%);box-shadow:0 0 0 2px #0f172a}.rhythm-bar.palm-muted{box-shadow:none;background-image:linear-gradient(90deg,#94a3b8 0,#64748b 12px,#64748b66 20px,#0000 30px);background-repeat:no-repeat;background-size:30px 100%}.icon-button{color:#e2e8f0;background:#1e293b;border:1px solid #334155;border-radius:.5rem;place-items:center;width:2.5rem;height:2.5rem;transition:all .15s;display:grid}.icon-button:hover{border-color:#818cf8}.icon-button.primary{color:#1e1b4b;background:#a5b4fc;border-color:#818cf8}.icon-button[aria-pressed=true]{color:#c7d2fe;background:#3730a3;border-color:#818cf8}.calibration-backdrop{z-index:50;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#020617cc;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.calibration-modal{background:#0f172a;border:1px solid #334155;border-radius:1rem;flex-direction:column;width:min(36rem,100%);max-height:calc(100dvh - 2rem);display:flex;overflow:hidden;box-shadow:0 24px 70px #00000080}.calibration-header{border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.25rem;display:flex}.calibration-eyebrow{color:#a5b4fc;font:500 .65rem var(--font-mono);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.45rem;display:flex}.calibration-header h2{margin:.3rem 0 0;font-size:1.15rem}.calibration-content{gap:1.1rem;padding:1.25rem;display:grid;overflow-y:auto}.calibration-device{color:#94a3b8;font:500 .65rem var(--font-mono);letter-spacing:.08em;text-transform:uppercase;gap:.5rem;display:grid}.calibration-device select{color:#e2e8f0;width:100%;font:500 .875rem var(--font-sans);letter-spacing:0;text-transform:none;background:#1e293b;border:1px solid #334155;border-radius:.5rem;padding:.65rem .75rem}.signal-panel,.detection-log{background:#02061780;border:1px solid #334155;border-radius:.75rem;padding:1rem}.signal-panel-heading,.detection-log-heading,.detection-event{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.signal-panel-heading>span,.detection-log-heading>span:first-child{color:#cbd5e1;font-size:.8rem;font-weight:600}.signal-panel-heading output,.detection-event output{color:#a5b4fc;font:500 .75rem var(--font-mono)}.level-meter{background:repeating-linear-gradient(90deg,#1e293b 0 9%,#334155 9.4% 10%);border-radius:999px;height:.75rem;margin-top:.9rem;position:relative;overflow:hidden}.level-meter b{border-radius:inherit;background:#818cf8;transition:width 70ms linear;position:absolute;inset:0 auto 0 0}.signal-panel p,.detection-empty{color:#94a3b8;margin:.75rem 0 0;font-size:.8rem;line-height:1.45}.calibration-start{background:#02061780;border:1px solid #334155;border-radius:.75rem;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1rem;display:flex}.calibration-start p,.calibration-progress{color:#94a3b8;margin:0;font-size:.8rem;line-height:1.45}.calibration-action{white-space:nowrap;flex:none;align-items:center;gap:.45rem;padding:.55rem .7rem;display:inline-flex}.calibration-progress{color:#c7d2fe;margin-top:.75rem}.calibration-count-in{color:#c7d2fe;font:500 .72rem var(--font-mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;margin-top:.75rem;display:flex}.calibration-count-in>div{gap:.4rem;display:flex}.calibration-count-in b{color:#64748b;border:1px solid #475569;border-radius:50%;place-items:center;width:1.9rem;height:1.9rem;transition:all .12s;display:grid}.calibration-count-in b.active{color:#ecfeff;background:#0891b280;border-color:#67e8f9;transform:scale(1.08);box-shadow:0 0 0 4px #22d3ee20,0 0 14px #22d3ee80}.calibration-result{color:#fda4af;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-top:.85rem;font-size:.78rem;display:flex}.calibration-result.saved{color:#67e8f9}.calibration-result .calibration-action{margin-left:auto}@media (width<=480px){.calibration-start{flex-direction:column;align-items:flex-start}.calibration-result .calibration-action{margin-left:0}}.detector-status{color:#94a3b8;font:500 .65rem var(--font-mono);align-items:center;gap:.35rem;display:inline-flex}.detector-status i{background:#64748b;border-radius:50%;width:.45rem;height:.45rem}.detector-status.active{color:#67e8f9}.detector-status.active i{background:#22d3ee;box-shadow:0 0 0 4px #22d3ee22}.detection-timeline{margin-top:1.25rem}.detection-timeline-axis{color:#64748b;height:1rem;font:.6rem var(--font-mono);position:relative}.detection-timeline-axis span{white-space:nowrap;position:absolute;transform:translate(-50%)}.detection-timeline-axis span:first-child{transform:none}.detection-timeline-axis span:last-child{transform:translate(-100%)}.detection-timeline-track{background:linear-gradient(#1e293b66,#02061740);border-radius:.45rem;height:3.5rem;position:relative;overflow:hidden}.detection-timeline-track>i{border-left:1px solid #334155;position:absolute;top:0;bottom:0;transform:translate(-.5px)}.detection-timeline-track>i:first-child{border-left-color:#475569}.detection-timeline-hit{background:#22d3ee;border-radius:999px 999px 0 0;width:2px;height:72%;position:absolute;bottom:0;transform:translate(-1px);box-shadow:0 0 10px #22d3eeaa}.detection-timeline-hit:before{content:"";background:#a5f3fc;border-radius:50%;width:.45rem;height:.45rem;position:absolute;top:-.25rem;left:50%;transform:translate(-50%)}.measure-editor-backdrop{z-index:40;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#020617cc;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.confirmation-dialog{background:#0f172a;border:1px solid #334155;border-radius:.9rem;width:min(26rem,100%);padding:1.25rem;box-shadow:0 24px 70px #00000080}.confirmation-dialog h2{color:#f8fafc;margin:0;font-size:1rem}.confirmation-dialog p{color:#94a3b8;margin:.6rem 0 1.25rem;font-size:.875rem;line-height:1.45}.confirmation-dialog>div{justify-content:flex-end;gap:.5rem;display:flex}.confirmation-dialog button{color:#e2e8f0;cursor:pointer;background:#1e293b;border:1px solid #475569;border-radius:.45rem;padding:.5rem .8rem}.confirmation-dialog button.confirm-danger{color:#fff;background:#be123c;border-color:#fb7185}.measure-editor{background:#0f172a;border:1px solid #334155;border-radius:1rem;width:100%;overflow:hidden;box-shadow:0 24px 70px #00000080}.measure-editor:not(.embedded),.measure-editor-shell{width:fit-content;max-width:100%}.exercise-settings-modal{background:#0f172a;border:1px solid #334155;border-radius:1rem;flex-direction:column;width:min(60rem,100%);height:min(44rem,100dvh - 2rem);display:flex;overflow:hidden;box-shadow:0 24px 70px #00000080}.measure-editor.embedded{width:100%;box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.measure-editor.embedded .editor-matrix{background:0 0;border:0;padding:1rem 0}.manual-editor-actions{border-top:1px solid #1e293b;margin-top:-.25rem}.settings-tab-bar{border-bottom:1px solid #1e293b;flex:none;justify-content:space-between;align-items:center;height:4.25rem;padding:1rem 1.25rem 0;display:flex;position:relative}.settings-tabs{align-self:flex-end;gap:.25rem;padding:0;display:flex}.settings-tab-bar>.editor-close{position:absolute;top:50%;right:1.25rem;transform:translateY(-50%)}.settings-tabs button{color:#94a3b8;background:0 0;border:0;border-bottom:2px solid #0000;padding:.45rem .65rem;font-size:.8rem;font-weight:600}.settings-tabs button.active{color:#e0e7ff;border-bottom-color:#a5b4fc}.exercise-notation-preview{border-top:1px solid #334155;height:120px;min-height:120px;margin:.5rem 0;padding-top:.35rem;display:flex}.exercise-notation-preview>*{flex:1 1 0;min-width:0}.settings-tab-content{scrollbar-color:#475569 #0f172a;scrollbar-width:thin;flex:1;min-height:0;padding:1.25rem;overflow-y:auto}.settings-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.settings-editor-tab{gap:1rem;display:grid}.settings-action{border-radius:.5rem;justify-self:start;padding:.65rem .85rem;font-size:.8125rem;font-weight:600}.generator-tab{gap:1.25rem;display:grid}.preset-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.preset-grid button{color:#cbd5e1;text-align:left;background:#1e293b;border:1px solid #334155;border-radius:.5rem;grid-template-columns:1.5rem minmax(0,1fr);align-items:center;gap:.45rem;min-height:8rem;padding:.45rem .65rem;transition:all .15s;display:grid}.preset-grid button:hover{background:#273449;border-color:#818cf8}.preset-grid button.selected{background:#312e5c;border-color:#a5b4fc;box-shadow:inset 0 0 0 1px #818cf8}.preset-grid strong{color:#a5b4fc;font:500 .7rem var(--font-mono)}.preset-notation{width:100%;min-width:0;height:7.5rem;display:flex;overflow:hidden}.preset-notation-measure{flex:50%;min-width:0;height:100%;position:relative}.measure-editor-header{justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.measure-editor-header h2{color:#e2e8f0;font:600 .875rem var(--font-sans);margin:0}.editor-close{color:#cbd5e1;background:#1e293b;border:1px solid #334155;border-radius:.5rem;place-items:center;width:2.25rem;height:2.25rem;display:grid}.editor-matrix{--editor-cell-size:min(2.75rem, calc((100vw - 10rem) / 16));background:#02061780;border-top:1px solid #1e293b;border-bottom:1px solid #1e293b;gap:.4rem;padding:1rem 1.25rem;display:grid}@media (height<=700px){.editor-matrix{--editor-cell-size:min(2.35rem, calc((100vw - 10rem) / 16))}}@media (height<=560px){.editor-matrix{--editor-cell-size:min(2rem, calc((100vw - 10rem) / 16))}}.editor-result-row,.editor-state-row{grid-template-columns:5.75rem minmax(0,1fr);align-items:center;gap:.6rem;display:grid}.editor-result-row{align-items:end}.editor-result-track{gap:.2rem;width:max-content;display:grid}.editor-result-track .timeline{grid-column:1/-1;width:100%;margin:1.2rem 0 0}.rhythm-cell.beat-start{border-left-color:#64748b}.editor-row-label{color:#cbd5e1;font:500 .7rem var(--font-sans)}.editor-cells{gap:.2rem;display:grid}.rhythm-cell{aspect-ratio:1;color:#0000;min-width:0;font:600 .7rem var(--font-mono);background:#0f172a;border:1px solid #475569;border-radius:.35rem;place-items:center;transition:transform .12s,border-color .12s,background .12s;display:grid}.rhythm-cell:hover{border-color:#a5b4fc;transform:translateY(-1px)}.rhythm-cell.note.selected{color:#e0e7ff;background:#4f46e540;border-color:#818cf8}.rhythm-cell.mute.selected{color:#e2e8f0;background:#47556980;border-color:#94a3b8;font-size:.55rem}.rhythm-cell.triplet.selected{color:#a5f3fc;background:#0891b230;border-color:#22d3ee}.rhythm-cell.continue.selected{color:#94a3b8;background:#1e293b;border-style:dashed}.rhythm-cell.rest.selected{color:#64748b;background:#0f172a;border-color:#334155}.rhythm-cell.stroke.down{color:#fef3c7;background:#d9770630;border-color:#fbbf24}.rhythm-cell.stroke.up{color:#a5f3fc;background:#0891b230;border-color:#22d3ee}.rhythm-cell.stroke.unset{border-style:dashed}.rhythm-cell:disabled{cursor:not-allowed;opacity:.35}.measure-editor-actions{justify-content:space-between;align-items:center;gap:.75rem;padding:1rem 1.25rem 1.25rem;display:flex}.measure-editor-actions button{border-radius:.5rem;padding:.65rem .85rem;font-size:.8125rem;font-weight:600}.measure-editor-actions>div{gap:.5rem;display:flex}.measure-editor-actions.generator-actions{border-top:1px solid #1e293b;justify-content:flex-end;margin-top:-.25rem}.editor-preview,.editor-cancel{color:#e2e8f0;background:#1e293b;border:1px solid #334155}.editor-preview{align-items:center;gap:.5rem;display:inline-flex}.editor-save{color:#1e1b4b;background:#a5b4fc;border:1px solid #818cf8}@media (width<=1023px){.app-body{grid-template-columns:1fr}.notation-scroll{padding:1.25rem 1rem}}@media (width<=480px){.exercise-comment{flex-direction:column;align-items:stretch}.exercise-comment input{width:100%}.measure-editor-backdrop{padding:.5rem}.editor-matrix{gap:.3rem;padding:.85rem}.editor-result-row,.editor-state-row{grid-template-columns:4.5rem minmax(0,1fr);gap:.4rem}.editor-cells{gap:.2rem}.measure-editor-actions{flex-direction:column;align-items:stretch}.measure-editor-actions>div{width:100%}.measure-editor-actions button{flex:1}.header-control span:not(.tempo-value){display:none}.settings-fields{grid-template-columns:1fr 1fr}.preset-grid{grid-template-columns:1fr}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
