.error-boundary{text-align:center;background-color:var(--status-danger-surface);border:1px solid var(--status-danger-border);border-radius:.5rem;margin:1rem;padding:2rem}.error-boundary h2{color:var(--status-danger-text);margin:0 0 .5rem;font-size:1.25rem}.error-boundary p{color:var(--status-danger-text-deep);margin:0 0 1rem}.error-boundary button{background-color:var(--red-600);color:var(--text-on-accent);cursor:pointer;border:none;border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem}.error-boundary button:hover{background-color:var(--status-danger-hover)}.main-nav{border-bottom:1px solid var(--border-strong)}.main-nav__inner{max-width:var(--layout-max-width);align-items:center;gap:2rem;margin-inline:auto;padding:1rem;display:flex}.nav-brand-container{align-items:center;display:flex}.nav-brand{color:var(--ink-900);font-size:1.5rem;font-weight:600;text-decoration:none}.nav-brand:hover{color:var(--ink-700)}.nav-links{gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.nav-links a{color:var(--ink-400);font-weight:500;text-decoration:none}.nav-links a:hover{color:var(--ink-900)}.nav-dropdown{position:relative}.nav-dropdown__trigger{cursor:pointer}.nav-dropdown__menu{background:var(--surface);border:1px solid var(--border-strong);box-shadow:0 4px 12px color-mix(in srgb, var(--ink-1000) 10%, transparent);z-index:100;border-radius:6px;min-width:200px;margin:0;padding:.5rem 0;list-style:none;display:none;position:absolute;top:100%;left:0}.nav-dropdown:hover .nav-dropdown__menu,.nav-dropdown:focus-within .nav-dropdown__menu{display:block}.nav-dropdown__menu li a{color:var(--text-control);white-space:nowrap;padding:.4rem 1rem;font-weight:400;text-decoration:none;display:block}.nav-dropdown__menu li a:hover{background:var(--surface-sunken);color:var(--ink-900)}.nav-auth{align-items:center;gap:.75rem;margin-left:auto;display:flex}.nav-avatar{border-radius:50%;width:32px;height:32px}.nav-user-name{color:var(--ink-900);font-weight:500}.nav-sign-in,.nav-sign-out{border:1px solid var(--border-control);cursor:pointer;color:var(--ink-400);white-space:nowrap;background:0 0;border-radius:4px;padding:.4rem .8rem;font-weight:500}.nav-sign-in:hover,.nav-sign-out:hover{background:var(--surface-sunken);color:var(--ink-900)}@media (width<=640px){.main-nav__inner{flex-wrap:wrap;row-gap:.5rem;padding:.75rem 1rem}.nav-links{flex-wrap:wrap;flex-basis:100%;order:3;gap:.5rem 1.25rem}}@media (width>=1184px){.main-nav__inner{padding:1rem 0}}.instruments-table__wrapper{overflow-x:auto}.instruments-table{border-collapse:collapse;width:100%;font-size:.875rem}.instruments-table th,.instruments-table td{text-align:left;border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:.75rem 1rem}.instruments-table td:last-child{white-space:normal}.instruments-table__header{color:var(--text-muted);background:var(--surface-sunken);box-shadow:inset 0 -1px 0 var(--border-strong);border-bottom:2px solid #0000;padding:0;font-weight:600}.instruments-table__header:not(:has(.instruments-table__sort)){padding:.75rem 1rem}.instruments-table__header--active{border-bottom-color:var(--link);color:var(--text-primary)}.instruments-table__row-header{font-weight:400}.instruments-table__sort{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.375rem;padding:.75rem 1rem;display:flex}.instruments-table__sort:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}.instruments-table__sort:hover{color:var(--text-primary)}.instruments-table__chevron-slot{width:10px;height:10px;display:inline-flex}.instruments-table__chevron--resting{visibility:hidden;color:var(--text-faint)}.instruments-table__sort:hover .instruments-table__chevron--resting,.instruments-table__sort:focus-visible .instruments-table__chevron--resting{visibility:visible}.instruments-table tbody tr:hover{background:var(--surface-sunken)}.instruments-table a{color:var(--link);text-decoration:none}.instruments-table a:hover{text-decoration:underline}.instruments-table__skip-link{position:absolute;left:-9999px}.instruments-table__skip-link:focus{color:var(--link);margin-bottom:.75rem;display:inline-block;position:static}.instruments-subnav{border-bottom:1px solid var(--border-strong);margin-bottom:1.5rem}.instruments-subnav__list{flex-wrap:wrap;gap:1.5rem;margin:0;padding:0;list-style:none;display:flex}.instruments-subnav__link{color:var(--text-muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem 0;font-size:.9375rem;text-decoration:none;display:inline-block}.instruments-subnav__link:hover{color:var(--text-primary)}.instruments-subnav__link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.instruments-subnav__link--current{color:var(--text-primary);border-bottom-color:var(--link);font-weight:600}.instruments-index{max-width:var(--layout-max-width);margin-inline:auto;padding:2rem 1.5rem}.instruments-index h1{color:var(--ink-900);margin:0 0 1.5rem;font-size:1.75rem;font-weight:600}.category-page{max-width:var(--layout-max-width);margin-inline:auto;padding:2rem 1.5rem}.category-page__eyebrow{letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin:0 0 .25rem;font-size:.8125rem;font-weight:600}.category-page__title{color:var(--text-primary);margin:0 0 1.5rem;font-size:1.75rem;font-weight:600}.category-page__lede{color:var(--text-subtle);margin:-1rem 0 1.5rem}.category-table{border-collapse:collapse;width:100%;font-size:.875rem}.category-table th,.category-table td{text-align:left;border-bottom:1px solid var(--border-strong);padding:.75rem 1rem}.category-table thead th{color:var(--text-muted);background:var(--surface-sunken);font-weight:600}.category-table tbody tr:hover{background:var(--surface-sunken)}.category-table a{color:var(--link);text-decoration:none}.category-table a:hover{text-decoration:underline}.category-page__numeric{text-align:right;font-variant-numeric:tabular-nums}.category-page__section-heading{color:var(--text-primary);margin:2rem 0 .75rem;font-size:1.125rem;font-weight:600}.category-page__group-description{color:var(--text-subtle);margin:0 0 .75rem;font-size:.875rem}.category-page__grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.category-page__card{border:1px solid var(--border-strong);border-radius:6px;flex-direction:column;gap:.125rem;padding:.75rem 1rem;display:flex}.category-page__card:hover{background:var(--surface-sunken)}.category-page__card a{color:var(--link);font-weight:600;text-decoration:none}.category-page__card a:hover{text-decoration:underline}.category-page__count{color:var(--text-faint);font-size:.8125rem}.category-page__meta{grid-template-columns:max-content 1fr;gap:.375rem 1.5rem;margin:0 0 2rem;font-size:.9375rem;display:grid}.category-page__meta dt{color:var(--text-muted);font-weight:600}.category-page__meta dd{margin:0}.category-page__meta a,.category-page__family-list a{color:var(--link);text-decoration:none}.category-page__meta a:hover,.category-page__family-list a:hover{text-decoration:underline}.category-page__family-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.375rem 1.5rem;margin:0 0 2rem;padding:0;font-size:.9375rem;list-style:none;display:grid}.instrument-show{max-width:var(--layout-max-width);margin-inline:auto;padding:2rem 1.5rem}.back-link{color:var(--link);margin-bottom:1rem;text-decoration:none;display:inline-block}.back-link:hover{text-decoration:underline}.instrument-show h1{color:var(--ink-900);margin:0 0 .5rem;font-size:2rem;font-weight:600}.aliases{color:var(--ink-400);margin:0 0 2rem;font-style:italic}.detail-section{margin-bottom:2rem}.detail-section h2{color:var(--ink-700);border-bottom:1px solid var(--border-strong);margin:0 0 1rem;padding-bottom:.5rem;font-size:1.25rem;font-weight:600}.detail-list{grid-template-columns:180px 1fr;gap:.5rem 1rem;margin:0;display:grid}.detail-list dt{color:var(--ink-400);font-weight:500}.detail-list dd{color:var(--ink-900);margin:0}.translations{display:block}.translation-row{grid-template-columns:180px 1fr;gap:.5rem 1rem;margin-bottom:.5rem;display:grid}.tunings-list{margin:0;padding:0;list-style:none}.tunings-list li{margin-bottom:.5rem}.semitones{color:var(--ink-400);margin-left:.5rem;font-size:.875rem}.loading,.error{text-align:center;color:var(--ink-400);padding:2rem}.error{color:var(--status-danger)}.lessons-index{max-width:800px;margin:0 auto;padding:2rem}.lessons-index h1{margin-bottom:1.5rem}.lessons-list{margin:0;padding:0;list-style:none}.lesson-item{border-bottom:1px solid var(--hairline)}.lesson-item:last-child{border-bottom:none}.lesson-link{color:inherit;flex-direction:column;padding:1rem 0;text-decoration:none;transition:background-color .2s;display:flex}.lesson-link:hover{background-color:var(--surface-sunken)}.lesson-title{color:var(--ink-700);font-size:1.25rem;font-weight:500}.lesson-subtitle{color:var(--ink-400);margin-top:.25rem;font-size:.9rem}.pivot-chord-tool{background:linear-gradient(to bottom, var(--slate-950), var(--slate-800));width:fit-content;max-width:100%;box-shadow:var(--panel-shadow);border-radius:.75rem;margin:2rem auto;overflow:hidden}.pivot-chord-tool__header{background:linear-gradient(to bottom, var(--slate-800), var(--slate-950));border-bottom:1px solid var(--slate-700);align-items:baseline;gap:.75rem;padding:1rem 1.5rem;display:flex}.pivot-chord-tool__header:before{content:"";background:radial-gradient(circle at 30% 30%, var(--green-400), var(--green-500));width:.5rem;height:.5rem;box-shadow:0 0 4px var(--green-500), 0 0 8px color-mix(in srgb, var(--green-500) 50%, transparent);border-radius:50%;flex-shrink:0;align-self:center;animation:2s ease-in-out infinite pivot-chord-tool-led-pulse}@keyframes pivot-chord-tool-led-pulse{0%,to{opacity:1}50%{opacity:.7}}.pivot-chord-tool__title{color:var(--slate-100);letter-spacing:-.025em;text-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent);margin:0;font-size:1.5rem;font-weight:700}.pivot-chord-tool__selectors{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-bottom:1px solid var(--slate-700);flex-wrap:wrap;gap:1.5rem;padding:1rem 1.5rem;display:flex}.pivot-chord-tool__selector-group{align-items:center;gap:.5rem;display:flex}.pivot-chord-tool__badge{text-transform:uppercase;letter-spacing:.1em;border-radius:.25rem;padding:.2rem .5rem;font-size:.625rem;font-weight:700}.pivot-chord-tool__badge--origin{color:var(--key-origin);background:color-mix(in srgb, var(--accent) 15%, transparent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent)}.pivot-chord-tool__badge--target{color:var(--key-target);background:color-mix(in srgb, var(--purple-500) 15%, transparent);border:1px solid color-mix(in srgb, var(--purple-500) 30%, transparent)}.pivot-chord-tool__select{appearance:none;background:var(--slate-800);color:var(--slate-100);border:1px solid var(--slate-700);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;border-radius:.25rem;padding:.375rem 2rem .375rem .75rem;font-size:.875rem;font-weight:500;transition:border-color .15s}.pivot-chord-tool__select:hover{border-color:var(--blue-500)}.pivot-chord-tool__select:focus{border-color:var(--blue-500);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.pivot-chord-tool__interval{text-align:center;color:var(--slate-400);background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-bottom:1px solid var(--slate-700);padding:.75rem 1.5rem;font-size:1rem;font-weight:600}.pivot-chord-tool__table-wrapper{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));overflow-x:auto}.pivot-chord-tool__table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.875rem}.pivot-chord-tool__key-header,.pivot-chord-tool__col-header{text-align:center;color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--gray-700);background:linear-gradient(to bottom, var(--gray-800), var(--gray-900));padding:.5rem .75rem;font-size:.75rem;font-weight:600}.pivot-chord-tool__key-header{text-align:left}.pivot-chord-tool__col-header--pivot{color:var(--blue-400)}.pivot-chord-tool__key-cell{text-align:left;background:color-mix(in srgb, var(--gray-800) 50%, transparent);border-bottom:1px solid var(--gray-700);padding:.5rem .75rem}.pivot-chord-tool__key-label{text-transform:uppercase;letter-spacing:.1em;color:var(--slate-500);font-size:.625rem;font-weight:700;display:block}.pivot-chord-tool__key-name{color:var(--gray-200);font-weight:500;display:block}.pivot-chord-tool__chord-cell{text-align:center;border-bottom:1px solid var(--gray-700);vertical-align:middle;padding:.5rem .75rem}.pivot-chord-tool__chord-cell--empty{background:0 0}.pivot-chord-tool__chord-cell--pivot{background:color-mix(in srgb, var(--accent) 15%, transparent);border-left:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-right:1px solid color-mix(in srgb, var(--accent) 30%, transparent)}.pivot-chord-tool__chord-name{color:var(--slate-100);font-size:.875rem;font-weight:600;display:block}.pivot-chord-tool__chord-roman{color:var(--slate-400);font-size:.75rem;display:block}.pivot-chord-tool__summary{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-top:1px solid var(--gray-700);padding:1rem 1.5rem}.pivot-chord-tool__summary-title{color:var(--slate-100);margin:0 0 .75rem;font-size:.875rem;font-weight:600}.pivot-chord-tool__pills{flex-wrap:wrap;gap:.5rem;display:flex}.pivot-chord-tool__pill{color:var(--blue-400);background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:500}.pivot-chord-tool__error{color:var(--red-400);background:color-mix(in srgb, var(--red-400) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--red-400) 20%, transparent);padding:1rem 1.5rem;font-size:.875rem}.pivot-chord-tool__table tbody tr:hover{background:color-mix(in srgb, var(--accent) 5%, transparent)}@media (width>=1024px){.pivot-chord-tool__title{font-size:1.75rem}.pivot-chord-tool__badge{padding:.25rem .625rem;font-size:.75rem}.pivot-chord-tool__select{padding:.5rem 2.25rem .5rem .875rem;font-size:1rem}.pivot-chord-tool__interval{padding:1rem 1.5rem;font-size:1.125rem}.pivot-chord-tool__table{font-size:1rem}.pivot-chord-tool__key-header,.pivot-chord-tool__col-header{padding:.75rem 1rem;font-size:.875rem}.pivot-chord-tool__key-cell{padding:.75rem 1rem}.pivot-chord-tool__key-label{font-size:.75rem}.pivot-chord-tool__key-name{font-size:1.0625rem}.pivot-chord-tool__chord-cell{padding:.75rem 1rem}.pivot-chord-tool__chord-name{font-size:1rem}.pivot-chord-tool__chord-roman{font-size:.875rem}.pivot-chord-tool__summary-title{font-size:1rem}.pivot-chord-tool__pill{padding:.375rem 1rem;font-size:.875rem}}@media (width<=768px){.pivot-chord-tool{border-radius:.5rem;margin:1rem .5rem}.pivot-chord-tool__header{gap:.5rem;padding:.75rem 1rem}.pivot-chord-tool__title{font-size:1.25rem}.pivot-chord-tool__selectors{flex-direction:column;gap:.75rem;padding:.75rem 1rem}.pivot-chord-tool__table{font-size:.75rem}.pivot-chord-tool__key-header,.pivot-chord-tool__col-header,.pivot-chord-tool__chord-cell,.pivot-chord-tool__key-cell{padding:.375rem .5rem}.pivot-chord-tool__summary{padding:.75rem 1rem}}@media (width<=480px){.pivot-chord-tool__header{flex-wrap:wrap}.pivot-chord-tool__table{font-size:.6875rem}.pivot-chord-tool__key-header,.pivot-chord-tool__col-header,.pivot-chord-tool__chord-cell,.pivot-chord-tool__key-cell{padding:.25rem .375rem}.pivot-chord-tool__select{padding:.25rem 1.5rem .25rem .5rem;font-size:.75rem}.pivot-chord-tool__summary{padding:.75rem}}.circle-of-fifths{background:linear-gradient(to bottom, var(--slate-950), var(--slate-800));max-width:clamp(960px,50vw + 480px,1200px);box-shadow:var(--panel-shadow);border-radius:.75rem;flex-direction:row;align-items:flex-start;gap:0;margin:2rem auto;display:flex;overflow:hidden}.circle-of-fifths--loading,.circle-of-fifths--error{flex-direction:column;justify-content:center;align-items:center;min-height:320px;padding:2rem;display:flex}.circle-of-fifths__spinner{border:3px solid var(--slate-700);border-top-color:var(--accent);border-radius:50%;width:2rem;height:2rem;margin-bottom:1rem;animation:.8s linear infinite circle-of-fifths-spin}@keyframes circle-of-fifths-spin{to{transform:rotate(360deg)}}.circle-of-fifths__loading-text{color:var(--slate-400);font-size:.875rem}.circle-of-fifths__error-text{color:var(--red-400);background:color-mix(in srgb, var(--red-400) 10%, transparent);border:1px solid color-mix(in srgb, var(--red-400) 20%, transparent);border-radius:.5rem;padding:.75rem 1.25rem;font-size:.875rem}.circle-of-fifths__diagram{flex-direction:column;flex:auto;justify-content:center;align-items:center;min-width:0;margin:0 auto;padding:1.5rem;transition:opacity .15s .15s;display:flex}.circle-of-fifths__diagram[aria-busy=true]{opacity:.5;pointer-events:none}.circle-of-fifths__bracket-heading{text-align:center;color:var(--slate-300);letter-spacing:.02em;margin:0 0 .5rem;font-size:1.75rem;font-weight:600}.circle-of-fifths__svg{width:100%;max-width:clamp(560px,41.7vw + 159.68px,760px);height:auto}.circle-of-fifths__sector{transition:opacity .2s}.circle-of-fifths__sector--dimmed{opacity:.5}.circle-of-fifths__sector:focus{outline:none}.circle-of-fifths__sector:focus-visible path:first-child{stroke:var(--amber-400);stroke-width:3px}.circle-of-fifths__minor-group:focus{outline:none}.circle-of-fifths__minor-group:focus-visible .circle-of-fifths__minor-label{fill:var(--amber-400);text-decoration:underline}.circle-of-fifths__major-label{fill:var(--slate-100);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:18px;font-weight:700}.circle-of-fifths__enharmonic-label{fill:var(--slate-400);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:14px;font-weight:500}.circle-of-fifths__minor-group{transition:opacity .2s}.circle-of-fifths__minor-label{fill:var(--slate-400);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:13px;font-weight:400}.circle-of-fifths__minor-enharmonic{fill:var(--slate-400);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:400}.circle-of-fifths__degree-label{fill:var(--slate-400);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:16px;font-weight:500}.circle-of-fifths__degree-label--tonic{font-weight:700}.circle-of-fifths__key-sig text{fill:var(--text-on-accent);pointer-events:none;-webkit-user-select:none;user-select:none}.circle-of-fifths__bracket{transition:transform .3s ease-out}.circle-of-fifths__bracket:focus{outline:none}.circle-of-fifths__bracket:focus-visible path{filter:drop-shadow(0 0 6px var(--amber-400));stroke:var(--amber-400)!important}.circle-of-fifths__controls{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-left:1px solid var(--slate-700);border-bottom:1px solid var(--slate-700);border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem;flex-direction:column;flex:0 0 clamp(260px,8.3vw + 180.32px,300px);gap:1rem;min-height:100%;padding:1.5rem;display:flex}.circle-of-fifths__sr-heading,.circle-of-fifths__announcer{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.circle-of-fifths__selectors{flex-direction:column;gap:.75rem;display:flex}.circle-of-fifths__selector-group{flex-direction:column;gap:.375rem;display:flex}.circle-of-fifths__selector-label{text-transform:uppercase;letter-spacing:.1em;color:var(--slate-300);font-size:.625rem;font-weight:700}.circle-of-fifths__segmented-control{border:1px solid var(--slate-700);border-radius:.375rem;display:flex;overflow:hidden}.circle-of-fifths__segment{color:var(--slate-400);cursor:pointer;background:0 0;border:none;flex:1;padding:.375rem .75rem;font-size:.75rem;font-weight:600;transition:all .15s}.circle-of-fifths__segment:first-child{border-right:1px solid var(--slate-700)}.circle-of-fifths__segment:hover{color:var(--slate-200);background:color-mix(in srgb, var(--accent) 10%, transparent)}.circle-of-fifths__segment:focus-visible{outline:2px solid var(--amber-400);outline-offset:-2px;z-index:1}.circle-of-fifths__segment--active{color:var(--text-on-accent);background:var(--accent)}.circle-of-fifths__segment--active:hover{background:var(--accent-hover)}.circle-of-fifths__select{appearance:none;background:var(--slate-800);width:100%;color:var(--slate-100);border:1px solid var(--slate-700);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;border-radius:.25rem;padding:.375rem 2rem .375rem .75rem;font-size:.875rem;font-weight:500;transition:border-color .15s}.circle-of-fifths__select:hover{border-color:var(--accent)}.circle-of-fifths__select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.circle-of-fifths__layers{flex-direction:column;gap:.5rem;display:flex}.circle-of-fifths__layers-label{text-transform:uppercase;letter-spacing:.1em;color:var(--slate-300);font-size:.625rem;font-weight:700}.circle-of-fifths__toggles{flex-direction:column;gap:.5rem;display:flex}.circle-of-fifths__toggle{cursor:pointer;align-items:center;gap:.5rem;display:flex}.circle-of-fifths__toggle-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.circle-of-fifths__toggle-track{background:var(--slate-700);border:1px solid var(--slate-600);border-radius:9999px;flex-shrink:0;width:2rem;height:1.125rem;transition:all .2s;position:relative}.circle-of-fifths__toggle-track--active{background:var(--accent);border-color:var(--accent-muted)}.circle-of-fifths__toggle-thumb{background:var(--slate-200);width:.875rem;height:.875rem;box-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent);border-radius:50%;transition:transform .2s;position:absolute;top:1px;left:1px}.circle-of-fifths__toggle-track--active .circle-of-fifths__toggle-thumb{transform:translate(.875rem)}.circle-of-fifths__toggle-input:focus-visible+.circle-of-fifths__toggle-track{box-shadow:0 0 0 3px var(--amber-400)}.circle-of-fifths__toggle-label{color:var(--slate-400);font-size:.8125rem;font-weight:500}@media (width<=768px){.circle-of-fifths{flex-direction:column;align-items:stretch}.circle-of-fifths__diagram{padding:1rem}.circle-of-fifths__svg{min-width:400px;min-height:400px}.circle-of-fifths__controls{border-bottom:none;border-left:none;border-top:1px solid var(--slate-700);border-bottom-right-radius:0;border-bottom-left-radius:0;flex-flow:wrap;flex:none;align-items:flex-start;gap:1.5rem;width:100%}.circle-of-fifths__selectors{flex-flow:wrap;gap:1rem}.circle-of-fifths__selector-group{min-width:120px}.circle-of-fifths__layers{flex-direction:row;align-items:center;gap:1rem}.circle-of-fifths__toggles{flex-direction:row;gap:1rem}}@media (width<=480px){.circle-of-fifths{border-radius:.5rem;margin:1rem .5rem}.circle-of-fifths__diagram{padding:.5rem}.circle-of-fifths__svg{min-width:300px;max-width:100%;min-height:300px}.circle-of-fifths__controls{flex-direction:column;gap:1rem;padding:1rem}.circle-of-fifths__selectors{flex-direction:column;gap:.75rem}.circle-of-fifths__toggles{flex-direction:column;gap:.5rem}.circle-of-fifths__segment{padding:.25rem .5rem;font-size:.6875rem}.circle-of-fifths__select{padding:.25rem 1.5rem .25rem .5rem;font-size:.75rem}}.mdx-aside{border-left:3px solid var(--accent-muted);background-color:var(--surface-sunken);border-radius:4px;padding:1rem 1.25rem}.mdx-aside__title{color:var(--text-primary);margin:0 0 .5rem;font-size:.95rem;font-weight:600}.mdx-aside__body>:last-child,.mdx-aside__body>:last-child>:last-child{margin-bottom:0}.mdx-aside__body li{margin-bottom:.35rem}.mdx-embed{max-width:800px;margin-left:auto;margin-right:auto}.content-figure{margin:0 0 1rem}.content-figure p{margin:0}.content-figure img{width:100%;height:auto;display:block}.content-figure figcaption{color:var(--ink-500);margin-top:.4rem;font-size:.85rem;line-height:1.4}@media (width>=960px){.content-figure{float:right;width:min(50%,320px);margin:.3rem 0 1rem 1.5rem}}.state-badge{border-radius:50%;justify-content:center;align-items:center;width:1rem;height:1rem;font-size:.7rem;line-height:1;display:inline-flex}.state-badge--done{background:var(--progress-done);color:var(--text-on-accent)}.state-badge--current{background:var(--progress-current);color:var(--text-on-accent)}.state-badge--upcoming{box-shadow:inset 0 0 0 1px var(--progress-track);background:0 0}.state-badge__label,.course-outline__sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.course-outline a:focus-visible,.course-outline button:focus-visible{outline:3px solid var(--blue-600);outline-offset:2px}.course-outline__nav{font-size:.9rem}.course-outline__units{margin:0;padding:0;list-style:none}.course-outline__unit{padding:0 0 .75rem;position:relative}.course-outline__unit:before{content:"";background:var(--progress-track);width:2px;transition:background-color .2s;position:absolute;top:1.4rem;bottom:-.1rem;left:.5rem}.course-outline__unit:last-child:before{display:none}.course-outline__unit--done:before{background:var(--progress-done)}.course-outline__unit-row{align-items:flex-start;gap:.5rem;display:flex}.course-outline__spine{z-index:1;flex:none;margin-top:.15rem;display:inline-flex;position:relative}.course-outline__unit-link{min-width:0;color:inherit;border-radius:4px;flex-direction:column;flex:auto;padding:.15rem .25rem;text-decoration:none;display:flex}.course-outline__unit-link:hover{background:var(--surface-sunken)}.course-outline__unit-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-size:.7rem}.course-outline__unit-name{color:var(--ink-700);font-weight:600}.course-outline__unit--upcoming .course-outline__unit-name{color:var(--text-faint)}.course-outline__toggle{cursor:pointer;min-width:24px;min-height:24px;color:var(--text-faint);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:.25rem;line-height:1;display:inline-flex}.course-outline__toggle:hover{background:var(--surface-sunken);border-radius:4px}.course-outline__toggle-glyph{font-size:.75rem;transition:transform .2s;display:inline-block}.course-outline__toggle-glyph--expanded{transform:rotate(90deg)}.course-outline__count{color:var(--text-faint);margin:.25rem 0 0 1.75rem;font-size:.75rem;display:block}.course-outline__items{flex-direction:column;gap:.15rem;margin:.35rem 0 0 1.75rem;padding:0;list-style:none;display:flex}.course-outline__items[hidden]{display:none}.course-outline__item-link{color:inherit;border-radius:4px;align-items:center;gap:.5rem;padding:.3rem .25rem;text-decoration:none;display:flex}.course-outline__item-link:hover{background:var(--surface-sunken)}.course-outline__item-link[aria-current=page]{background:var(--progress-current-bg)}.course-outline__item-state{flex:none;display:inline-flex}.course-outline__badge{text-transform:uppercase;letter-spacing:.03em;border-radius:4px;flex:none;padding:.1rem .4rem;font-size:.65rem}.course-outline__badge--lesson{color:var(--badge-lesson-text);background:var(--badge-lesson-bg)}.course-outline__badge--exercise{color:var(--badge-exercise-text);background:var(--badge-exercise-bg)}.course-outline__item-name{min-width:0;color:var(--ink-700);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.course-outline{flex:none;align-self:flex-start;position:sticky;top:1.5rem}.course-outline--open{width:300px;max-height:calc(100vh - 3rem);overflow-y:auto}.course-outline--collapsed{width:auto}.course-outline__header{justify-content:space-between;align-items:center;gap:.5rem;min-height:1.9rem;display:flex}.course-outline__header-title{color:var(--ink-700);font-size:.9rem;font-weight:600}.course-outline__panel-toggle{background:var(--surface);border:1px solid var(--border-control);min-width:1.9rem;height:1.9rem;color:var(--text-control);cursor:pointer;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0 .4rem;font-size:1rem;line-height:1;display:inline-flex}.course-outline__panel-toggle:hover{background:var(--surface-sunken)}.course-outline__nav-wrap{margin-top:.5rem}@media (width<=767px){.course-outline{position:static}.course-outline--open{width:100%;max-height:none;overflow:visible}}@media (prefers-reduced-motion:reduce){.course-outline__unit:before,.course-outline__toggle-glyph{transition:none}}.course-layout{align-items:flex-start;gap:2rem;max-width:1152px;margin:0 auto;display:flex}.course-layout--with-rail{justify-content:center;max-width:1440px}.course-layout--with-rail .course-layout__main{max-width:1104px}.course-layout__content{min-width:0}.course-layout__rail{margin-top:2rem;font-size:.875rem;line-height:1.5}@container course-main (width>=1104px){.course-layout__split{align-items:flex-start;gap:2rem;display:flex}.course-layout__split>.course-layout__content{flex:800px;max-width:800px}.course-layout__split>.course-layout__rail{flex:0 0 17rem;margin-top:0}}.course-layout__main{flex:900px;min-width:0;container:course-main/inline-size}@media (width<=767px){.course-layout{flex-direction:column;gap:.75rem}.course-layout__main{flex:auto;width:100%}}.unit-item-nav{border-top:1px solid var(--hairline);justify-content:space-between;gap:1rem;max-width:800px;margin:2rem auto 0;padding-top:1.5rem;display:flex}.unit-item-nav-previous,.unit-item-nav-next{flex:1}.unit-item-nav-next{text-align:right}.unit-item-nav-link{color:inherit;flex-direction:column;gap:.25rem;padding:.5rem 0;text-decoration:none;display:inline-flex}.unit-item-nav-link:hover .unit-item-nav-direction{text-decoration:underline}.unit-item-nav-direction{color:var(--link);font-size:.875rem;font-weight:500}.unit-item-nav-name{color:var(--ink-400);font-size:.8rem}.lesson-show{padding:2rem}.lesson-breadcrumb,.lesson-header,.lesson-content{max-width:800px;margin-left:auto;margin-right:auto}.lesson-breadcrumb{align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.9rem;display:flex}.lesson-breadcrumb a{color:var(--text-muted);text-decoration:none}.lesson-breadcrumb a:hover{color:var(--text-body);text-decoration:underline}.breadcrumb-separator{color:var(--text-faint)}.breadcrumb-unit{color:var(--text-muted)}.breadcrumb-current{color:var(--text-body);font-weight:500}.lesson-header{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:1rem}.lesson-header .lesson-subtitle{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;font-size:.9rem;display:block}.lesson-header .lesson-title{margin:0;font-size:2rem}.lesson-content{line-height:1.7;display:flow-root}.lesson-content>:first-child{margin-top:0}.lesson-content>:last-child{margin-bottom:0}.lesson-content h2,.lesson-content h3{clear:both}.lesson-content h2{margin-top:2rem;margin-bottom:1rem;font-size:1.5rem}.lesson-content h3{margin-top:1.5rem;margin-bottom:.75rem;font-size:1.25rem}.lesson-content p{margin-bottom:1rem}.lesson-content ul,.lesson-content ol{margin-bottom:1rem;padding-left:1.5rem}.lesson-content li{margin-bottom:.5rem}.lesson-content blockquote{border-left:4px solid var(--border-strong);color:var(--text-subtle);margin:1.5rem 0;padding:.5rem 1rem;font-style:italic}.lesson-content hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.lesson-progress-bar{border-top:1px solid var(--border);max-width:800px;margin:2rem auto 0;padding-top:1.5rem}.lesson-completed-badge{color:var(--progress-done);background-color:var(--progress-done-bg);border-radius:4px;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;display:inline-flex}.lesson-mark-complete-btn{border:1px solid var(--progress-done);background-color:var(--surface);color:var(--progress-done);cursor:pointer;border-radius:4px;padding:.375rem .75rem;font-size:.875rem;transition:background-color .2s,color .2s}.lesson-mark-complete-btn:hover:not(:disabled){background-color:var(--progress-done);color:var(--text-on-accent)}.lesson-mark-complete-btn:disabled{opacity:.6;cursor:not-allowed}.courses-index{max-width:800px;margin:0 auto;padding:2rem}.courses-index h1{margin-bottom:1.5rem}.courses-list{margin:0;padding:0;list-style:none}.course-item{border-bottom:1px solid var(--hairline)}.course-item:last-child{border-bottom:none}.course-link{color:inherit;flex-direction:column;padding:1rem 0;text-decoration:none;transition:background-color .2s;display:flex}.course-link:hover{background-color:var(--surface-sunken)}.course-name{color:var(--ink-700);font-size:1.25rem;font-weight:500}.course-subtitle{color:var(--ink-400);margin-top:.25rem;font-size:.9rem}.course-show{margin:0 auto;padding:1rem}@media screen and (width>=calc(800px + 4rem)){.course-show{padding:2rem}}.course-details{margin-block-end:.5rem}.course-details .course-subtitle{color:var(--ink-400);margin-block-end:.5rem;font-size:.9rem;display:block}.course-name{margin:0 0 1rem;font-size:1.75rem}.course-description{color:var(--ink-500);line-height:1.6}.unit-show{max-width:1180px;margin:0 auto;padding:2rem}.unit-breadcrumb{align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.9rem;display:flex}.unit-breadcrumb a{color:var(--ink-400);text-decoration:none}.unit-breadcrumb a:hover{color:var(--ink-700);text-decoration:underline}.unit-breadcrumb .breadcrumb-separator{color:var(--text-muted)}.unit-breadcrumb .breadcrumb-current{color:var(--ink-700);font-weight:500}.unit-header{margin-bottom:2rem}.unit-header .unit-subtitle{color:var(--ink-400);margin-bottom:.5rem;font-size:.9rem;display:block}.unit-name{margin:0 0 1rem}.unit-description{color:var(--ink-500);line-height:1.6}.unit-items{border:1px solid var(--hairline);border-radius:8px;margin:0;padding:0;list-style:none}.unit-item{border-bottom:1px solid var(--border)}.unit-item:last-child{border-bottom:none}.unit-item .item-link{color:inherit;align-items:center;gap:1rem;padding:1rem;text-decoration:none;transition:background-color .2s;display:flex}.unit-item .item-link:hover{background-color:var(--surface-sunken)}.unit-item .item-number{color:var(--text-muted);text-align:right;min-width:1.5em;font-size:.85rem}.unit-item .item-type{text-transform:uppercase;text-align:center;border-radius:4px;min-width:60px;padding:.25rem .5rem;font-size:.75rem}.unit-item .item-text{flex-direction:column;gap:.15rem;min-width:0;display:flex}.unit-item .item-name{color:var(--ink-700);font-size:1rem}.unit-item .item-summary{color:var(--text-subtle);font-size:.875rem;line-height:1.4}.item-completed{color:var(--progress-done);margin-left:auto;font-size:.8125rem;font-weight:600}.modal{background:var(--tool-bg);width:min(96vw,1400px);max-width:none;height:min(92dvh,900px);max-height:none;color:var(--tool-text);box-shadow:0 1.5rem 3rem color-mix(in srgb, var(--ink-1000) 45%, transparent);border:none;border-radius:.75rem;padding:0;overflow:hidden}.modal[open]{flex-direction:column;display:flex}.modal::backdrop{--overlay-scrim:#0000008c;background:var(--overlay-scrim)}.modal__header{background:var(--tool-surface);border-bottom:1px solid var(--tool-border);flex:none;align-items:flex-start;gap:1rem;padding:.75rem 1rem;display:flex}.modal__heading{flex:auto;min-width:0}.modal__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--tool-text-muted);margin:0 0 .15rem;font-size:.7rem;font-weight:600}.modal__title{color:var(--tool-text);margin:0;font-size:1.25rem;line-height:1.3}.modal__title:focus-visible{outline:2px solid var(--blue-400);outline-offset:4px;border-radius:.125rem}.modal__note{color:var(--tool-text-muted);flex:0 auto;align-self:center;margin:0;font-size:.8rem}.modal__close{min-width:44px;min-height:44px;color:var(--tool-text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.375rem;flex:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:inline-flex}.modal__close:hover{background:var(--tool-surface-raised);color:var(--tool-text)}.modal__close:focus-visible{outline:2px solid var(--blue-400);outline-offset:2px}.modal__body{flex-direction:column;flex:auto;min-height:0;padding:1rem;display:flex;overflow:auto}@media (width<=767px){.modal{border-radius:0;width:100dvw;max-width:100dvw;height:100dvh;margin:0}.modal__header{flex-wrap:wrap}.modal__note{flex:1 0 100%;order:3;align-self:flex-start}}.modal[open]{opacity:1;transition:opacity .14s ease-out,translate .14s ease-out;translate:0}.modal[open]::backdrop{opacity:1;transition:opacity .14s ease-out}@starting-style{.modal[open]{opacity:0;translate:0 .5rem}.modal[open]::backdrop{opacity:0}}@media (prefers-reduced-motion:reduce){.modal[open],.modal[open]::backdrop{transition:none}}.exercise-score-badge{letter-spacing:.01em;border-radius:6px;align-items:center;gap:.375rem;padding:.3rem .75rem;font-size:.8125rem;font-weight:700;display:inline-flex}.exercise-score-badge__tier{opacity:.8;font-size:.75rem;font-weight:500}.exercise-score-badge.score-high{color:var(--status-success-text);background-color:var(--status-success-bg);border:1px solid var(--status-success-border)}.exercise-score-badge.score-mid{color:var(--status-warning-text);background-color:var(--status-warning-bg);border:1px solid var(--status-warning-border)}.exercise-score-badge.score-low{color:var(--status-danger-text);background-color:var(--status-danger-bg);border:1px solid var(--status-danger-border)}.exercise-card{max-width:800px;margin:1.5rem auto;position:relative}.exercise-card__trigger{box-sizing:border-box;width:100%;font:inherit;text-align:left;color:inherit;background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;border-left:3px solid var(--accent);box-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 5%, transparent);border-radius:8px;flex-direction:column;align-items:flex-start;gap:.25rem;margin:0;padding:1rem 1.25rem;transition:background-color .18s,box-shadow .18s;display:flex}.exercise-card__trigger:hover{background-color:var(--surface-sunken);box-shadow:0 2px 8px color-mix(in srgb, var(--ink-1000) 8%, transparent)}.exercise-card__trigger:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.exercise-card__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:600}.exercise-card__title{color:var(--text-primary);font-size:1rem;font-weight:600;line-height:1.35}.exercise-card__summary{color:var(--text-subtle);font-size:.875rem;line-height:1.4}.exercise-card__status{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.exercise-card__completed{color:var(--progress-done);font-size:.8125rem;font-weight:600}.exercise-card__action{color:var(--link);margin-top:.35rem;font-size:.875rem;font-weight:600}.exercise-card__trigger:hover .exercise-card__action{text-decoration:underline}.exercise-card__caveat{color:var(--text-muted);font-size:.8125rem;display:none}@media (width<=640px){.exercise-card__caveat{display:block}}@media (prefers-reduced-motion:reduce){.exercise-card__trigger{transition:none}}.piano-roll-time-ruler{background:var(--tool-950);border-bottom:1px solid var(--ink-700);-webkit-user-select:none;user-select:none;cursor:pointer;z-index:3;flex-shrink:0;display:flex;position:sticky;top:0}.piano-roll-time-ruler:focus{outline:none}.time-ruler-spacer{background:var(--tool-950);border-right:1px solid var(--ink-700);z-index:4;flex-shrink:0;position:sticky;left:0}.time-ruler-markers{flex-shrink:0;position:relative}.time-ruler-marker{box-sizing:border-box;height:100%;position:absolute;top:0}.time-ruler-marker--measure{border-left:2px solid var(--tool-rule-strong);background:color-mix(in srgb, var(--tool-rule-strong) 10%, transparent)}.time-ruler-marker--beat{border-left:1px solid var(--tool-border-subtle)}.time-ruler-marker--subdivision{border-left:1px solid var(--tool-800)}.time-ruler-label{color:var(--tool-text-muted);padding:4px 6px;font-family:monospace;font-size:11px;font-weight:600;display:block}.time-ruler-playhead{background:var(--green-500);pointer-events:none;z-index:10;width:2px;height:100%;position:absolute;top:0}.piano-roll-pitch-labels{background:var(--tool-950);border-right:1px solid var(--ink-700);-webkit-user-select:none;user-select:none;z-index:2;flex-direction:column;flex-shrink:0;display:flex;position:sticky;left:0}.pitch-label{--pitch-label-bg:var(--tool-850);cursor:pointer;background:var(--pitch-label-bg);border-bottom:1px solid var(--tool-800);justify-content:flex-end;align-items:center;padding-right:8px;font-family:ui-monospace,Menlo,Consolas,Segoe UI Symbol,Apple Symbols,Noto Music,monospace;font-size:11px;font-weight:700;transition:background-color .1s;display:flex}.pitch-label:hover{background-color:color-mix(in srgb, var(--indigo-500) 20%, var(--pitch-label-bg))}.pitch-label:focus{background-color:color-mix(in srgb, var(--indigo-500) 30%, var(--pitch-label-bg));outline:none}.pitch-label--white{color:var(--tool-text-neutral)}.pitch-label--black{--pitch-label-bg:var(--tool-bg);color:var(--pitch-label-black-text)}.pitch-label--octave-start{border-bottom:2px solid var(--tool-rule-strong)}.pitch-label-text{font-weight:500}.pitch-label--tonic{--pitch-label-bg:var(--tonic-label-bg);box-shadow:inset 4px 0 0 var(--tonic-accent);color:var(--tonic-label-text)}.pitch-label--tonic .pitch-label-text{font-weight:700}.piano-roll-grid{cursor:crosshair;position:relative;overflow:hidden}.piano-roll-grid-rows{position:absolute;inset:0}.piano-roll-grid-row{box-sizing:border-box;border-bottom:1px solid var(--gray-300);width:100%}.piano-roll-grid-row--white{background:var(--roll-row-white)}.piano-roll-grid-row--black{background:var(--roll-row-black)}.piano-roll-grid-row--octave-start{border-bottom:1px solid var(--blue-500)}.piano-roll-grid-row--chromatic.piano-roll-grid-row--white{background:var(--roll-row-white-dim)}.piano-roll-grid-row--chromatic.piano-roll-grid-row--black{background:var(--roll-row-black-dim)}.piano-roll-grid-row--tonic.piano-roll-grid-row--white{background:var(--tonic-row)}.piano-roll-grid-row--tonic.piano-roll-grid-row--black{background:var(--tonic-row-black)}.piano-roll-grid-lines{pointer-events:none;position:absolute;inset:0}.piano-roll-grid-line{background:var(--gray-300);width:1px;position:absolute;top:0;bottom:0}.piano-roll-grid-line--measure{background:var(--gray-500);width:2px}.piano-roll-grid-line--beat{background:var(--gray-400)}.piano-roll-grid-line--end{background:var(--gray-700);width:4px}.piano-roll-notes-layer{pointer-events:none;contain:layout style;position:absolute;inset:0}.piano-roll-note{cursor:pointer;pointer-events:auto;contain:layout style;border-radius:3px;margin:1px;transition:opacity .1s,box-shadow .1s;position:absolute}.piano-roll-note:hover{opacity:.9}.piano-roll-note:focus{outline:none}.piano-roll-note:focus-visible{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--ring-guard-focus);outline:none}.piano-roll-note--voice-0{background:linear-gradient(to bottom, var(--blue-500), var(--voice-0-fill));border:1px solid var(--voice-0-border)}.piano-roll-note--voice-1{background:linear-gradient(to bottom, var(--green-500), var(--voice-1-fill));border:1px solid var(--voice-1-border)}.piano-roll-note--selected{box-shadow:0 0 0 2px var(--selection-ring), 0 0 8px color-mix(in srgb, var(--selection-ring) 50%, transparent)}.piano-roll-note--selected.piano-roll-note--voice-0{background:linear-gradient(to bottom, var(--blue-400), var(--blue-500))}.piano-roll-note--selected.piano-roll-note--voice-1{background:linear-gradient(to bottom, var(--green-400), var(--green-500))}.piano-roll-note--playing{box-shadow:0 0 0 2px var(--ink-000), 0 0 12px color-mix(in srgb, var(--ink-000) 60%, transparent);animation:.3s ease-out note-pulse}.piano-roll-note--playing.piano-roll-note--voice-0{background:linear-gradient(to bottom, var(--voice-0-playing), var(--blue-400))}.piano-roll-note--playing.piano-roll-note--voice-1{background:linear-gradient(to bottom, var(--voice-1-playing), var(--green-400))}@keyframes note-pulse{0%{transform:scale(1.1)}to{transform:scale(1)}}.piano-roll-note-handle{pointer-events:auto;background:0 0;width:8px;position:absolute;top:0;bottom:0}.piano-roll-note-handle--start{cursor:ew-resize;border-radius:3px 0 0 3px;left:0}.piano-roll-note-handle--end{cursor:ew-resize;border-radius:0 3px 3px 0;right:0}.piano-roll-note-handle:hover{background:color-mix(in srgb, var(--ink-000) 20%, transparent)}.piano-roll-note--preview{background:color-mix(in srgb, var(--gesture-preview) 50%, transparent);border:2px dashed var(--gesture-preview);pointer-events:none}.piano-roll-marquee{background:color-mix(in srgb, var(--gesture-preview) 15%, transparent);border:1px solid var(--gesture-preview);pointer-events:none;z-index:30;position:absolute}.piano-roll-interval-labels-layer{pointer-events:none;z-index:15;position:absolute;inset:0}.piano-roll-interval-label{background:color-mix(in srgb, var(--ink-000) 90%, transparent);border:1px solid var(--gray-400);color:var(--gray-700);white-space:nowrap;pointer-events:none;border-radius:4px;padding:1px 5px;font-size:11px;font-weight:600;position:absolute;transform:translate(-50%,-50%)}.piano-roll-interval-label--flagged{background:color-mix(in srgb, var(--color-warning) 15%, transparent);border:2px solid var(--color-warning);color:var(--color-warning)}.piano-roll-note--flagged{border:2px dashed var(--surface);box-shadow:0 0 0 2px var(--color-warning), 0 0 0 3px var(--ring-guard-warning), 0 0 8px color-mix(in srgb, var(--color-warning) 60%, transparent)}.piano-roll-playhead{background:var(--green-500);pointer-events:none;z-index:20;width:2px;box-shadow:0 0 4px color-mix(in srgb, var(--green-500) 50%, transparent);position:absolute;top:0;bottom:0}.piano-roll-grid--dragging .piano-roll-note{transition:none}.piano-roll-grid--dragging .piano-roll-note--selected{box-shadow:0 0 0 2px var(--selection-ring)}.piano-roll-grid--dragging .piano-roll-note--playing{box-shadow:0 0 0 2px var(--surface);animation:none}.piano-roll-grid--dragging .piano-roll-note--flagged{box-shadow:0 0 0 2px var(--color-warning), 0 0 0 3px var(--ring-guard-warning)}.piano-roll-grid--dragging .piano-roll-interval-label{transition:none}.piano-roll-scroll-container{max-height:80vh;margin-bottom:1rem;overflow:auto}.modal__body .piano-roll-scroll-container{min-height:240px;max-height:none}.piano-roll-inner{flex-direction:column;min-width:fit-content;display:flex}.piano-roll-content-row{background:var(--gray-500);display:flex}@media (width<=768px){.piano-roll-scroll-container{max-height:60vh}}.piano-roll-transport{background:var(--tool-950);border-bottom:1px solid var(--tool-800);align-items:center;gap:24px;padding:8px 16px;display:flex}.transport-controls{gap:8px;display:flex}.transport-button{background:var(--tool-800);width:36px;height:36px;color:var(--tool-text-muted);cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:flex}.transport-button:hover{background:var(--tool-surface-hover);color:var(--tool-text-neutral)}.transport-button:focus{outline:2px solid var(--blue-500);outline-offset:2px}.transport-button--play{background:var(--green-500);color:var(--text-on-accent)}.transport-button--play:hover{background:var(--status-success-hover);color:var(--text-on-accent)}.transport-button--play.transport-button--active{background:var(--amber-500)}.transport-button--play.transport-button--active:hover{background:var(--amber-600)}.transport-button--stop:hover{background:var(--red-500);color:var(--text-on-accent)}.transport-position{align-items:center;gap:8px;font-family:monospace;display:flex}.position-label{color:var(--tool-text-muted);font-size:12px}.position-value{color:var(--tool-text-neutral);min-width:48px;font-size:16px;font-weight:600}.transport-tempo{align-items:center;gap:8px;display:flex}.tempo-label{color:var(--tool-text-muted);font-size:12px}.tempo-input{border:1px solid var(--tool-border-subtle);background:var(--tool-800);width:60px;color:var(--tool-text-neutral);text-align:center;border-radius:4px;padding:4px 8px;font-size:14px}.tempo-input:focus{border-color:var(--blue-500);outline:none}.tempo-input::-webkit-inner-spin-button{opacity:1}.tempo-input::-webkit-outer-spin-button{opacity:1}.tempo-unit{color:var(--tool-text-muted);font-size:12px}.voice-lanes{background:var(--tool-950);grid-template-columns:auto auto auto auto 1fr;column-gap:.375rem;margin:0 1rem .5rem;padding:0 .5rem;display:grid}.voice-lane{grid-template-columns:subgrid;cursor:pointer;border-bottom:1px solid var(--ink-700);grid-column:1/-1;align-items:center;height:30px;transition:background-color .15s;display:grid}.voice-lane:hover{background:color-mix(in srgb, var(--ink-000) 3%, transparent)}.voice-lane--active{background:color-mix(in srgb, var(--ink-000) 5%, transparent);box-shadow:inset 3px 0 0 0 var(--tool-control-mark)}.voice-lane--disabled{cursor:default}.voice-lane__label{color:var(--tool-text-muted);letter-spacing:.02em;white-space:nowrap;font-size:1rem;line-height:1}.voice-lane--active .voice-lane__label{color:var(--text-on-accent);font-weight:600}.voice-lane__btn{text-align:center;background:var(--tool-850);border:1px solid var(--ink-700);width:20px;height:20px;color:var(--tool-text);cursor:pointer;border-radius:2px;padding:0;font-weight:600;line-height:20px;transition:background-color .15s,border-color .15s}.voice-lane__btn:hover{background:var(--tool-700)}.voice-lane__btn--muted{background:var(--red-500);border-color:var(--red-600);color:var(--text-on-accent)}.voice-lane__btn--muted:hover{background:var(--red-600)}.voice-lane__btn--soloed{background:var(--amber-500);border-color:var(--amber-600);color:var(--text-on-accent)}.voice-lane__btn--soloed:hover{background:var(--amber-600)}.voice-lane__volume{cursor:pointer;appearance:none;background:0 0;width:64px;height:4px}.voice-lane__volume::-webkit-slider-runnable-track{background:var(--ink-500);border-radius:2px;height:4px}.voice-lane__volume::-moz-range-track{background:var(--ink-500);border:none;border-radius:2px;height:4px}.voice-lane__volume::-webkit-slider-thumb{-webkit-appearance:none;background:var(--tool-control-mark);border:none;border-radius:50%;width:12px;height:12px;margin-top:-4px}.voice-lane__volume::-moz-range-thumb{background:var(--tool-control-mark);border:none;border-radius:50%;width:12px;height:12px}.voice-lane__viz{background:var(--tool-900);height:100%;position:relative;overflow:hidden}.voice-lane__viz--muted{opacity:.3}.voice-lane__note{border-radius:1px;min-width:2px;position:absolute}.voice-lane__note--voice-0{background:var(--blue-500)}.voice-lane__note--voice-1{background:var(--green-500)}@media (width<=768px){.voice-lane__label{font-size:.75rem}.voice-lane__btn{width:16px;height:16px;font-size:.5rem;line-height:16px}.voice-lane__volume{width:40px}}.save-load-toolbar{align-items:center;gap:.5rem;display:flex}.save-load-toolbar__save{min-width:4rem}.save-load-toolbar__load{min-width:8rem}.counterpoint-feedback{background:var(--tool-950);border-top:1px solid var(--tool-800);color:var(--tool-text);padding:10px 16px 14px;font-size:13px}.counterpoint-feedback__header{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.counterpoint-feedback__analyze-button{background:linear-gradient(to bottom, var(--blue-500), var(--blue-600));color:var(--text-on-accent);letter-spacing:.02em;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;flex-shrink:0;padding:6px 16px;font-size:13px;font-weight:600;transition:background .2s,box-shadow .2s}.counterpoint-feedback__analyze-button:hover:not(:disabled){background:linear-gradient(to bottom, var(--blue-400), var(--blue-500));box-shadow:0 0 12px color-mix(in srgb, var(--accent) 40%, transparent)}.counterpoint-feedback__analyze-button:focus-visible{outline:2px solid var(--blue-400);outline-offset:2px}.counterpoint-feedback__analyze-button:disabled{opacity:.4;cursor:not-allowed;background:var(--tool-850);color:var(--gray-500)}.counterpoint-feedback__score-area{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.counterpoint-feedback__score-value{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:32px;font-weight:800;line-height:1;transition:color .4s}.counterpoint-feedback__score-value--perfect{color:var(--green-400);text-shadow:0 0 16px color-mix(in srgb, var(--green-400) 30%, transparent)}.counterpoint-feedback__score-value--good{color:var(--amber-400);text-shadow:0 0 16px color-mix(in srgb, var(--amber-400) 20%, transparent)}.counterpoint-feedback__score-value--needs-work{color:var(--red-400);text-shadow:0 0 16px color-mix(in srgb, var(--red-400) 20%, transparent)}.counterpoint-feedback__progress-track{background:var(--tool-850);border-radius:2px;flex:1;max-width:180px;height:4px;overflow:hidden}.counterpoint-feedback__progress-fill{border-radius:2px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1),background-color .4s}.counterpoint-feedback__progress-fill--perfect{background:linear-gradient(to right, var(--green-500), var(--green-400))}.counterpoint-feedback__progress-fill--good{background:linear-gradient(to right, var(--amber-500), var(--amber-400))}.counterpoint-feedback__progress-fill--needs-work{background:linear-gradient(to right, var(--red-500), var(--red-400))}.counterpoint-feedback__tier-label{text-transform:uppercase;letter-spacing:.08em;color:var(--tool-text-muted);white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:600}.counterpoint-feedback__pass-count{color:var(--slate-400);white-space:nowrap;flex-shrink:0;font-size:12px}.counterpoint-feedback__toggle{border:1px solid var(--tool-800);width:28px;height:28px;color:var(--gray-500);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:0;transition:background .15s,color .15s,border-color .15s;display:flex}.counterpoint-feedback__toggle:hover{background:var(--tool-850);color:var(--tool-text-muted);border-color:var(--tool-border-subtle)}.counterpoint-feedback__toggle:focus-visible{outline:2px solid var(--blue-400);outline-offset:2px}.counterpoint-feedback__chevron{transition:transform .25s cubic-bezier(.4,0,.2,1);display:block}.counterpoint-feedback__toggle--open .counterpoint-feedback__chevron{transform:rotate(180deg)}.counterpoint-feedback__collapsible{grid-template-rows:0fr;transition:grid-template-rows .28s cubic-bezier(.4,0,.2,1);display:grid;overflow:hidden}.counterpoint-feedback__collapsible--open{grid-template-rows:1fr}.counterpoint-feedback__collapsible>*{overflow:hidden}.counterpoint-feedback__collapsible-inner{padding-top:12px}.counterpoint-feedback__groups{flex-direction:column;gap:8px;margin-top:12px;display:flex}@media (width>=640px){.counterpoint-feedback__groups{flex-direction:row;align-items:flex-start;gap:16px}.counterpoint-feedback__group--self-check{margin-top:16px}}.counterpoint-feedback__group{background:var(--tool-900);border:1px solid var(--tool-800);border-radius:8px;flex:1;min-width:0;padding:10px 12px}.counterpoint-feedback__group-heading{color:var(--tool-text-muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;margin:0 0 6px;font-size:11px;font-weight:700;display:flex}.counterpoint-feedback__subgroup-heading{color:var(--tool-text-muted);margin:0 0 4px;font-size:12px;font-weight:600}.counterpoint-feedback__annotations+.counterpoint-feedback__subgroup-heading{margin-top:10px}.counterpoint-feedback__annotations{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.counterpoint-feedback__annotation{cursor:default;border-radius:4px;align-items:flex-start;gap:8px;padding:4px 6px;transition:background-color .15s;display:flex;position:relative}.counterpoint-feedback__annotation:hover{background:color-mix(in srgb, var(--ink-000) 4%, transparent)}.counterpoint-feedback__annotation:focus-visible{outline:2px solid var(--blue-400);outline-offset:1px}.counterpoint-feedback__annotation[tabindex="0"]{cursor:help}.counterpoint-feedback__annotation-status{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;line-height:1;display:flex}.counterpoint-feedback__annotation--pass .counterpoint-feedback__annotation-status{background:color-mix(in srgb, var(--green-400) 15%, transparent);color:var(--green-400)}.counterpoint-feedback__annotation--fail .counterpoint-feedback__annotation-status{background:color-mix(in srgb, var(--red-400) 15%, transparent);color:var(--red-400)}.counterpoint-feedback__annotation-text{flex-direction:column;min-width:0;display:flex}.counterpoint-feedback__annotation-name{color:var(--tool-text);font-size:13px;line-height:1.4}.counterpoint-feedback__annotation--fail .counterpoint-feedback__annotation-name{font-weight:600}.counterpoint-feedback__annotation-message{color:var(--tool-text-muted);font-size:12px;line-height:1.4}.counterpoint-feedback__tooltip{z-index:50;background:var(--tool-850);border:1px solid var(--tool-border-subtle);min-width:180px;max-width:320px;box-shadow:0 8px 24px color-mix(in srgb, var(--ink-1000) 50%, transparent);pointer-events:none;opacity:0;clip:rect(0, 0, 0, 0);border-radius:6px;padding:8px 10px;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:6px;transform:translateY(4px)}.counterpoint-feedback__tooltip:after{content:"";border:6px solid #0000;border-top-color:var(--tool-850);position:absolute;top:100%;left:16px}.counterpoint-feedback__tooltip--visible,.counterpoint-feedback__annotation:hover .counterpoint-feedback__tooltip{opacity:1;clip:auto;pointer-events:auto;transform:translateY(0)}.counterpoint-feedback__tooltip-marks{margin:0;padding:0;list-style:none}.counterpoint-feedback__tooltip-mark{color:var(--tool-text);padding:3px 0;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.counterpoint-feedback__tooltip-mark+.counterpoint-feedback__tooltip-mark{border-top:1px solid color-mix(in srgb, var(--ink-000) 8%, transparent)}.counterpoint-feedback__error{color:var(--red-400);font-size:13px}.counterpoint-feedback__not-ready{color:var(--tool-text-muted);font-size:13px}.counterpoint-feedback__group--self-check{border-style:dashed;border-color:var(--tool-rule-strong);background:0 0;margin-top:8px}.counterpoint-feedback__group-tag{border:1px solid var(--tool-border-subtle);background:color-mix(in srgb, var(--tool-text-muted) 15%, transparent);letter-spacing:.04em;text-transform:none;color:var(--tool-text-muted);border-radius:999px;flex:none;padding:1px 6px;font-size:10px;font-weight:600}.counterpoint-feedback__self-check-item{align-items:flex-start;gap:8px;padding:4px 6px;display:flex}.counterpoint-feedback__self-check-ring{border:2px solid var(--tool-text-muted);border-radius:50%;flex-shrink:0;width:14px;height:14px;margin-top:2px}.counterpoint-feedback__self-check-text{min-width:0;color:var(--tool-text);font-size:13px;line-height:1.4}.counterpoint-feedback__empty{color:var(--slate-400);margin:12px 0 0;font-style:italic}.modal__body .counterpoint-feedback{max-height:min(45dvh,320px);overflow-y:auto}.counterpoint-feedback--rail{padding:0}.counterpoint-feedback--rail .counterpoint-feedback__collapsible-inner{padding:4px 16px 14px}.counterpoint-feedback--rail .counterpoint-feedback__groups{margin-top:0}.counterpoint-feedback__rail-header{justify-content:space-between;align-items:center;gap:.5rem;padding:8px 8px 8px 16px;display:flex}.counterpoint-feedback__rail-title{text-transform:uppercase;letter-spacing:.08em;color:var(--tool-text-muted);margin:0;font-size:11px;font-weight:700}.counterpoint-feedback__rail-close{border:1px solid var(--tool-800);min-width:28px;min-height:28px;color:var(--gray-400);cursor:pointer;background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;transition:background .15s,color .15s;display:inline-flex}.counterpoint-feedback__rail-close:hover{background:var(--tool-850);color:var(--tool-text)}.counterpoint-feedback__rail-close:focus-visible{outline:2px solid var(--blue-400);outline-offset:2px}@media (width>=1000px){.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.counterpoint-feedback{overscroll-behavior:contain;border-top:none;border-left:1px solid var(--tool-800);grid-area:rail;min-height:0;max-height:none;overflow-y:auto}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.counterpoint-feedback .counterpoint-feedback__rail-header{z-index:1;background:var(--tool-950);border-bottom:1px solid var(--tool-800);position:sticky;top:0}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.counterpoint-feedback .counterpoint-feedback__groups{flex-direction:column;gap:8px}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.counterpoint-feedback .counterpoint-feedback__tooltip{max-width:none;left:0;right:0}}.counterpoint-feedback__header--bar{color:var(--text-body);flex:0 auto;gap:.75rem;font-size:13px}.counterpoint-feedback__header--bar .counterpoint-feedback__score-value{text-shadow:none;font-size:22px}.counterpoint-feedback__header--bar .counterpoint-feedback__score-value--perfect{color:var(--green-700)}.counterpoint-feedback__header--bar .counterpoint-feedback__score-value--good{color:var(--amber-600)}.counterpoint-feedback__header--bar .counterpoint-feedback__score-value--needs-work{color:var(--status-danger)}.counterpoint-feedback__header--bar .counterpoint-feedback__progress-track{background:var(--gray-200);max-width:120px}.counterpoint-feedback__header--bar .counterpoint-feedback__progress-fill--good{background:linear-gradient(to right, var(--amber-600), var(--amber-500))}.counterpoint-feedback__header--bar .counterpoint-feedback__progress-fill--needs-work{background:linear-gradient(to right, var(--status-danger), var(--red-500))}.counterpoint-feedback__header--bar .counterpoint-feedback__tier-label,.counterpoint-feedback__header--bar .counterpoint-feedback__pass-count{color:var(--text-subtle)}.counterpoint-feedback__header--bar .counterpoint-feedback__pass-count{white-space:normal;flex-shrink:1;min-width:0}.counterpoint-feedback__header--bar .counterpoint-feedback__error{color:var(--status-danger)}.counterpoint-feedback__header--bar .counterpoint-feedback__not-ready{color:var(--text-subtle)}.counterpoint-feedback__header--bar .counterpoint-feedback__analyze-button:focus-visible{outline-color:var(--focus-ring)}.counterpoint-feedback__header--bar .counterpoint-feedback__analyze-button:disabled{opacity:1;background:var(--surface-sunken);color:var(--text-subtle);border:1px solid var(--border-strong)}.counterpoint-feedback__rail-toggle{border:1px solid var(--border-strong);color:var(--text-body);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:.3rem .65rem;font-size:.8125rem;font-weight:500;transition:background-color .15s,border-color .15s}.counterpoint-feedback__rail-toggle:hover{background:var(--surface-sunken);border-color:var(--gray-300)}.counterpoint-feedback__rail-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}@media (prefers-reduced-motion:reduce){.counterpoint-feedback__tooltip,.counterpoint-feedback__collapsible,.counterpoint-feedback__chevron,.counterpoint-feedback__progress-fill{transition:none}}.piano-roll-container{background:var(--tool-900);box-shadow:0 4px 16px color-mix(in srgb, var(--ink-1000) 35%, transparent);border-radius:0 0 .5rem .5rem;flex-direction:column;min-height:0;display:flex;overflow:hidden}@media (width>=1000px){.modal__body .piano-roll-container:has(>.counterpoint-feedback){grid-template:"banner rail""roll rail"minmax(0,1fr)"lanes rail""hint rail"/minmax(0,1fr) 340px;min-height:0;display:grid}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.melody-editor__banner{grid-area:banner}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.piano-roll-scroll-container{grid-area:roll;min-height:0}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.voice-lanes{grid-area:lanes}.modal__body .piano-roll-container:has(>.counterpoint-feedback)>.melody-editor__hint{grid-area:hint}}.simple-piano-roll-controls .piano-roll-transport,.piano-roll-toolbar .piano-roll-transport{background:0 0;border-bottom:none;padding:0}.toolbar-group{align-items:center;gap:.5rem;display:flex}.toolbar-label{color:var(--tool-text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.toolbar-buttons{gap:2px;display:flex}.toolbar-button{background:var(--tool-850);border:1px solid var(--ink-700);color:var(--tool-text);cursor:pointer;padding:.375rem .75rem;font-size:.8125rem;transition:background-color .15s,border-color .15s}.toolbar-button:first-child{border-radius:.25rem 0 0 .25rem}.toolbar-button:last-child{border-radius:0 .25rem .25rem 0}.toolbar-button:hover:not(:disabled){background:var(--tool-700)}.toolbar-button--active,.toolbar-button--active:hover:not(:disabled){background:var(--blue-700);border-color:var(--blue-800);color:var(--text-on-accent)}.toolbar-button:disabled{opacity:.5;cursor:not-allowed}.toolbar-select{background:var(--tool-850);border:1px solid var(--ink-700);color:var(--tool-text);cursor:pointer;border-radius:.25rem;padding:.375rem .5rem;font-size:.8125rem}.toolbar-select:focus-visible{outline:2px solid var(--blue-400);outline-offset:1px;border-color:var(--blue-500)}.toolbar-input{background:var(--tool-850);border:1px solid var(--ink-700);width:60px;color:var(--tool-text);text-align:center;border-radius:.25rem;padding:.375rem .5rem;font-size:.8125rem}.toolbar-input:focus-visible{outline:2px solid var(--blue-400);outline-offset:1px;border-color:var(--blue-500)}.toolbar-button:focus-visible{outline:2px solid var(--blue-400);outline-offset:1px}.toolbar-range{cursor:pointer;appearance:none;background:0 0;width:100px}.toolbar-range:focus-visible{outline:2px solid var(--blue-400);outline-offset:1px}.toolbar-range::-webkit-slider-runnable-track{background:var(--ink-500);border-radius:2px;height:4px}.toolbar-range::-moz-range-track{background:var(--ink-500);border:none;border-radius:2px;height:4px}.toolbar-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--tool-control-mark);border:none;border-radius:50%;width:12px;height:12px;margin-top:-4px}.toolbar-range::-moz-range-thumb{background:var(--tool-control-mark);border:none;border-radius:50%;width:12px;height:12px}.toolbar-value{color:var(--tool-text-muted);min-width:40px;font-size:.75rem}@media (width<=768px){.toolbar-group{gap:.25rem}.toolbar-label{font-size:.6875rem}}.piano-roll-editor{outline:none;flex-direction:column;min-height:0;padding:0;display:flex}.piano-roll-toolbar{background:var(--tool-950);border-bottom:1px solid var(--tool-800);border-radius:.5rem .5rem 0 0;flex-wrap:wrap;gap:1rem;padding:.75rem 1rem;display:flex}.toolbar-button--small{min-width:24px;padding:.25rem .5rem;font-size:.6875rem}.toolbar-button--muted{background:var(--red-500);border-color:var(--red-600);color:var(--text-on-accent)}.toolbar-button--muted:hover{background:var(--red-600)}.toolbar-button--soloed{background:var(--amber-500);border-color:var(--amber-600);color:var(--text-on-accent)}.toolbar-button--soloed:hover{background:var(--amber-600)}@media (width<=768px){.piano-roll-toolbar{gap:.5rem;padding:.5rem}}.melody-editor{outline:none;flex-direction:column;padding:0;display:flex}.melody-editor .piano-roll-toolbar{background:var(--tool-950);border-bottom:1px solid var(--tool-800);border-radius:.5rem .5rem 0 0;flex-wrap:wrap;gap:1rem;padding:.75rem 1rem;display:flex}.melody-toolbar-unit-button{min-width:2rem;min-height:2rem;font-size:1rem;line-height:1}.melody-toolbar-bars-locked{color:var(--tool-text);white-space:nowrap;font-size:.8125rem}.melody-editor__banner{background:var(--tool-850);border-bottom:1px solid var(--tool-800);flex-wrap:wrap;align-items:center;gap:.375rem 1.5rem;padding:.5rem 1rem;display:flex}.melody-editor__tonality{align-items:center;gap:.5rem;display:inline-flex}.melody-editor__tonality-swatch{background:var(--tonic-row);width:.875rem;height:1.375rem;box-shadow:inset 4px 0 0 var(--tonic-accent);border-radius:2px;flex-shrink:0}.melody-editor__tonality-prefix{color:var(--tool-text-muted);font-size:.875rem}.melody-editor__tonality-text{color:var(--tonic-label-text);white-space:nowrap;font-size:1.25rem;font-weight:700;line-height:1.2}.melody-editor__contour-chip{color:var(--tool-text);align-items:center;gap:.625rem;font-size:.875rem;display:flex}.melody-editor__contour-glyph{color:var(--contour-glyph);flex-shrink:0}.melody-editor__contour-text strong{color:var(--tool-text)}.melody-editor__hint{color:var(--tool-text-muted);margin:0;padding:.5rem 1rem .75rem;font-size:.8125rem;font-style:italic}.exercise-workspace{flex-direction:column;min-height:0;display:flex}.exercise-submission-bar{background:var(--surface);border:1px solid var(--border-strong);max-width:800px;box-shadow:0 2px 8px color-mix(in srgb, var(--ink-1000) 6%, transparent);border-left:3px solid var(--blue-500);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 2rem;margin:1.5rem auto 0;padding:1rem 1.25rem;display:flex}.exercise-submission-bar__check{flex:auto;align-items:center;min-width:0;display:flex}.exercise-submission-bar__submit{border-left:1px solid var(--border-strong);flex:none;align-items:center;gap:.75rem;margin-left:auto;padding-left:1.25rem;display:flex}.exercise-submission-bar__submit:first-child{border-left:none;padding-left:0}.modal__body .exercise-submission-bar{max-width:none;margin-top:1rem}.exercise-submitted-badge{color:var(--status-success-text);background-color:var(--status-success-bg);border:1px solid var(--status-success-border);border-radius:6px;align-items:center;gap:.35rem;padding:.3rem .75rem;font-size:.8125rem;font-weight:500;display:inline-flex}.exercise-workspace__message{color:var(--status-danger);font-size:.8125rem;font-weight:500}.exercise-submit-btn{border:1.5px solid var(--blue-500);color:var(--blue-500);cursor:pointer;background-color:#0000;border-radius:6px;padding:.4rem 1rem;font-size:.875rem;font-weight:600;transition:background-color .18s,color .18s}.exercise-submit-btn:hover:not(:disabled){background-color:var(--blue-500);color:var(--text-on-accent)}.exercise-submit-btn:focus-visible{outline:2px solid var(--blue-500);outline-offset:2px}.exercise-submit-btn:disabled{opacity:.55;cursor:not-allowed}@media (width<=640px){.exercise-submission-bar{gap:.75rem;padding:.75rem 1rem}.exercise-submission-bar__check,.exercise-submission-bar__submit{border-left:none;flex:100%;margin-left:0;padding-left:0}.exercise-submission-bar__submit{border-top:1px solid var(--border-strong);padding-top:.75rem}.exercise-submit-btn{margin-left:auto}}.exercise-show{padding:2rem}.exercise-breadcrumb,.exercise-header,.exercise-prompt,.exercise-explanation{max-width:800px;margin-left:auto;margin-right:auto}.exercise-breadcrumb{align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.9rem;display:flex}.exercise-breadcrumb a{color:var(--ink-400);text-decoration:none}.exercise-breadcrumb a:hover{color:var(--ink-700);text-decoration:underline}.exercise-breadcrumb .breadcrumb-separator{color:var(--text-faint)}.exercise-breadcrumb .breadcrumb-current{color:var(--ink-700);font-weight:500}.exercise-header{margin-bottom:1.5rem}.exercise-type{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);background:var(--badge-neutral-bg);border-radius:4px;margin-bottom:.5rem;padding:.2rem .65rem;font-size:.7rem;font-weight:600;display:inline-block}.exercise-name{color:var(--tool-950);margin:.4rem 0 0;font-size:1.6rem;line-height:1.25}.exercise-prompt{line-height:1.8;display:flow-root}.exercise-prompt p{margin:0 0 1rem}.exercise-prompt p:last-child{margin-bottom:0}.exercise-prompt ul,.exercise-prompt ol{margin:0 0 1rem;padding-left:1.5rem}.exercise-prompt li{margin-bottom:.5rem}.exercise-explanation{border:1px solid var(--border-strong);background:var(--surface-sunken);border-radius:8px;max-width:800px;margin:1.5rem auto 0;padding:1rem 1.25rem}.exercise-explanation summary{cursor:pointer;color:var(--text-control);-webkit-user-select:none;user-select:none;font-size:.9rem;font-weight:600}.exercise-explanation summary:hover{color:var(--tool-950)}.exercise-explanation summary:focus-visible{outline:2px solid var(--blue-500);outline-offset:2px;border-radius:2px}.exercise-explanation p{color:var(--ink-500);margin:1rem 0 0;line-height:1.65}@media (width<=640px){.exercise-show{padding:1rem}}.piano-key{--key-shadow:0 2px 3px color-mix(in srgb, var(--ink-1000) 30%, transparent);--key-glow:inset 0 0 0 0 transparent, inset 0 0 0 0 transparent;--key-ring:inset 0 0 0 0 transparent, inset 0 0 0 0 transparent;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent;box-shadow:var(--key-ring), var(--key-glow), var(--key-shadow);border:none;transition:all .1s;position:relative}.piano-key:focus{outline:none}.piano-key:focus-visible{outline-offset:-2px;outline:2px solid #0000}.piano-key.white:focus-visible{--key-ring:inset 0 0 0 2px var(--ring-focus-bright), inset 0 0 0 4px var(--ring-guard-focus)}.piano-key.black:focus-visible{--key-ring:inset 0 0 0 2px var(--ring-guard-focus-on-dark), inset 0 0 0 4px var(--ring-focus-bright)}.piano-key.white{width:var(--white-key-width);background:linear-gradient(to bottom, var(--surface), var(--ink-075));border-radius:0 0 .25rem .25rem;height:100%}.piano-key.white[data-pitch-class=C],.piano-key.white[data-pitch-class=F]{margin-right:calc(-1 * var(--white-key-overlap))}.piano-key.white[data-pitch-class=E],.piano-key.white[data-pitch-class=B]{margin-left:calc(-1 * var(--white-key-overlap))}.piano-key.white[data-pitch-class=D]{margin-left:calc(-.5 * var(--white-key-overlap));margin-right:calc(-.5 * var(--white-key-overlap))}.piano-key.white[data-pitch-class=G]{margin-left:calc(-.5 * var(--white-key-overlap));margin-right:calc(-.75 * var(--white-key-overlap))}.piano-key.white[data-pitch-class=A]{margin-left:calc(-.75 * var(--white-key-overlap));margin-right:calc(-.5 * var(--white-key-overlap))}.piano-key.white:last-child{margin-right:0}.piano-key.black{width:var(--black-key-width);background:linear-gradient(to bottom, var(--ink-850), var(--ink-1000));z-index:2;--key-shadow:0 3px 5px color-mix(in srgb, var(--ink-1000) 50%, transparent);border-radius:0 0 .2rem .2rem;height:65%;position:relative}.piano-key.white:hover{background:linear-gradient(to bottom, var(--sky-100), var(--sky-200))}.piano-key.black:hover{background:linear-gradient(to bottom, var(--ink-700), var(--ink-950))}.piano-key.white.active{background:linear-gradient(to bottom, var(--blue-300), var(--blue-400));--key-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent);transform:translateY(2px)}.piano-key.black.active{background:linear-gradient(to bottom, var(--blue-700), var(--blue-800));--key-shadow:0 1px 3px color-mix(in srgb, var(--ink-1000) 50%, transparent);transform:translateY(1px)}.piano-key.white.marked{--key-glow:inset 0 10px 20px color-mix(in srgb, var(--accent) 50%, transparent), inset 0 20px 40px color-mix(in srgb, var(--accent) 25%, transparent)}.piano-key.black.marked{--key-glow:inset 0 8px 16px color-mix(in srgb, var(--accent) 70%, transparent), inset 0 16px 32px color-mix(in srgb, var(--accent) 35%, transparent)}.piano-key.white.marked:after{content:"";background:var(--blue-500);border-radius:50%;width:.5rem;height:.5rem;position:absolute;bottom:1rem;left:50%;transform:translate(-50%)}.piano-key.black.marked:after{content:"";background:var(--blue-400);border-radius:50%;width:.5rem;height:.5rem;position:absolute;bottom:.5rem;left:50%;transform:translate(-50%)}.piano-octave{gap:var(--white-key-gap);height:100%;max-width:calc(var(--octave-width) - var(--white-key-gap));margin:0;display:flex;position:relative}.pattern-bar{width:100%;height:1rem;padding:.5rem 0;padding-right:var(--white-key-overlap);border-radius:.5rem;align-items:center;display:flex;position:relative}.pattern-indicator{flex-grow:1;justify-content:center;align-items:center;height:100%;transition:all .2s;display:flex}.pattern-dot{background:var(--gray-300);width:1.25rem;box-shadow:none;border-radius:.1rem;height:.1rem;animation:none}.pattern-dot.active{background:var(--blue-500);height:.33rem;box-shadow:0 0 6px color-mix(in srgb, var(--accent) 50%, transparent);border-radius:.33rem}@keyframes pulse{0%{box-shadow:0 0 6px color-mix(in srgb, var(--accent) 50%, transparent);transform:scale(1)}50%{box-shadow:0 0 10px color-mix(in srgb, var(--accent) 70%, transparent);transform:scale(1.15)}to{box-shadow:0 0 6px color-mix(in srgb, var(--accent) 50%, transparent);transform:scale(1)}}.keyboard-wrapper{box-shadow:0 4px 12px color-mix(in srgb, var(--ink-1000) 15%, transparent);background:linear-gradient(to bottom, var(--gray-800), var(--gray-700));border-radius:.5rem;flex-direction:column;align-items:stretch;padding:1rem;display:flex;overflow:hidden}.keyboard{gap:var(--white-key-gap);align-items:flex-start;height:12rem;display:flex}@media (width<=768px){.keyboard-wrapper{border-radius:.375rem;padding:.75rem}.keyboard{height:10rem}}@media (width<=480px){.keyboard-wrapper{border-radius:.25rem;padding:.5rem}.keyboard{height:8rem}}.keyboard-wrapper.keyboard--flat{box-shadow:none;border-radius:0}.adsr-envelope-display{border:1px solid var(--gray-700);border-radius:.25rem;width:480px;height:80px;position:relative;overflow:hidden}.adsr-envelope-display__svg{width:100%;height:100%;display:block}.adsr-envelope-display__path{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.adsr-envelope-display__fill{fill:url(#adsr-gradient)}.adsr-envelope-display__label{fill:var(--gray-500);text-anchor:middle;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:10px;font-weight:500}.adsr-envelope-display__junction{background:var(--accent);pointer-events:none;border-radius:50%;width:6px;height:6px;position:absolute;transform:translate(-50%,-50%)}.adsr-envelope-display__indicator{fill:var(--accent-muted);filter:drop-shadow(0 0 3px color-mix(in srgb, var(--accent-muted) 60%, transparent));pointer-events:none}.adsr-envelope-display__indicator-hairline{stroke:var(--accent-muted);stroke-width:1px;opacity:.4;vector-effect:non-scaling-stroke;pointer-events:none}@keyframes adsr-sustain-pulse{0%,to{opacity:1}50%{opacity:.5}}.adsr-envelope-display__indicator--sustain{animation:1s ease-in-out infinite adsr-sustain-pulse}.adsr-envelope-display__crosshair{stroke:var(--color-dark-putty);stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.adsr-envelope-display__tooltip{background:var(--gray-800);color:var(--gray-200);border:1px solid var(--gray-700);pointer-events:none;white-space:nowrap;z-index:10;border-radius:.25rem;padding:.25rem .5rem;font-size:.6875rem;position:absolute}.adsr-envelope-display__sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (hover:hover){.adsr-envelope-display__svg{cursor:crosshair}}@media (hover:none){.adsr-envelope-display__tooltip,.adsr-envelope-display__crosshair{display:none}}@media (width<=768px){.adsr-envelope-display{height:64px}}@media (width<=480px){.adsr-envelope-display{height:56px}.adsr-envelope-display__label{display:none}}@media (prefers-reduced-motion:reduce){.adsr-envelope-display__indicator--sustain{animation:none}}@media (prefers-contrast:more){.adsr-envelope-display__path{stroke:var(--blue-300);stroke-width:3px}.adsr-envelope-display__indicator{fill:var(--blue-300)}.adsr-envelope-display__label{fill:var(--gray-300)}.adsr-envelope-display{border-width:2px;border-color:var(--gray-400)}}.adsr-slider{flex-direction:column;align-items:center;gap:.5rem;min-width:4.5rem;display:flex}.adsr-slider__label{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.adsr-slider__input{appearance:none;cursor:pointer;writing-mode:vertical-lr;direction:rtl;background:0 0;border-radius:.25rem;width:4rem;height:6rem}.adsr-slider__input::-webkit-slider-runnable-track{background:linear-gradient(to top, var(--gray-700), var(--color-dark-putty));border:1px solid var(--gray-800);border-radius:.25rem;width:.375rem;height:100%}.adsr-slider__input::-moz-range-track{background:linear-gradient(to top, var(--gray-700), var(--color-dark-putty));border:1px solid var(--gray-800);border-radius:.25rem;width:.375rem;height:100%}.adsr-slider__input::-webkit-slider-thumb{appearance:none;background:linear-gradient(to bottom, var(--accent-muted), var(--accent));border:1px solid var(--blue-600);width:1.25rem;height:.75rem;box-shadow:0 2px 4px color-mix(in srgb, var(--ink-1000) 30%, transparent);cursor:grab;border-radius:.25rem;margin-left:-.4375rem}.adsr-slider__input::-moz-range-thumb{background:linear-gradient(to bottom, var(--accent-muted), var(--accent));border:1px solid var(--blue-600);width:1.25rem;height:.75rem;box-shadow:0 2px 4px color-mix(in srgb, var(--ink-1000) 30%, transparent);cursor:grab;border-radius:.25rem}.adsr-slider__input::-webkit-slider-thumb:hover{background:linear-gradient(to bottom, var(--blue-300), var(--accent-muted))}.adsr-slider__input::-moz-range-thumb:hover{background:linear-gradient(to bottom, var(--blue-300), var(--accent-muted))}.adsr-slider__input::-webkit-slider-thumb:active{cursor:grabbing;box-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent)}.adsr-slider__input::-moz-range-thumb:active{cursor:grabbing;box-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent)}.adsr-slider__input:focus{outline:none}.adsr-slider__input:focus-visible{outline-offset:0;box-shadow:0 0 0 2px var(--ring-focus-bright), 0 0 0 4px var(--ring-guard-focus-on-dark);outline:2px solid #0000}.adsr-slider__value{color:var(--gray-300);font-variant-numeric:tabular-nums;text-align:center;min-width:3rem;font-size:.75rem;font-weight:500}@media (width<=768px){.adsr-slider{gap:.375rem;min-width:3.5rem}.adsr-slider__input{width:3rem;height:5rem}.adsr-slider__label{font-size:.6875rem}.adsr-slider__value{min-width:2.5rem;font-size:.6875rem}.adsr-slider__input::-webkit-slider-thumb{width:1rem;height:.625rem;margin-left:-.3125rem}.adsr-slider__input::-moz-range-thumb{width:1rem;height:.625rem}}@media (width<=480px){.adsr-slider{gap:.25rem;min-width:3rem}.adsr-slider__input{width:2.5rem;height:4rem}.adsr-slider__label{font-size:.625rem}.adsr-slider__value{min-width:2rem;font-size:.625rem}}.effects-section{flex-wrap:wrap;gap:1.5rem;display:flex}.effects-section__effect{flex-direction:column;gap:.5rem;min-width:7rem;display:flex}.effects-section__effect--limiter{min-width:4rem}.effects-section__effect-header{align-items:center;gap:.5rem;display:flex}.effects-section__effect-name{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.effects-section__bypass{color:var(--gray-500);border:1px solid var(--color-dark-putty);cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background-color:#0000;border-radius:.25rem;padding:.125rem .375rem;font-size:.625rem;font-weight:600;transition:all .15s}.effects-section__bypass:hover{color:var(--gray-200);border-color:var(--gray-500)}.effects-section__bypass--active{color:var(--accent);border-color:var(--accent);background-color:color-mix(in srgb, var(--accent) 10%, transparent)}.effects-section__bypass--active:hover{color:var(--accent-muted);border-color:var(--accent-muted)}.effects-section__bypass:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.effects-section__params{flex-direction:column;gap:.25rem;display:flex}.effects-section__toggle-label{color:var(--gray-400);cursor:pointer;align-items:center;gap:.375rem;padding-top:.125rem;font-size:.75rem;display:flex}.effects-section__toggle-label input[type=checkbox]{accent-color:var(--accent);cursor:pointer}.effects-section__select-label{flex-direction:column;gap:.125rem;display:flex}.effects-section__select-text{color:var(--gray-400);font-size:.6875rem;font-weight:500}.effects-section__select{color:var(--gray-200);background-color:var(--gray-700);border:1px solid var(--color-dark-putty);cursor:pointer;border-radius:.25rem;padding:.25rem .375rem;font-size:.75rem}.effects-section__select:hover{background-color:var(--color-dark-putty);border-color:var(--gray-500)}.effects-section__select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}@media (width<=480px){.effects-section{flex-direction:column;gap:1rem}.effects-section__effect{min-width:unset}}.patch-selector{align-items:flex-end;gap:.75rem;display:flex}.patch-selector--loading{color:var(--gray-500);font-size:.75rem;font-style:italic}.patch-selector__selects{gap:1rem;display:flex}.patch-selector__field{flex-direction:column;flex:1;gap:.25rem;display:flex}.patch-selector__label{color:var(--gray-400);font-size:.75rem;font-weight:500}.patch-selector__select{color:var(--gray-200);background-color:var(--gray-700);border:1px solid var(--color-dark-putty);cursor:pointer;border-radius:.25rem;min-width:8rem;padding:.375rem .5rem;font-size:.8125rem}.patch-selector__select:hover{background-color:var(--color-dark-putty);border-color:var(--gray-500)}.patch-selector__select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.patch-selector__select:disabled{opacity:.5;cursor:not-allowed}.patch-selector__actions{white-space:nowrap;gap:.5rem;display:flex}.patch-selector__button{color:var(--gray-400);border:1px solid var(--color-dark-putty);cursor:pointer;background-color:#0000;border-radius:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .15s}.patch-selector__button:hover:not(:disabled){color:var(--gray-200);background-color:var(--gray-700);border-color:var(--gray-500)}.patch-selector__button:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.patch-selector__button:disabled{opacity:.5;cursor:not-allowed}.patch-selector__button--save{color:var(--accent-muted);border-color:var(--accent)}.patch-selector__button--save:hover:not(:disabled){color:var(--text-on-accent);background-color:var(--accent);border-color:var(--accent)}.patch-selector__button--delete{color:var(--red-400);border-color:var(--status-danger)}.patch-selector__button--delete:hover:not(:disabled){color:var(--text-on-accent);background-color:var(--status-danger);border-color:var(--status-danger)}.patch-selector__button--primary{color:var(--text-on-accent);background-color:var(--accent);border-color:var(--accent)}.patch-selector__button--primary:hover:not(:disabled){background-color:var(--accent-hover);border-color:var(--accent-hover)}.patch-selector__dialog{background-color:color-mix(in srgb, var(--ink-1000) 60%, transparent);z-index:1000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.patch-selector__dialog-content{background-color:var(--gray-800);border:1px solid var(--gray-700);min-width:20rem;box-shadow:0 10px 25px color-mix(in srgb, var(--ink-1000) 30%, transparent);border-radius:.5rem;flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.patch-selector__dialog-field{flex-direction:column;gap:.5rem;display:flex}.patch-selector__dialog-label{color:var(--gray-200);font-size:.875rem;font-weight:500}.patch-selector__dialog-input{color:var(--gray-200);background-color:var(--gray-700);border:1px solid var(--color-dark-putty);border-radius:.25rem;padding:.5rem .75rem;font-size:.875rem}.patch-selector__dialog-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.patch-selector__dialog-actions{justify-content:flex-end;gap:.5rem;display:flex}@media (width<=480px){.patch-selector__selects{flex-direction:column;gap:.5rem}.patch-selector__field{width:100%}.patch-selector__actions{flex-wrap:wrap}.patch-selector__dialog-content{min-width:unset;width:calc(100% - 2rem);margin:1rem}}.synth-settings-panel{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-bottom:1px solid var(--gray-700);flex-direction:column;display:flex}.synth-settings-panel__header{cursor:pointer;border-bottom:1px solid var(--gray-700);flex-wrap:wrap;align-items:flex-start;gap:.75rem;padding:.75rem 1.5rem;display:flex}.synth-settings-panel__envelope-ui{flex-direction:column;align-items:center;gap:.75rem;width:fit-content;display:flex}.synth-settings-panel__header-volume{cursor:default;flex-direction:column;align-items:start;gap:.25rem;display:flex}.synth-settings-panel__header-volume-row{align-items:center;gap:.5rem;display:flex}.synth-settings-panel__volume-slider{width:5rem;height:.375rem;accent-color:var(--accent);cursor:pointer}.synth-settings-panel__volume-value{font-variant-numeric:tabular-nums;color:var(--gray-400);min-width:2.5rem;font-size:.75rem}.synth-settings-panel__engine{flex-direction:column;gap:.25rem;display:flex}.synth-settings-panel__header-patches{cursor:default}.synth-settings-panel__toggle{color:var(--gray-400);margin-top:.125rem;margin-right:.5rem;font-size:1rem;transition:color .15s}.synth-settings-panel__header:hover .synth-settings-panel__toggle{color:var(--gray-200)}.synth-settings-panel__details{background:linear-gradient(to bottom, var(--slate-950), var(--gray-800));align-items:flex-start;gap:2rem;width:fit-content;margin:0 auto;padding:1rem 1.5rem;display:flex}.synth-settings-panel__section{flex-direction:column;gap:.75rem;display:flex}.synth-settings-panel__section-title{color:var(--gray-500);text-transform:uppercase;letter-spacing:.1em;margin:0;font-size:.6875rem;font-weight:600}.synth-settings-panel__envelope{flex:1}.synth-settings-panel__sliders{gap:1rem;display:flex}.synth-settings-panel__oscillator{min-width:8rem}.synth-settings-panel__controls{flex-direction:column;gap:.75rem;display:flex}.synth-settings-panel__control{flex-direction:column;gap:.25rem;display:flex}.synth-settings-panel__control-label,.synth-settings-panel__engine-label{color:var(--gray-400);font-size:.75rem;font-weight:500}.synth-settings-panel__select{color:var(--gray-200);background-color:var(--gray-700);border:1px solid var(--color-dark-putty);cursor:pointer;border-radius:.25rem;min-width:6rem;padding:.375rem .5rem;font-size:.8125rem}.synth-settings-panel__select:hover{background-color:var(--color-dark-putty);border-color:var(--gray-500)}.synth-settings-panel__select:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.synth-settings-panel__actions{align-items:flex-end;padding-bottom:.25rem;display:flex}.synth-settings-panel__reset-button{color:var(--gray-400);border:1px solid var(--color-dark-putty);cursor:pointer;background-color:#0000;border-radius:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .15s}.synth-settings-panel__reset-button:hover{color:var(--gray-200);background-color:var(--gray-700);border-color:var(--gray-500)}.synth-settings-panel__reset-button:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.synth-settings-panel__reset-button:active{background-color:var(--color-dark-putty)}@media (width<=768px){.synth-settings-panel__header{padding:.625rem 1rem}.synth-settings-panel__details{flex-wrap:wrap;gap:1.25rem;padding:.875rem 1rem}.synth-settings-panel__sliders{gap:.75rem}.synth-settings-panel__oscillator{min-width:6rem}.synth-settings-panel__section-title{font-size:.625rem}}@media (width<=480px){.synth-settings-panel__header{padding:.5rem .75rem}.synth-settings-panel__details{flex-direction:column;gap:1rem;padding:.75rem}.synth-settings-panel__envelope{width:100%}.synth-settings-panel__sliders{justify-content:space-around;width:100%}.synth-settings-panel__oscillator{width:100%;min-width:unset}.synth-settings-panel__controls{flex-flow:wrap;gap:.5rem}.synth-settings-panel__control{flex:1;min-width:5rem}.synth-settings-panel__actions{justify-content:center;width:100%;padding-top:.5rem;padding-bottom:0}.synth-settings-panel__reset-button{width:100%}}.oscilloscope{border:1px solid var(--gray-700);background:var(--gray-900);border-radius:.25rem;width:100%;height:48px;overflow:hidden}.oscilloscope__canvas{width:100%;height:100%;display:block}.oscilloscope__sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=768px){.oscilloscope{height:40px}}@media (width<=480px){.oscilloscope{height:36px}}@media (prefers-reduced-motion:reduce){.oscilloscope{opacity:.85}}@media (prefers-contrast:more){.oscilloscope{border-width:2px;border-color:var(--gray-400)}}.spectrum-analyzer{border:1px solid var(--gray-700);background:var(--gray-900);border-radius:.25rem;width:100%;height:48px;overflow:hidden}.spectrum-analyzer__canvas{width:100%;height:100%;display:block}@media (width<=768px){.spectrum-analyzer{height:40px}}@media (width<=480px){.spectrum-analyzer{height:36px}}@media (prefers-reduced-motion:reduce){.spectrum-analyzer{opacity:.85}}@media (prefers-contrast:more){.spectrum-analyzer{border-width:2px;border-color:var(--gray-400)}}.bardboard{background:linear-gradient(to bottom, var(--slate-950), var(--slate-800));width:fit-content;box-shadow:var(--panel-shadow);border-radius:.75rem;margin:0 auto;overflow:hidden}.bardboard__header{background:linear-gradient(to bottom, var(--slate-800), var(--slate-950));border-bottom:1px solid var(--slate-700);align-items:baseline;gap:.75rem;padding:1rem 1.5rem;display:flex}.bardboard__title{color:var(--slate-100);letter-spacing:-.025em;text-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent);margin:0;font-size:1.5rem;font-weight:700}.bardboard__subtitle{color:var(--slate-500);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:500}.bardboard__body{flex-direction:column;display:flex}.bardboard__keyboard-area{padding:0}.bardboard__viz-toggle{color:var(--gray-400);border:1px solid var(--gray-700);cursor:pointer;background:0 0;border-radius:.25rem;align-items:center;gap:.25rem;margin-left:auto;padding:.25rem .5rem;font-size:.75rem;line-height:1;transition:all .15s;display:flex}.bardboard__viz-toggle:hover{color:var(--gray-200);border-color:var(--gray-500);background-color:color-mix(in srgb, var(--ink-000) 5%, transparent)}.bardboard__viz-toggle:focus{border-color:var(--blue-500);box-shadow:0 0 0 2px var(--tool-focus-halo);outline:none}.bardboard__viz-toggle-indicator{text-transform:uppercase;letter-spacing:.05em;font-size:.625rem}.bardboard__header:before{content:"";background:radial-gradient(circle at 30% 30%, var(--green-400), var(--green-500));width:.5rem;height:.5rem;box-shadow:0 0 4px var(--green-500), 0 0 8px color-mix(in srgb, var(--green-500) 50%, transparent);border-radius:50%;animation:2s ease-in-out infinite led-pulse}@keyframes led-pulse{0%,to{opacity:1}50%{opacity:.7}}@media (width<=768px){.bardboard{border-radius:.5rem;margin:0 .5rem}.bardboard__header{gap:.5rem;padding:.75rem 1rem}.bardboard__title{font-size:1.25rem}.bardboard__subtitle{font-size:.625rem}}@media (width<=480px){.bardboard__header{flex-wrap:wrap}.bardboard__title{font-size:1.125rem}.bardboard__subtitle{display:none}}.pattern-controls{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.pattern-controls label{color:var(--tool-label);white-space:nowrap;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;display:flex}.pattern-controls select{border:1px solid var(--tool-control-border);background:var(--tool-800);cursor:pointer;color:var(--text-on-accent);border-radius:4px;padding:.4rem .6rem;font-size:.9rem}.pattern-controls select:hover{border-color:var(--ink-400)}.pattern-controls select:focus{border-color:var(--indigo-500);outline:none}.pattern-playback{align-items:center;display:flex}.pattern-playback__controls{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.pattern-playback__control{align-items:center;gap:.5rem;display:flex}.pattern-playback__label{color:var(--tool-label);white-space:nowrap;font-size:.85rem}.pattern-playback__select{border:1px solid var(--tool-control-border);background:var(--tool-800);color:var(--text-on-accent);cursor:pointer;border-radius:4px;padding:.4rem .6rem;font-size:.9rem}.pattern-playback__select:hover{border-color:var(--ink-400)}.pattern-playback__select:focus{border-color:var(--indigo-500);outline:none}.pattern-playback__tempo{flex-direction:column;align-items:flex-start;gap:.25rem}.pattern-playback__slider{appearance:none;background:var(--ink-700);cursor:pointer;border-radius:3px;width:120px;height:6px}.pattern-playback__slider::-webkit-slider-thumb{appearance:none;background:var(--indigo-500);cursor:pointer;border-radius:50%;width:14px;height:14px}.pattern-playback__slider::-moz-range-thumb{background:var(--indigo-500);cursor:pointer;border:none;border-radius:50%;width:14px;height:14px}.pattern-playback__play-button{background:var(--indigo-500);color:var(--text-on-accent);cursor:pointer;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:background-color .15s}.pattern-playback__play-button:hover:not(:disabled){background:var(--indigo-550)}.pattern-playback__play-button:active:not(:disabled){background:var(--indigo-650)}.pattern-playback__play-button:disabled{background:var(--tool-control-disabled-bg);color:var(--tool-control-disabled-text);cursor:not-allowed}.pitch-panel{background:linear-gradient(to bottom, var(--tool-800), var(--tool-950));border:1px solid var(--gray-700);box-shadow:0 4px 12px color-mix(in srgb, var(--ink-1000) 30%, transparent);border-radius:.75rem;flex-direction:column;gap:1rem;max-width:1246.3px;margin-top:1rem;padding:1rem 1.5rem;display:flex}.pitch-panel__controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.pitch-panel__action-buttons{gap:1rem;display:flex}.pitch-panel__playback{border-top:1px solid var(--gray-700);padding-top:1rem}.pitch-panel__display{border-top:1px solid var(--gray-700);justify-content:space-between;align-items:center;padding-top:1rem;display:flex}.pitch-panel__content{align-items:center;gap:1rem;display:flex}.pitch-panel__label{color:var(--gray-500);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:500}.pitch-panel__value{color:var(--slate-100);min-width:3rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:1.5rem;font-weight:600}.pitch-panel__value--empty{color:var(--color-dark-putty)}.pitch-panel__toggle-group{border:1px solid var(--color-dark-putty);border-radius:.25rem;display:flex;overflow:hidden}.pitch-panel__toggle-button{cursor:pointer;color:var(--gray-400);background:0 0;border:none;padding:.375rem .75rem;font-size:.875rem;font-weight:600;transition:all .15s}.pitch-panel__toggle-button:hover{background:var(--gray-700)}.pitch-panel__toggle-button:focus-visible,.pitch-panel__octave-button:focus-visible{outline-offset:-2px;box-shadow:inset 0 0 0 2px var(--ring-guard-focus-on-dark), inset 0 0 0 4px var(--ring-focus-bright);outline:2px solid #0000}.pitch-panel__toggle-button--sharp.pitch-panel__toggle-button--active{background:var(--accidental-sharp);color:var(--text-on-accent-inverse)}.pitch-panel__toggle-button--flat.pitch-panel__toggle-button--active{background:var(--accidental-flat);color:var(--text-on-accent)}.pitch-panel__toggle-button--active:focus-visible{box-shadow:inset 0 0 0 2px var(--ring-guard-focus-on-dark), inset 0 0 0 4px var(--ink-1000)}.pitch-panel__toggles{align-items:center;gap:1rem;display:flex}.pitch-panel__checkbox-toggle{color:var(--gray-500);cursor:pointer;border:1px solid #0000;border-radius:.25rem;align-items:center;gap:.4rem;padding:.25rem .5rem;transition:all .15s;display:flex}.pitch-panel__checkbox-toggle:hover{color:var(--gray-400);background:color-mix(in srgb, var(--ink-000) 5%, transparent)}.pitch-panel__checkbox-toggle input[type=checkbox]{cursor:pointer;width:1rem;height:1rem;accent-color:var(--indigo-500)}.pitch-panel__checkbox-toggle input[type=checkbox]:checked+span{color:var(--slate-100);font-weight:600}.pitch-panel__checkbox-toggle span{font-size:.875rem;transition:color .15s}.pitch-panel__invert-button{border:1px solid var(--color-dark-putty);color:var(--gray-400);cursor:pointer;background:0 0;border-radius:.25rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;transition:all .15s}.pitch-panel__invert-button:hover:not(:disabled){background:var(--gray-700);color:var(--slate-100);border-color:var(--gray-500)}.pitch-panel__invert-button:focus-visible,.pitch-panel__spread-button:focus-visible{box-shadow:0 0 0 2px var(--ring-focus-bright), 0 0 0 4px var(--ring-guard-focus-on-dark);outline:2px solid #0000}.pitch-panel__invert-button:disabled{opacity:.4;cursor:not-allowed}.pitch-panel__spread-button{border:1px solid var(--color-dark-putty);color:var(--gray-400);cursor:pointer;background:0 0;border-radius:.25rem;padding:.375rem .75rem;font-size:.875rem;font-weight:500;transition:all .15s}.pitch-panel__spread-button:hover:not(:disabled){background:var(--gray-700);color:var(--slate-100);border-color:var(--gray-500)}.pitch-panel__spread-button:disabled{opacity:.4;cursor:not-allowed}.pitch-panel__spacer{background:var(--color-dark-putty);width:1px;height:2rem;margin:0 .25rem}.pitch-panel__octave-control{border:1px solid var(--color-dark-putty);border-radius:.25rem;align-items:center;gap:.25rem;display:flex;overflow:hidden}.pitch-panel__octave-button{color:var(--gray-400);cursor:pointer;background:0 0;border:none;padding:.375rem .5rem;font-size:1rem;font-weight:600;line-height:1;transition:all .15s}.pitch-panel__octave-button:hover:not(:disabled){background:var(--gray-700);color:var(--slate-100)}.pitch-panel__octave-button:disabled{opacity:.4;cursor:not-allowed}.pitch-panel__octave-label{color:var(--gray-500);text-transform:uppercase;padding:0 .25rem;font-size:.75rem;font-weight:500}@media (width<=480px){.pitch-panel__controls{flex-direction:column;align-items:stretch}.pitch-panel__display{flex-direction:column;align-items:stretch;gap:.75rem}.pitch-panel__content,.pitch-panel__toggles,.pitch-panel__toggle-group{justify-content:center}.pitch-panel__value{font-size:1.25rem}}.keyboard-page{box-sizing:border-box;width:fit-content;margin:0 auto;padding:2rem 1rem}.keyboard-page h1{text-align:center;margin:0 0 1rem}.keyboard-content{flex-direction:column;display:flex}.keyboard-hint{color:var(--gray-500);text-align:center;margin-top:1rem;font-size:.875rem}@media (width<=768px){.keyboard-page{padding:1rem 0}.keyboard-hint{margin-top:.75rem;font-size:.8125rem}}@media (width<=480px){.keyboard-page{padding:.75rem 0}.keyboard-hint{margin-top:.5rem;padding:0 .5rem;font-size:.75rem}}.simple-keyboard-page{box-sizing:border-box;width:fit-content;margin:0 auto;padding:2rem 1rem}.simple-keyboard-page h1{text-align:center;margin:0 0 1rem}.simple-keyboard-hint{color:var(--gray-500);text-align:center;margin-top:1rem;font-size:.875rem;line-height:1.5}.simple-keyboard-hint__clause{white-space:nowrap}.simple-keyboard-hint kbd{font:inherit;border:1px solid var(--border-control);border-bottom-width:2px;border-radius:.25em;padding:0 .375em;font-size:.8125em}@media (width<=480px){.simple-keyboard-page{padding:.75rem 0}.simple-keyboard-hint{margin-top:.5rem;padding:0 .5rem;font-size:.75rem}}.waterfall-view{background:var(--tool-900);overflow:auto hidden}.waterfall-view__inner{box-sizing:border-box;width:max-content;min-width:100%;margin-inline:auto}.waterfall-view__fall{height:24rem;position:relative;overflow:hidden}.waterfall-view__stripe{position:absolute;top:0;bottom:0}.waterfall-view__stripe--black{background:var(--tool-950)}.waterfall-view__notes{pointer-events:none;position:absolute;inset:0}.waterfall-view__layer{will-change:transform;position:absolute;bottom:0;left:0;right:0}.waterfall-view__bar-line{background:var(--tool-rule-strong);height:1px;position:absolute;left:0;right:0}.waterfall-view__note{box-sizing:border-box;border-radius:3px;transition:none;position:absolute}.waterfall-view__note--voice-0{background:linear-gradient(to bottom, var(--blue-500), var(--voice-0-fill));border:1px solid var(--voice-0-border)}.waterfall-view__note--voice-1{background:linear-gradient(to bottom, var(--green-500), var(--voice-1-fill));border:1px solid var(--voice-1-border)}.waterfall-view__note--black{z-index:2}.waterfall-view__note--playing{box-shadow:0 0 0 2px var(--ink-000), 0 0 12px color-mix(in srgb, var(--ink-000) 60%, transparent)}.waterfall-view__note--playing.waterfall-view__note--voice-0{background:linear-gradient(to bottom, var(--voice-0-playing), var(--blue-400))}.waterfall-view__note--playing.waterfall-view__note--voice-1{background:linear-gradient(to bottom, var(--voice-1-playing), var(--green-400))}.waterfall-view__status{color:var(--tool-text-muted);text-align:center;pointer-events:none;justify-content:center;align-items:center;margin:0;padding:0 1rem;font-size:.875rem;display:flex;position:absolute;inset:0}.waterfall-view__now-line{background:var(--green-500);height:2px}.waterfall-view .keyboard-wrapper{padding-top:0}.waterfall-view .keyboard{justify-content:center}@media (width<=768px){.waterfall-view__fall{height:18rem}}@media (width<=480px){.waterfall-view__fall{height:14rem}.waterfall-view__status{font-size:.75rem}}.simple-piano-roll-page{box-sizing:border-box;max-width:100%;margin:0 auto;padding:2rem 1rem;display:block}.simple-piano-roll-page h1{margin:0 0 1rem}.simple-piano-roll-controls{background:var(--tool-950);border-bottom:1px solid var(--tool-800);border-radius:.5rem .5rem 0 0;flex-wrap:wrap;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.simple-piano-roll-controls>:last-child{margin-left:auto}.simple-piano-roll-views{flex-direction:column;min-height:0;display:flex;position:relative}.simple-piano-roll-views__roll{flex-direction:column;min-height:0;display:flex}.simple-piano-roll-views__roll--hidden{visibility:hidden;position:absolute;inset:0}.simple-piano-roll-hint{color:var(--gray-500);text-align:center;margin-top:1rem;font-size:.875rem}@media (width<=768px){.simple-piano-roll-controls{gap:.5rem;padding:.5rem}.simple-piano-roll-controls>:last-child{margin-left:0}}@media (width<=480px){.simple-piano-roll-page{padding:.75rem .5rem}.simple-piano-roll-hint{margin-top:.5rem;padding:0 .5rem;font-size:.75rem}}.chord-construction{background:linear-gradient(to bottom, var(--slate-950), var(--slate-800));width:fit-content;max-width:100%;box-shadow:var(--panel-shadow);border-radius:.75rem;margin:2rem auto;overflow:hidden}.chord-construction__header{background:linear-gradient(to bottom, var(--slate-800), var(--slate-950));border-bottom:1px solid var(--slate-700);align-items:baseline;gap:.75rem;padding:1rem 1.5rem;display:flex}.chord-construction__header:before{content:"";background:radial-gradient(circle at 30% 30%, var(--green-400), var(--green-500));width:.5rem;height:.5rem;box-shadow:0 0 4px var(--green-500), 0 0 8px color-mix(in srgb, var(--green-500) 50%, transparent);border-radius:50%;flex-shrink:0;align-self:center;animation:2s ease-in-out infinite chord-construction-led-pulse}@keyframes chord-construction-led-pulse{0%,to{opacity:1}50%{opacity:.7}}.chord-construction__title{color:var(--slate-100);letter-spacing:-.025em;text-shadow:0 1px 2px color-mix(in srgb, var(--ink-1000) 30%, transparent);margin:0;font-size:1.5rem;font-weight:700}.chord-construction__subtitle{color:var(--slate-500);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:500}.chord-construction__body{flex-direction:column;display:flex}.chord-construction__table-container{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));overflow-x:auto}.chord-construction__table{border-collapse:collapse;white-space:nowrap;width:100%;font-size:.875rem}.chord-construction__table thead{background:linear-gradient(to bottom, var(--gray-800), var(--gray-900))}.chord-construction__table th,.chord-construction__table td{text-align:center;border-bottom:1px solid var(--gray-700);padding:.5rem .75rem}.chord-construction__table th:first-child{text-align:left}.chord-construction__table thead th{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.chord-construction__table tbody th{color:var(--gray-200);background:color-mix(in srgb, var(--gray-800) 50%, transparent);font-weight:500}.chord-construction__table tbody td{color:var(--gray-400)}.chord-construction__table tbody td.scale-degree{color:var(--blue-400);font-weight:700}.chord-construction__table tbody td.scale-degree--optional{color:var(--scale-degree-optional);font-weight:500}.chord-construction__sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chord-construction__table tbody td.example{color:var(--gray-500);font-style:italic}.chord-construction__table tbody td.example sup{font-size:.7em}.chord-construction__table tr.section-header{background:0 0}.chord-construction__table tr.section-header th{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;border-top:2px solid var(--slate-600);padding-top:1rem;font-size:.75rem;font-weight:600}.chord-construction__table tbody tr:not(.section-header):hover{background:color-mix(in srgb, var(--accent) 5%, transparent)}.chord-construction__controls{background:linear-gradient(to bottom, var(--gray-900), var(--gray-800));border-top:1px solid var(--gray-700);justify-content:center;gap:.75rem;padding:1rem 1.5rem;display:flex}.chord-construction__chevron{min-width:1.75rem;min-height:1.75rem;color:var(--gray-400);border:1px solid var(--color-dark-putty);cursor:pointer;background-color:#0000;border-radius:.375rem;justify-content:center;align-items:center;padding:.25rem .5rem;font-size:1rem;line-height:1;transition:all .15s;display:inline-flex}.chord-construction__chevron:hover:not(:disabled){color:var(--gray-200);background-color:var(--gray-700);border-color:var(--gray-500)}.chord-construction__chevron:disabled{opacity:.4;cursor:not-allowed}.chord-construction__tablist{background-color:var(--slate-950);border:1px solid var(--slate-700);box-shadow:inset 0 1px 2px color-mix(in srgb, var(--ink-1000) 40%, transparent);border-radius:.5rem;align-items:stretch;gap:.125rem;padding:.1875rem;display:inline-flex}.chord-construction__tab{min-height:1.5rem;color:var(--gray-400);cursor:pointer;background-color:#0000;border:none;border-radius:.375rem;padding:.25rem .625rem;font-size:.75rem;font-weight:500;transition:all .15s}.chord-construction__tab:hover{color:var(--gray-200);background-color:var(--gray-700)}.chord-construction__tab--active,.chord-construction__tab--active:hover{color:var(--blue-300);background-color:color-mix(in srgb, var(--accent) 18%, transparent);font-weight:700}.chord-construction__tab:focus-visible,.chord-construction__chevron:focus-visible{box-shadow:0 0 0 2px var(--slate-950), 0 0 0 4px var(--blue-400);outline:none}@media (width<=768px){.chord-construction{border-radius:.5rem;margin:1rem .5rem}.chord-construction__header{gap:.5rem;padding:.75rem 1rem}.chord-construction__title{font-size:1.25rem}.chord-construction__subtitle{font-size:.625rem}.chord-construction__table{font-size:.75rem}.chord-construction__table th,.chord-construction__table td{padding:.375rem .5rem}.chord-construction__controls{padding:.75rem 1rem}}@media (width<=480px){.chord-construction__header{flex-wrap:wrap}.chord-construction__subtitle{display:none}.chord-construction__table{font-size:.6875rem}.chord-construction__table th,.chord-construction__table td{padding:.25rem .375rem}.chord-construction__controls{flex-direction:row;gap:.5rem;padding:.75rem}.chord-construction__tablist{overflow-x:auto}}@media (prefers-reduced-motion:reduce){.chord-construction__tab,.chord-construction__chevron{transition:none}}.air-physics{background:var(--surface);width:100%;color:var(--slate-700);margin:0 auto;padding:1.25rem 1rem 1.5rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:block}.air-physics canvas{max-width:100%;display:block}.air-physics__canvas-wrap{aspect-ratio:680/240;width:100%;display:block;position:relative}.air-physics__label{text-align:center;color:var(--slate-600);margin:0;font-size:13px;line-height:1.4}.air-physics__label--air{margin-bottom:.4rem}.air-physics__label--trace{margin-top:.4rem}.air-physics__pluck-overlay{cursor:pointer;background:0 0;border:0;width:100%;height:100%;position:absolute;inset:0}.air-physics__pluck-overlay:focus-visible{outline:2px solid var(--indigo-600);outline-offset:-3px}.air-physics__controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:12px;display:flex}.air-physics__toggle,.air-physics__rewind{min-width:56px;min-height:44px;color:var(--slate-700);background:var(--surface);border:1px solid var(--slate-300);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:8px 16px;transition:background-color .12s,border-color .12s;display:inline-flex}.air-physics__toggle{color:var(--text-on-accent);background:var(--indigo-600);border-color:var(--indigo-600)}.air-physics__glyph{font-size:20px;line-height:1}.air-physics__rewind:hover:not(:disabled):not([aria-disabled=true]){background:var(--slate-100);border-color:var(--slate-400)}.air-physics__toggle:hover:not(:disabled){background:var(--indigo-700);border-color:var(--indigo-700)}.air-physics__toggle:focus-visible,.air-physics__rewind:focus-visible{outline:2px solid var(--indigo-600);outline-offset:2px}.air-physics__toggle:disabled,.air-physics__rewind:disabled,.air-physics__rewind[aria-disabled=true]{opacity:.55;cursor:not-allowed}.air-physics__caption,.air-physics figcaption{color:var(--slate-600);margin:.75rem 0 0;font-size:14px;line-height:1.45}.air-physics__sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.notation-examples{max-width:900px;margin:0 auto;padding:2rem 1rem 4rem}.notation-examples__title{margin:0 0 1.5rem;font-size:1.75rem}.notation-examples__list{margin:0;padding:0;list-style:none}.notation-examples__item{margin:0}.notation-examples__empty{color:var(--gray-500)}@media (width<=480px){.notation-examples{padding:1.5rem .75rem 3rem}}
