:root{color-scheme:light;--bg:#f5f3ed;--paper:#fffcf7;--white:#fff;--ink:#253d35;--muted:#69736a;--line:#dddcd1;--green:#254e40;--green-light:#e4eee6;--copper:#ad613d;--sand:#f1e5d5;--danger:#943c32;--shadow:0 4px 22px #26382b08;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.5}
*{box-sizing:border-box}html,body{margin:0;min-width:320px;min-height:100%;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea,[tabindex]{-webkit-tap-highlight-color:transparent}button{display:inline-flex;justify-content:center;align-items:center;gap:7px;min-height:38px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);padding:8px 13px;cursor:pointer;font-weight:600;line-height:1.3;transition:background .12s ease,border-color .12s ease}button:hover:not(:disabled){background:#efeee5;border-color:#abb5aa}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.46;cursor:not-allowed}button.primary{background:var(--green);border-color:var(--green);color:white}button.primary:hover:not(:disabled){background:#163b2e}button.danger{color:var(--danger)}button.selected,button[aria-pressed=true]:not(.favourite){border-color:var(--green);background:var(--green-light)}button.small{min-height:30px;padding:5px 9px;font-size:12px}button.ghost{border-color:transparent;background:transparent}.icon-button{width:38px;min-width:38px;height:38px;padding:4px;font-size:22px;background:transparent;border-color:transparent}.wide{width:100%}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--copper);outline-offset:3px}a{color:var(--green)}input,select,textarea{border:1px solid #c8cdc1;border-radius:6px;min-height:37px;background:#fffdf9;color:var(--ink);padding:7px 9px;max-width:100%}input[type=number]{width:100px}input[type=checkbox]{accent-color:var(--green);width:17px;height:17px;min-height:17px;flex-shrink:0;cursor:pointer}input[type=range]{min-height:24px;accent-color:var(--green);padding:0;width:100%}input:disabled,select:disabled{opacity:.65}select{cursor:pointer}textarea{min-height:90px;resize:vertical;width:100%}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,"Times New Roman",serif;font-size:37px;font-weight:500;letter-spacing:-1.05px;line-height:1.18;margin:8px 0 12px}h2{font-size:17px;font-weight:650;letter-spacing:-.2px;margin-bottom:10px}h3{font-size:15px;margin-bottom:8px}p{margin-bottom:12px}small,.hint{font-size:12px;color:var(--muted);line-height:1.55}.hint{display:block}.muted{color:var(--muted)}.fine-print{font-size:12px;color:var(--muted);margin:20px 0 0}.warning-text{color:var(--danger)}.button-row{display:flex;flex-wrap:wrap;gap:8px}.field{display:flex;flex-direction:column;align-items:stretch;gap:5px;min-width:0}.field-label{font-size:11px;color:var(--muted);font-weight:650;letter-spacing:.03em}.check{display:inline-flex;align-items:center;gap:6px;min-height:34px;font-size:12px;cursor:pointer}.badge{display:inline-flex;align-items:center;border-radius:5px;padding:4px 7px;background:#edf0e8;font-size:9px;line-height:1.35;font-weight:750;letter-spacing:.055em;white-space:nowrap}.badge.green{background:var(--green-light);color:#315643}.badge.sand{background:var(--sand);color:#82573d}.skip-link{position:fixed;top:10px;left:10px;z-index:200;transform:translateY(-180%);background:var(--paper);padding:10px}.skip-link:focus{transform:none}
.app-content{margin-left:215px;padding-bottom:190px}.save-state[hidden]{display:none}.save-state{margin-left:auto;display:inline-flex;align-items:center;gap:8px;font-size:10px;color:var(--muted)}.save-state.state-dirty,.save-state.state-saving{color:#93682d}.save-state.state-error,.save-state.state-conflict{color:var(--danger)}.page{max-width:1600px;margin:auto;padding:36px 38px 45px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:30px}.subtitle{font-size:12px;color:var(--muted);max-width:690px;line-height:1.65;margin-bottom:0}.heading-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}.heading-actions button{font-size:11px;min-height:39px}.notice{margin:14px 38px 0;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;gap:15px;border:1px solid #adc4ae;background:#edf4e9;border-radius:8px;font-size:12px;overflow-wrap:anywhere}.notice[hidden]{display:none}.notice.error-notice{background:#fff0e6;border-color:#d8ad98;color:#71372d}.notice button{white-space:nowrap}
.welcome-strip{display:flex;justify-content:space-between;gap:25px;background:#e8ece0;border:1px solid #dce2d4;border-radius:11px;padding:27px 29px;margin-bottom:33px;position:relative;overflow:hidden}.welcome-strip h2{font-family:Georgia,serif;font-size:24px;font-weight:500;letter-spacing:-.45px;margin:12px 0 8px}.welcome-strip p{font-size:11px;color:#617261;max-width:470px;margin:0}.welcome-metrics{display:flex;align-items:center;gap:35px}.welcome-metrics>div{display:flex;flex-direction:column;gap:4px;min-width:56px}.welcome-metrics strong{font-family:Georgia,serif;font-size:29px;font-weight:500}.welcome-metrics span{font-size:9px;color:var(--muted)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-header h2{margin:0;font-size:16px}.section-header>span{font-size:11px}.library-toolbar{display:flex;gap:12px;margin-bottom:21px}.library-toolbar input{flex:1;font-size:11px;min-height:40px}.library-toolbar select{font-size:11px;width:157px}.rhythm-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:19px;margin-bottom:33px}.rhythm-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:18px 20px 0;box-shadow:var(--shadow);min-width:0;transition:box-shadow .15s,transform .15s}.rhythm-card:hover{box-shadow:0 5px 22px #26382b12;transform:translateY(-2px)}.card-top{display:flex;align-items:center;justify-content:space-between}.favourite{font-size:24px;color:#84917d}.favourite[aria-pressed=true]{color:#ac7747}.card-metres{display:flex;align-items:baseline;margin:12px 0 8px;gap:6px}.metre-numerator{font-family:Georgia,serif;font-size:34px;line-height:1.1}.metre-denominator{font-size:17px;color:#89917f}.rhythm-card h3{font-size:14px;font-weight:650;letter-spacing:-.15px;min-height:21px;margin:8px 0}.card-summary{font-size:10px;color:var(--muted);margin-bottom:15px;min-height:15px}.pattern-glyphs{display:flex;gap:5px;padding:12px 0;justify-content:space-between;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}.glyph{display:flex;align-items:center;justify-content:center;width:23px;height:24px;border-radius:4px;font-size:10px;font-weight:700}.glyph.bass{background:#dee8dd;color:#315e45}.glyph.rim{background:#f4e4d6;color:#a76c3e}.glyph.quiet{color:#b8bcae;font-size:17px}.card-meta{display:flex;justify-content:space-between;gap:5px;font-size:9px;color:var(--muted);padding:13px 0}.card-open{display:flex;justify-content:space-between;width:calc(100% + 40px);margin-left:-20px;border:none;border-top:1px solid var(--line);border-radius:0 0 10px 10px;font-size:11px;min-height:43px;background:transparent;padding:12px 20px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:20px;box-shadow:var(--shadow);margin-bottom:19px;min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.panel-heading h2{margin:0;font-size:15px}.panel p{font-size:12px;color:var(--muted)}.panel>.field{margin-bottom:12px}.family-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.family-card{padding:13px;border:1px dashed #d5d8ca;border-radius:7px;display:flex;align-items:flex-start;flex-direction:column;gap:6px}.family-card strong{font-size:12px}.family-card small{font-size:9px}.family-card .badge{font-size:7px}.empty-state{text-align:center;padding:45px 25px;border:1px dashed #cbd2c3;border-radius:10px;margin:20px 0;background:#faf9f3}.empty-state p{font-size:12px;color:var(--muted);max-width:500px;margin:0 auto 20px}.empty-state h2{font-family:Georgia,serif;font-size:24px;font-weight:500}.editorial-note,.readonly-banner{background:#f1e8d9;border:1px solid #dfcfb5;padding:14px 17px;border-radius:7px;margin-bottom:19px;font-size:12px}.editorial-note p{margin:6px 0 0;font-size:12px}.readonly-banner{display:flex;justify-content:space-between;align-items:center;gap:15px}.readonly-banner button{font-size:11px;flex-shrink:0}
.practice-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:22px}.score-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.session-duration{display:flex;flex-direction:column;margin-bottom:17px}.session-duration strong{font-family:Georgia,serif;font-size:48px;font-weight:500;letter-spacing:-1.5px}.session-duration span{font-size:11px;color:var(--muted)}.mixer-track{border-top:1px solid var(--line);padding:14px 0 8px}.mixer-track-title{display:flex;justify-content:space-between;font-size:11px;gap:8px}.mixer-controls{display:flex;align-items:center;gap:11px;margin-top:9px}.mixer-controls .field{flex:1}.mixer-controls .field-label{font-size:9px}.mixer-controls .check{font-size:10px;gap:4px}.meter-label{display:flex;justify-content:space-between;font-size:10px;margin-top:15px}meter{width:100%;height:12px;margin:6px 0 12px}
.editor-titlebar{display:flex;align-items:flex-end;gap:18px;justify-content:space-between;margin-bottom:20px}.editor-titlebar>.field{flex:1;max-width:560px}.editor-titlebar input{font-size:16px;min-height:42px}.editor-navigation{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:17px 0}.editor-navigation select{font-size:11px;max-width:210px}.editor-navigation button{font-size:11px}.entry-palette{border:1px solid #ced9cc;background:#eef2e8;border-radius:8px;padding:15px;margin:0 0 20px}.palette-strokes{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:13px}.palette-strokes button{min-width:65px;min-height:57px;border-color:#c7d1c2}.palette-strokes button strong{display:block;font-size:19px;font-family:Georgia,serif;line-height:1.3}.palette-strokes button small{display:block;font-size:9px;font-weight:500}.palette-strokes button.selected{background:var(--green);color:#fff;border-color:var(--green)}.palette-strokes button.selected small{color:#d5e3d5}.palette-fields{display:flex;align-items:flex-end;gap:11px;flex-wrap:wrap}.palette-fields .field{max-width:145px}.palette-fields input[type=number]{width:73px}.palette-fields select{font-size:11px}.palette-fields>small{width:100%;font-size:10px}.grid-scroll{overflow:auto;max-width:100%;padding:3px}.beat-grid{min-width:max-content}.grid-row{display:grid;grid-template-columns:84px repeat(var(--cells),minmax(30px,1fr));gap:5px;align-items:center;margin:6px 0;min-width:100%}.grid-row-label{display:flex;align-items:center;gap:7px;padding-right:9px;font-size:11px}.grid-row-label strong{font-family:Georgia,serif;font-size:16px}.grid-row-label small{font-size:9px}.grid-counts{font-size:9px;text-align:center;color:var(--muted);padding-bottom:5px}.grid-counts .grid-row-label{font-size:9px}.grid-cell{min-width:30px;min-height:38px;padding:4px 6px;border-radius:5px;font-size:13px;background:#f4f4eb;color:#909d8a;border-color:#d7ddcf}.grid-cell.on{background:var(--green);border-color:var(--green);color:white!important}.grid-cell.continuation{background:#e7eee0;color:#5b785d}.grid-cell.incompatible{background:repeating-linear-gradient(135deg,#f1eee5,#f1eee5 5px,#e3dfd0 5px,#e3dfd0 6px);border-style:dashed;color:#79684e}.grid-cell.on.incompatible{color:var(--ink)!important}.bar-actions{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:22px}.bar-actions button{font-size:10px;min-height:33px}.score-notation{display:flex;flex-direction:column;gap:13px;min-width:0}.notation-bar{border:1px solid #dedfd4;border-radius:5px;background:var(--paper);overflow:hidden;break-inside:avoid}.notation-bar.current-measure{border-color:#96b197;box-shadow:0 0 0 1px #96b197}.bar-caption{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;background:#f0f2e9;border-bottom:1px solid #e2e4d8;font-size:10px;color:#6e7b67}.bar-caption button{font-size:9px;letter-spacing:.1em;font-weight:750;border:0;padding:0;min-height:25px;background:transparent}.staff-scroll{overflow:auto;padding:0 3px;max-width:100%}.staff-svg{display:block;width:100%;height:auto;min-width:320px;color:#243c33}.staff-label{font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px;fill:#58694f}.time-signature{font-family:Georgia,serif;font-size:16px;font-weight:bold;fill:currentColor}.hand-label{font-family:ui-sans-serif,system-ui,sans-serif;font-size:9px;fill:#52644c}.notation-hitbox{fill:transparent;stroke:transparent}.notation-event{cursor:pointer}.notation-event:hover .notation-hitbox{fill:#b1c69a22}.notation-event.selected .notation-hitbox{fill:#d6964a22;stroke:#b57137;stroke-width:1}.notation-event:focus-visible{outline:none}.notation-event:focus-visible .notation-hitbox{stroke:var(--copper);stroke-width:2}.staff-playhead{stroke:var(--copper);pointer-events:none;opacity:.8}.pagination{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:10px;color:var(--muted);margin-top:14px}.pagination button{font-size:10px;min-height:31px}.notation-legend{padding:14px 0 0;font-size:10px;border-top:1px solid var(--line);margin-top:17px}.notation-legend>strong{display:block;font-size:10px;font-weight:650}.legend-entries{display:flex;flex-wrap:wrap;gap:7px 13px;margin:9px 0}.legend-item{display:inline-flex;align-items:center;font-size:9px}.notation-legend>small{font-size:9px}.selection-summary{font-family:ui-monospace,monospace;font-size:11px!important;background:#f0f2e9;padding:9px;border-radius:4px;color:#426341!important}.selection-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.selection-tools button{font-size:11px}.selection-tools .field{max-width:110px}.selection-tools .check{max-width:170px;line-height:1.3}.selection-tools .field-label{font-size:9px}.chord-editor{margin-top:22px;padding-top:17px;border-top:1px solid var(--line)}.chord-hit{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-bottom:1px dashed var(--line);padding:10px 0}.chord-hit>strong{font-size:12px;min-width:90px}.chord-hit .field{max-width:135px}.chord-editor .button-row{margin-top:14px}.chord-editor .button-row button{font-size:10px}.panel>.hint:last-child{margin-top:15px;margin-bottom:0;font-size:10px}.range-panel{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:16px;margin:18px 0;border:1px solid var(--line);border-radius:8px}.range-panel>small{flex-basis:100%;font-size:10px}
.workbench-toolbar{display:flex;align-items:flex-end;gap:13px;flex-wrap:wrap;margin-bottom:20px;padding:15px;border:1px solid var(--line);border-radius:8px}.workbench-toolbar input[type=file]{max-width:330px;font-size:10px}.workbench-toolbar>span{font-size:10px}.workbench-split{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.4fr);gap:20px;align-items:start}.workbench-split.reference-hidden{grid-template-columns:minmax(0,1fr)}.workbench-split>.panel{position:sticky;top:15px;padding:16px}.workbench-editor{min-width:0}.embedded-editor .editor-navigation{gap:8px}.embedded-editor .editor-navigation .field{flex:1;min-width:90px}.embedded-editor .editor-navigation select{width:100%;max-width:150px;font-size:10px}.embedded-editor .editor-titlebar{align-items:flex-start;flex-wrap:wrap;gap:12px}.embedded-editor .editor-titlebar>.field{min-width:200px}.embedded-editor .editor-titlebar .button-row button{font-size:10px}.embedded-editor .panel{padding:15px}.reference-empty{text-align:center;background:#f3f1e8;border:1px dashed #c7ccbf;border-radius:7px;padding:35px 20px}.reference-icon{display:block;font-size:46px;color:#a7b39c;line-height:1.2;margin-bottom:20px}.reference-empty h3{font-family:Georgia,serif;font-size:19px;font-weight:500}.reference-empty p{font-size:11px}.reference-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-bottom:12px}.reference-controls strong{width:100%;overflow-wrap:anywhere;font-size:12px}.reference-controls button{font-size:9px;min-height:31px}.reference-controls .field-label{font-size:9px}.reference-controls select{font-size:10px;min-height:31px}.reference-viewport{max-height:65vh;overflow:auto;border:1px solid var(--line);background:#dddcd4;padding:8px;overscroll-behavior:contain}.reference-viewport img{display:block}.attachment-list{margin-top:17px;padding-top:15px;border-top:1px solid var(--line)}.attachment-list h3{font-size:12px}.attachment-list>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:10px 0}.attachment-list>div>span{font-size:10px;flex-basis:100%;overflow-wrap:anywhere}.attachment-list button{font-size:9px;min-height:28px;padding:4px 7px}
.add-block-bar{display:flex;align-items:flex-end;gap:13px;margin:20px 0;padding:20px;border:1px dashed #c3d1bf;border-radius:8px;background:#edf1e7}.add-block-bar>.field:first-child{flex:1}.composition-summary{display:flex;align-items:center;gap:35px;background:var(--green);color:white;padding:22px 25px;border-radius:9px;margin:24px 0}.composition-summary>div{display:flex;flex-direction:column}.composition-summary strong{font-family:Georgia,serif;font-size:30px;line-height:1.2;font-weight:500}.composition-summary span{font-size:10px;color:#cddcc9;margin-top:5px}.composition-summary button{margin-left:auto;border-color:#7d9b80}.block-list{display:flex;flex-direction:column;gap:16px;margin-bottom:25px}.composition-block{display:flex;gap:18px;border:1px solid var(--line);border-radius:9px;background:var(--paper);padding:20px;box-shadow:var(--shadow)}.block-number{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:35px;height:35px;border-radius:50%;background:#e7ebdd;font-size:11px;color:#65805e;font-weight:700}.block-content{flex:1;min-width:0}.block-heading{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.block-heading h2{margin:0;font-size:16px}.block-content>p{font-size:10px;margin:7px 0 14px}.block-fields{display:flex;gap:11px;flex-wrap:wrap;align-items:flex-end}.block-fields input[type=number]{width:75px}.block-fields select{font-size:11px;max-width:150px}.block-duration{margin-left:auto;display:flex;flex-direction:column;text-align:right;padding-bottom:4px}.block-duration strong{font-size:14px}.block-duration small{font-size:9px}.block-actions{display:flex;flex-direction:column;gap:6px;min-width:78px}.block-actions button{min-height:26px;font-size:10px;padding:4px 7px}.composition-page>.field{max-width:550px;margin:15px 0}.practice-layout .composition-page{padding:0}.data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:19px}.data-grid .panel{margin:0;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.data-grid .panel .panel-heading{margin:0}.data-grid .panel p{margin:0}.data-grid .panel .field{width:100%}.data-grid input[type=file]{font-size:10px;width:100%}.data-grid+.panel{margin-top:24px}.document-list{display:flex;flex-direction:column;gap:9px}.document-row{display:flex;align-items:center;justify-content:space-between;gap:17px;border-bottom:1px solid var(--line);padding:12px 0}.document-row>div:first-child{display:flex;flex-direction:column;gap:4px;min-width:0}.document-row strong{font-size:12px;overflow-wrap:anywhere}.document-row small{font-size:9px}.document-row button{font-size:10px}.video-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:25px}.video-card{display:flex;align-items:flex-start;flex-direction:column;gap:10px}.video-card h2{margin:0}.video-card p{margin:0}.video-card button{font-size:11px}#video-stage{margin:20px 0}#video-stage:empty{display:none}#video-stage iframe{width:100%;aspect-ratio:16/9;border:none;border-radius:9px;background:#152d23}.video-card .danger{margin-top:auto}
.transport{position:fixed;left:0;bottom:0;right:0;z-index:30;background:#fafbf5;border-top:1px solid #cfd6c6;box-shadow:0 -3px 18px #2b3c2a0b;padding:12px 25px 7px}.transport-main{max-width:1650px;margin:auto;display:grid;grid-template-columns:99px minmax(170px,1fr) 140px;align-items:center;gap:10px 17px}.transport-buttons{display:flex;gap:8px}.play-button{width:45px;height:44px;min-height:44px;border-radius:50%;border:0;background:var(--green);color:#fff;font-size:21px;padding-left:12px}.play-button:hover:not(:disabled){background:#38654a;color:white}.stop-button{width:38px;height:38px;border-radius:50%;align-self:center;background:transparent;font-size:14px;color:var(--green)}.transport-status{display:flex;flex-direction:column;gap:3px;min-width:0}.transport-status strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.transport-status span{font-size:10px;color:var(--muted);text-transform:capitalize}.transport-time{text-align:right;display:flex;flex-direction:column;font-variant-numeric:tabular-nums}.transport-time strong{font-family:Georgia,serif;font-size:23px;line-height:1.2;font-weight:500}.transport-time span{font-size:9px;color:var(--muted)}.transport-fields{grid-column:1/-1;display:flex;align-items:flex-end;justify-content:center;gap:14px;overflow-x:auto;max-width:100%;padding:1px 2px 4px;scrollbar-width:thin}.transport-fields .field{flex-shrink:0}.transport-fields .field-label{font-size:8px;letter-spacing:.035em}.transport-fields input,.transport-fields select{font-size:10px;min-height:31px;height:31px;padding:5px 7px}.transport-fields input[type=number]{width:71px}.transport-fields .check{white-space:nowrap;font-size:10px;padding-bottom:2px}.transport-fields select{max-width:147px}.transport-detail{max-width:1650px;margin:4px auto 0;text-align:center;font-size:9px;color:#65755e;min-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.modal{max-width:min(900px,calc(100vw - 30px));width:720px;max-height:88vh;border:1px solid #ccd4c6;background:var(--paper);color:var(--ink);border-radius:11px;padding:0;box-shadow:0 15px 60px #172d2555}.modal::backdrop{background:#152d2575;backdrop-filter:blur(2px)}.modal-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:18px 23px}.modal-heading h2{margin:0;font-size:18px;font-weight:600}.modal-body{padding:22px;max-height:65vh;overflow:auto}.modal-body p{font-size:12px}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:9px;padding:15px 22px;border-top:1px solid var(--line)}.modal-actions button{font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:17px}.form-grid .field input{width:100%}.mapping-table{display:flex;flex-direction:column;gap:10px;max-height:40vh;overflow:auto}.mapping-row{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line)}.mapping-row>strong{font-size:12px;min-width:65px;align-self:center}.mapping-row .field{min-width:60px;flex:1}.mapping-row input,.mapping-row select{width:100%;font-size:10px}.mapping-row code{display:block;width:100%;overflow-wrap:anywhere;font-size:10px}.modal-body>.field{margin-bottom:15px}.fatal-error{max-width:700px;padding:60px 20px;margin:auto}.print-only{display:none}
@media(min-width:1500px){.page{padding:43px 53px}.rhythm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.rhythm-card{padding:22px 25px 0}.card-open{width:calc(100% + 50px);margin-left:-25px;padding:13px 25px}.welcome-strip{padding:30px 35px}}
@media(max-width:1200px){.app-content{margin-left:190px}.page{padding:29px 25px}.notice{margin-left:25px;margin-right:25px}.page-heading{align-items:flex-start;gap:17px}.heading-actions{max-width:210px}.rhythm-grid{gap:14px}.rhythm-card{padding-left:15px;padding-right:15px}.card-open{margin-left:-15px;width:calc(100% + 30px);padding-left:15px;padding-right:15px}.welcome-metrics{gap:20px}.welcome-strip{padding:22px}.welcome-strip h2{font-size:22px}.welcome-metrics strong{font-size:25px}.practice-layout{grid-template-columns:minmax(0,1fr) 260px;gap:17px}.workbench-split{grid-template-columns:minmax(230px,.65fr) minmax(0,1.3fr);gap:15px}.composition-block{gap:13px;padding:16px}.block-duration{margin-left:0}}
@media(max-width:1000px){.rhythm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.welcome-metrics{display:none}.family-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-layout{grid-template-columns:1fr}.practice-layout>aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.practice-layout>aside>.panel{margin:0}.practice-layout>aside>.panel:last-child{grid-column:1/-1}.workbench-split{grid-template-columns:1fr}.workbench-split>.panel{position:static}.reference-viewport{max-height:420px}.heading-actions{max-width:190px}.editor-titlebar{align-items:flex-start;flex-wrap:wrap}.composition-summary{gap:20px;padding:20px}.composition-summary strong{font-size:24px}.composition-block{position:relative}.block-actions{min-width:60px}.data-grid{grid-template-columns:1fr}.video-grid{grid-template-columns:1fr}.data-grid .panel{padding:20px}.transport-fields{justify-content:flex-start}}
@media(max-width:760px){.app-content{margin-left:0;padding-bottom:182px}.save-state{font-size:9px;max-width:130px}.page{padding:27px 19px}.page-heading{margin-bottom:22px;gap:10px}h1{font-size:31px;letter-spacing:-.7px}.subtitle{font-size:11px}.heading-actions{max-width:150px}.heading-actions button{font-size:10px;padding:7px 9px;min-height:35px}.notice{margin:12px 15px 0;font-size:11px;padding:10px 11px}.notice button{font-size:10px}.welcome-strip{padding:21px;margin-bottom:25px}.rhythm-card h3{font-size:13px}.library-toolbar input,.library-toolbar select{font-size:10px}.library-toolbar select{width:130px}.panel{padding:17px}.panel-heading h2{font-size:14px}.readonly-banner{align-items:flex-start;font-size:11px;flex-direction:column}.editor-titlebar{gap:11px}.editor-titlebar>.field{width:100%;max-width:none;flex-basis:100%}.editor-titlebar input{font-size:14px}.editor-titlebar .button-row button{font-size:10px}.editor-navigation{gap:10px}.editor-navigation .field{flex:1;min-width:130px}.editor-navigation select{max-width:none;width:100%}.palette-fields{gap:9px}.palette-fields .field{max-width:none;min-width:92px;flex:1}.palette-strokes button{min-width:56px;min-height:53px}.palette-strokes{gap:6px}.palette-strokes button strong{font-size:18px}.palette-strokes button small{font-size:8px}.entry-palette{padding:12px}.staff-svg{min-width:330px}.bar-caption{font-size:9px;padding:6px 9px}.pagination{font-size:9px}.pagination button{font-size:9px;padding:6px}.notation-legend>strong{font-size:9px}.selection-tools .field{max-width:97px;min-width:75px}.selection-tools input[type=number]{width:85px}.chord-hit{gap:9px}.chord-hit .field{max-width:105px}.transport{padding:10px 12px 6px}.transport-main{grid-template-columns:83px minmax(100px,1fr) 93px;gap:6px 10px}.play-button{width:40px;height:40px;min-height:40px}.stop-button{width:32px;height:32px;min-height:32px}.transport-buttons{gap:5px}.transport-status strong{font-size:10px}.transport-status span{font-size:8px;line-height:1.4}.transport-time strong{font-size:21px}.transport-time span{font-size:8px}.transport-fields{gap:10px;padding-top:7px}.transport-fields input,.transport-fields select{font-size:10px}.transport-detail{font-size:8px}.composition-summary{flex-wrap:wrap;gap:20px}.composition-summary button{margin-left:0}.composition-summary span{font-size:9px}.composition-block{padding:15px;gap:11px}.block-number{width:26px;height:26px;font-size:9px}.block-heading h2{font-size:14px}.block-heading .badge{font-size:8px}.block-fields{gap:9px}.block-fields .field{flex:1;min-width:88px}.block-fields input[type=number],.block-fields select{width:100%;max-width:none;font-size:10px}.block-actions{min-width:42px}.block-actions button{font-size:8px;max-width:65px;white-space:normal}.block-duration{width:100%;flex-direction:row;gap:10px;align-items:center;text-align:left}.add-block-bar{padding:14px;gap:10px;flex-wrap:wrap}.add-block-bar>.field:first-child{flex-basis:65%}.add-block-bar>button{flex-basis:100%}.add-block-bar select{font-size:11px;width:100%}.document-row{align-items:flex-start}.document-row .button-row{flex-shrink:0}.modal-heading{padding:14px 17px}.modal-heading h2{font-size:16px}.modal-body{padding:17px}.modal-actions{padding:13px 17px}.form-grid{gap:13px}.reference-controls{gap:8px}.workbench-toolbar{padding:12px}.workbench-toolbar input[type=file]{max-width:100%;font-size:10px}}
@media(max-width:480px){.page-heading{flex-direction:column;gap:16px}.heading-actions{max-width:none;justify-content:flex-start}.rhythm-grid{gap:12px}.rhythm-card{padding:12px 12px 0}.card-open{margin-left:-12px;width:calc(100% + 24px);padding:11px 12px;font-size:10px}.card-top .badge{font-size:6px;padding:3px 4px}.favourite{width:25px;min-width:25px;height:25px;font-size:20px}.card-metres{margin-top:11px}.metre-numerator{font-size:28px}.metre-denominator{font-size:14px}.rhythm-card h3{font-size:12px;line-height:1.4;min-height:35px}.card-summary{font-size:9px;min-height:27px;line-height:1.5;margin-bottom:10px}.pattern-glyphs{gap:2px}.glyph{width:15px;height:20px;font-size:8px}.glyph.quiet{font-size:14px}.card-meta{flex-direction:column;gap:3px;font-size:8px;padding:10px 0}.family-card{padding:10px}.family-card .badge{font-size:6px;white-space:normal}.family-card strong{font-size:11px}.welcome-strip h2{font-size:22px}.practice-layout>aside{grid-template-columns:1fr}.practice-layout>aside>.panel:last-child{grid-column:auto}.family-grid{gap:9px}.panel{padding:15px}.palette-strokes{gap:5px}.palette-strokes button{min-width:49px;padding:6px 8px}.palette-fields .field{min-width:86px}.chord-hit>strong{width:100%}.grid-row{grid-template-columns:70px repeat(var(--cells),minmax(30px,1fr));gap:4px}.grid-row-label small{font-size:8px}.workbench-toolbar .field{max-width:100%}.bar-actions button{font-size:9px}.entry-palette{padding:11px}.composition-block{gap:8px}.block-number{display:none}.block-content{min-width:0}.block-fields .field{min-width:100px}.block-actions{min-width:38px}.block-actions button{max-width:52px;font-size:8px}.composition-summary{gap:20px}.composition-summary>div{min-width:70px}.document-row{flex-direction:column;gap:10px}.form-grid{grid-template-columns:1fr}.mapping-row .field{min-width:85px}.modal-actions button{font-size:10px}.transport-fields{scrollbar-width:none}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rhythm-card:hover,button:active:not(:disabled){transform:none}}
@media print{body{background:white;color:black;font-size:10pt}#app,.modal,.no-print{display:none!important}.print-only{display:block!important}#print-score{padding:8mm}#print-score h1{font-size:23pt;margin-bottom:4mm}#print-score>p{font-size:9pt;margin-bottom:5mm}.score-notation{gap:5mm}.notation-bar{border:0;break-inside:avoid;border-radius:0;overflow:visible}.bar-caption{background:none;border:0;padding:2mm 0;color:black;font-size:8pt}.bar-caption button{color:black;font-size:8pt}.staff-scroll{overflow:visible;padding:0}.staff-svg{width:100%!important;min-width:0;height:auto;color:black}.notation-hitbox{fill:none!important;stroke:none!important}.staff-playhead{display:none}.notation-event{cursor:default}.notation-legend{break-inside:avoid;border-color:#aaa;color:black}.notation-legend small,.staff-label,.hand-label{color:black;fill:black}.print-only .score-notation{display:block}.print-only .notation-bar{margin-bottom:5mm}@page{size:A4 portrait;margin:12mm}}
/* App layout: three main tasks and readable touch targets. */
:root{font-size:15px;--bg:#f7f8f5;--paper:#fff;--ink:#1e342d;--muted:#637269;--line:#dce2db;--green:#285945;--green-light:#e6f0e8;--sand:#f8ecd9;--copper:#97643d;--shadow:0 5px 24px #203b2b07}
body{font-size:15px}button,input,select,textarea{font-size:14px}button,button.small,.icon-button,input,select{min-height:44px}button.small{font-size:13px}button{border-radius:9px;padding:10px 15px}button:focus-visible,summary:focus-visible{outline:3px solid #c28741;outline-offset:3px}h1{font-size:40px;letter-spacing:-1.2px;line-height:1.15}h2{font-size:19px}h3{font-size:18px}.subtitle{font-size:15px;max-width:620px}.hint,small,.fine-print{font-size:13px;line-height:1.6}.field-label,.check{font-size:13px}.badge{font-size:11px;border-radius:20px;padding:5px 10px;letter-spacing:.025em}.page{max-width:1270px;padding:38px 42px 50px}.page-heading{margin-bottom:28px;align-items:flex-start}.heading-actions{flex-shrink:1}.heading-actions button{font-size:14px;min-height:44px}.app-content{margin-left:205px;padding-bottom:132px}.save-state{font-size:12px}.notice{font-size:14px;margin:18px 42px 0}.library-toolbar{gap:16px;margin-bottom:26px}.library-toolbar input[type=search]{font-size:15px;min-height:48px}.library-toolbar select{font-size:14px;min-height:48px;min-width:205px}.section-header{margin-bottom:18px}.section-header h2{font-size:21px}.rhythm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.rhythm-card{padding:22px 21px 0;background:white;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.rhythm-card:hover{transform:none;border-color:#9bb59b}.card-top .badge{font-size:10px}.favourite{width:44px;height:44px;font-size:25px}.card-title{display:flex;align-items:baseline;gap:10px;margin-top:18px;justify-content:space-between}.card-title h3{font-size:21px;line-height:1.3;min-height:0;margin-bottom:18px;font-family:Georgia,serif;font-weight:500}.meter-pill{font-size:13px;color:var(--muted);white-space:nowrap}.card-meta{font-size:12px;display:flex;flex-direction:row;justify-content:space-between;margin:12px 0 0;padding:13px 0;gap:8px}.card-open{margin-left:-21px;width:calc(100% + 42px);border:0;border-top:1px solid var(--line);background:#fafbf8;border-radius:0;font-size:14px;padding:14px 21px;min-height:50px;color:#285945}.pulse-rail{overflow-x:auto;overscroll-behavior-inline:contain;width:100%;padding:6px 0}.pulse-track{margin-bottom:16px}.pulse-track-name{font-size:13px;color:var(--muted);font-weight:600;margin:0 0 10px}.pulse-lane{display:grid;grid-template-columns:repeat(var(--pulses),minmax(48px,1fr));gap:8px;width:100%;min-width:max-content}.pulse-cell{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;min-width:48px;min-height:108px;background:#f3f5f0;border:1px solid #e1e6dd;border-radius:10px;color:#859083;padding:9px 7px}.pulse-cell strong{font-size:27px;font-weight:600}.pulse-cell small{font-size:11px;line-height:1.2;min-height:14px}.pulse-cell.attack{background:#eef2df;border-color:#d6dfc3;color:#4c613b}.pulse-cell.bass{background:#e4eee6;color:#245a43;border-color:#c2d6c2}.pulse-cell.playing{background:#285945;color:white;border-color:#285945;box-shadow:0 0 0 2px #c4d9be}.pulse-cell.playing small{color:#ecf5e8}.pulse-rail.compact{padding:0;overflow:hidden;pointer-events:none}.compact .pulse-track{margin:0}.compact .pulse-lane{gap:4px;grid-template-columns:repeat(var(--pulses),minmax(0,1fr));min-width:0}.compact .pulse-cell{padding:3px 1px;min-height:34px;min-width:0;border-radius:5px}.compact .pulse-cell strong{font-size:13px}.practice-breadcrumb{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px;margin:-12px 0 20px}.practice-breadcrumb button{padding-left:0}.practice-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}.panel{padding:24px;border-radius:14px;margin-bottom:22px;box-shadow:var(--shadow);min-width:0}.panel-heading{margin-bottom:20px;gap:15px;flex-wrap:wrap}.panel-heading h2{font-size:19px}.tempo-panel{display:flex;align-items:center;gap:34px;padding:23px 30px}.tempo-number{min-width:92px;display:flex;flex-direction:column;align-items:center;line-height:1.1}.tempo-number strong{font-size:46px;font-weight:500;letter-spacing:-2px}.tempo-number>span{font-size:11px;color:var(--muted);letter-spacing:.12em;margin-top:5px}.tempo-slider{flex:1;min-width:0}.tempo-slider .field-label{position:absolute;clip:rect(0 0 0 0);width:1px;height:1px;overflow:hidden}.tempo-slider input{height:44px;min-height:44px}.tempo-ticks{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);gap:10px}.segmented{display:flex;padding:3px;border:1px solid var(--line);border-radius:10px;background:#f5f6f1;gap:2px}.segmented button{border:0;min-height:36px;font-size:13px;background:transparent;padding:7px 15px}.segmented button[aria-pressed=true]{background:white;color:#285945;box-shadow:0 1px 4px #2944321a}.simple-legend{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:18px 0}.phrase-panel .hint{margin:0}.disclosure{border:1px solid var(--line);border-radius:12px;background:white;margin:20px 0}.disclosure>summary{min-height:52px;padding:15px 20px;font-size:14px;font-weight:600;cursor:pointer}.disclosure-body{padding:4px 20px 20px}.disclosure-body p{font-size:14px;line-height:1.65}.disclosure-body .panel{box-shadow:none;border:0;padding:0}.disclosure .notation-legend{margin-bottom:0}.workspace-tabs{display:flex;gap:5px;margin:-8px 0 24px;border-bottom:1px solid var(--line);padding-bottom:10px;flex-wrap:wrap}.workspace-tabs button{font-size:14px;min-height:42px}.entry-palette{padding:16px;background:#fafbf7;border-radius:12px}.palette-strokes button{min-width:65px;min-height:58px}.palette-strokes strong{font-size:22px}.palette-strokes small{font-size:12px}.palette-fields{margin-top:14px}.editor-titlebar,.editor-navigation{gap:15px}.editor-navigation{flex-wrap:wrap}.editor-navigation .field{min-width:110px}.editor-titlebar input{font-size:18px}.editor-titlebar>.field{flex:1}.grid-row{grid-template-columns:90px repeat(var(--cells),minmax(42px,1fr));gap:7px}.grid-cell{min-height:48px;padding:5px;font-size:17px}.grid-row-label strong{font-size:16px}.grid-row-label small{font-size:11px}.grid-row.grid-counts{font-size:12px}.grid-scroll{overflow-x:auto;max-width:100%}.bar-actions{gap:8px;flex-wrap:wrap}.bar-actions button{font-size:13px;min-height:44px}.selection-tools{gap:14px}.workbench-split{grid-template-columns:minmax(270px,.85fr) minmax(0,1.25fr);gap:22px}.workbench-split.reference-hidden{grid-template-columns:1fr}.workbench-editor{min-width:0}.reference-viewport{max-height:75vh;background:#e8eae6}.reference-controls{flex-wrap:wrap;gap:10px}.reference-controls>strong{flex-basis:100%;overflow-wrap:anywhere}.workbench-toolbar{gap:14px;flex-wrap:wrap;font-size:13px}.composition-page .heading-actions{min-width:0}.composition-summary strong{font-size:28px}.composition-summary span,.composition-summary .hint{font-size:13px}.block-fields input,.block-fields select{font-size:14px;min-height:44px}.block-actions button{font-size:12px;min-height:40px;max-width:none}.block-fields{gap:13px}.composition-block{border-radius:14px;padding:22px;gap:18px}.block-heading h2{font-size:22px}.block-heading .badge{font-size:10px}.add-block-bar{border-radius:13px;padding:20px;gap:16px;flex-wrap:wrap}.add-block-bar select{font-size:14px}.document-row small{font-size:12px}.video-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.video-card h2{font-size:22px}.video-card>button{margin:5px 5px 0 0}.video-card>p{font-size:14px}.empty-state{font-size:15px}.empty-state h2{font-size:24px}.modal{max-width:min(760px,calc(100vw - 28px));border-radius:15px;font-size:15px}.modal-heading{padding:23px 25px}.modal-heading h2{font-size:22px}.modal-body{padding:24px 25px}.modal-body>.field,.modal-body>div>.field{margin-bottom:18px}.modal-actions{padding:18px 25px;gap:10px}.modal-actions button{font-size:14px}.modal .field-label{font-size:13px}.form-grid{gap:18px}.modal .panel{padding:18px}.modal .mixer-track{padding:16px 0}.modal .mixer-controls{gap:18px}.transport{left:205px;right:0;bottom:0;width:auto;min-height:112px;padding:15px 30px 9px;background:#fffffff5;border-top:1px solid #ccd7ca;box-shadow:0 -5px 24px #24452b08;z-index:30;backdrop-filter:blur(12px)}.transport-main{display:flex;align-items:center;gap:20px;min-width:0}.transport-buttons{display:flex;gap:7px;align-items:center}.transport-play{min-width:54px;width:54px;height:54px;border-radius:50%;font-size:23px;background:var(--green);color:white;padding:8px}.transport-stop{width:42px;min-width:42px;height:44px;border:0;border-radius:9px;font-size:18px;background:#f1f5ef;color:var(--green)}.transport-source{display:flex;flex-direction:column;min-width:110px;flex:1;max-width:360px;gap:3px}.transport-title{background:none;border:0;display:block;text-align:left;min-height:0;padding:0;color:var(--ink);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.transport-source>span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.compact-tempo{display:flex;gap:10px;align-items:end}.compact-tempo input{width:76px;font-size:16px;text-align:center;min-height:38px;padding:7px 5px}.compact-tempo select{width:110px;font-size:12px;min-height:38px}.compact-tempo .field-label{font-size:10px}.transport-time{min-width:105px;display:flex;flex-direction:column}.transport-time strong{font-size:19px;font-weight:500;font-variant-numeric:tabular-nums}.transport-time small{font-size:11px;white-space:nowrap}.transport-main>button{font-size:12px;min-height:40px;padding:8px 11px}.transport-detail{font-size:10px;padding:7px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);min-height:19px}.transport-fields{display:none}.staff-scroll{overflow-x:auto}.staff-svg{touch-action:pan-x pan-y}.staff-label{font-size:13px}.notation-legend{font-size:13px}.notation-legend small{font-size:12px}.print-only{display:none}
@media(min-width:1500px){.page{padding-left:55px;padding-right:55px}.rhythm-grid{gap:24px}}
@media(max-width:1150px){.rhythm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.transport{padding-left:20px;padding-right:20px}.transport-main{gap:12px}.transport-time{display:none}.page{padding:30px}.workbench-split{grid-template-columns:1fr}.reference-viewport{max-height:55vh}.transport-source{min-width:70px}}
@media(max-width:800px){.app-content{margin-left:0;padding-bottom:145px}.save-state{font-size:11px}.page{padding:28px 22px 40px}.notice{margin:14px 22px 0}.transport{left:0;padding:12px 18px 8px}.transport-main{gap:12px;flex-wrap:wrap}.transport-source{max-width:none;flex:1;min-width:120px}.compact-tempo select{width:95px}.transport-buttons{gap:6px}.transport-play{width:50px;height:50px;min-width:50px}.transport-main>button{padding:8px 10px;min-height:42px}.transport-detail{display:none}.page-heading{gap:16px}.heading-actions{max-width:50%}.block-actions{flex-direction:row;flex-wrap:wrap}.composition-block{flex-wrap:wrap}.block-content{min-width:0}.block-actions button{font-size:13px}.block-number{font-size:19px}.workbench-toolbar .field{max-width:100%}.workbench-toolbar input{max-width:100%}}
@media(max-width:600px){h1{font-size:34px}.page-heading{flex-direction:column;gap:16px;margin-bottom:24px}.heading-actions{max-width:none;justify-content:flex-start}.library-toolbar{display:flex;flex-direction:column;gap:12px}.library-toolbar input,.library-toolbar select{width:100%;min-width:0}.rhythm-grid{grid-template-columns:1fr;gap:16px}.rhythm-card{padding:20px 20px 0}.card-top .badge{font-size:11px}.card-title h3{font-size:25px;min-height:0;margin:0 0 20px}.card-meta{font-size:13px;flex-direction:row}.compact .pulse-cell{min-height:38px}.compact .pulse-cell strong{font-size:15px}.card-open{margin-left:-20px;width:calc(100% + 40px);font-size:15px;min-height:51px;padding:14px 20px}.section-header h2{font-size:20px}.tempo-panel{padding:18px;gap:20px}.tempo-number{min-width:64px}.tempo-number strong{font-size:37px}.tempo-ticks{font-size:10px}.tempo-ticks span:nth-child(2){display:none}.panel{padding:19px}.phrase-panel .panel-heading{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.segmented{width:100%}.segmented>button{flex:1;min-height:38px;font-size:13px}.pulse-cell{min-height:97px;min-width:46px}.pulse-lane{grid-template-columns:repeat(var(--pulses),minmax(46px,1fr));gap:6px}.compact .pulse-lane{grid-template-columns:repeat(var(--pulses),minmax(0,1fr))}.simple-legend{gap:12px;font-size:12px}.practice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.practice-actions button{font-size:13px;min-height:45px}.disclosure>summary{font-size:13px}.transport{padding:11px 14px 13px;min-height:133px}.transport-main{display:grid;grid-template-columns:96px minmax(0,1fr) 64px;gap:8px 12px}.transport-buttons{grid-column:1;grid-row:1}.transport-source{grid-column:2/4;grid-row:1;min-width:0}.transport-title{font-size:14px}.compact-tempo{grid-column:1/3;grid-row:2;gap:10px;align-items:center}.compact-tempo>.field{flex-direction:row;align-items:center;gap:7px}.compact-tempo input{width:70px;min-height:38px;font-size:15px}.compact-tempo select{width:103px;min-height:38px;font-size:11px}.compact-tempo .field-label{font-size:11px}.compact-tempo>.field:last-child>.field-label{display:none}.transport-main>button{grid-column:3;grid-row:2;min-height:40px;font-size:12px}.transport-main>button:last-child{display:none}.transport-source>span{font-size:11px}.editor-titlebar{flex-direction:column;align-items:stretch}.editor-titlebar .button-row{gap:8px}.editor-titlebar button{font-size:12px;min-height:44px}.editor-navigation{gap:12px}.editor-navigation .field{flex:1;min-width:120px}.entry-palette{padding:13px}.palette-strokes{flex-wrap:wrap;gap:7px}.palette-strokes button{min-width:55px;min-height:54px;padding:7px 10px}.palette-strokes small{font-size:11px}.palette-fields .field{min-width:95px}.grid-row{grid-template-columns:80px repeat(var(--cells),minmax(44px,1fr));gap:5px}.grid-row-label small{font-size:10px}.grid-cell{min-height:46px;font-size:16px}.bar-actions button{font-size:12px;min-height:44px}.composition-block{padding:18px;gap:14px}.block-fields .field{min-width:108px;flex:1}.block-heading .badge{font-size:9px}.block-fields input{width:100%}.composition-summary{gap:22px;flex-wrap:wrap}.composition-summary>button{width:100%}.add-block-bar{padding:18px;gap:13px}.add-block-bar>.field:first-child{flex-basis:100%}.add-block-bar>button{width:100%}.add-block-bar select{width:100%;font-size:13px}.video-grid{grid-template-columns:1fr}.data-grid{grid-template-columns:1fr}.modal-heading{padding:19px}.modal-heading h2{font-size:20px}.modal-body{padding:19px}.modal-actions{padding:16px 19px}.modal-actions button{font-size:13px}.form-grid{grid-template-columns:1fr}.reference-controls{gap:12px}.document-row{gap:12px}.workspace-tabs>button{font-size:13px}}
@media(prefers-reduced-motion:reduce){.pulse-cell{transition:none}}
@media print{body{background:white}.transport,.app-content,.disclosure,.no-print{display:none!important}.print-only{display:block!important}#print-score .notation-legend{display:block}.staff-scroll{overflow:visible}}

/* Integrated library / reference refinements */
.pdf-native-viewer{width:100%;height:68vh;min-height:450px;border:1px solid var(--line);border-radius:12px;background:white}
.lesson-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.lesson-card{display:grid;grid-template-columns:50px 1fr;gap:16px;padding:22px}.lesson-card h2{margin:12px 0 8px;font-size:20px}.lesson-monogram{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#eaf0e9;color:#385e49;font-size:24px}.credit-details summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-size:12px;color:var(--muted)}.video-player iframe{width:100%;height:min(55vw,520px);border:0}.entry-options>summary{padding:12px;cursor:pointer;min-height:44px}.entry-options{border:1px solid var(--line);border-radius:10px;margin-top:12px}.entry-options>div{padding:0 12px 12px}.lesson-card .button-row{margin-top:12px}
@media(max-width:1000px){.lesson-grid{grid-template-columns:1fr}}@media(max-width:600px){.lesson-card{grid-template-columns:1fr}.lesson-monogram{display:none}.pdf-native-viewer{min-height:360px}}

.grid-cell.on{background:#285744;color:#fff!important;border-color:#285744}.grid-cell.on:hover:not(:disabled){background:#1e4534}.grid-cell.on.incompatible{color:#1f3b2e!important}.staff-svg{min-width:500px;max-width:1100px;margin-inline:auto}.menu-close,.pulse-cell.playing{outline:2px solid #285744;outline-offset:1px}

@media print{.staff-svg{min-width:0;max-width:none}.menu-close,}

/* Explicit score zoom must not be silently capped by the desktop layout. */
.staff-svg[style] { max-width:none; }

/* Keep navigation and the real save state reachable when a mobile page is long. */

#main-content{scroll-margin-top:80px}

/* Ensemble practice: real score events and live instrument controls. */
.variation-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:-4px 0 22px}.variation-bar>.field{flex-direction:row;align-items:center;gap:14px}.variation-bar select{min-width:230px;background:#fff}.rhythm-neighbours{display:flex;gap:8px}.rhythm-neighbours button{font-size:13px;padding-inline:9px}.practice-page .page-heading{margin-bottom:20px}.practice-page .subtitle{max-width:670px}.practice-page .tempo-panel{padding-block:15px}.practice-page .tempo-number strong{font-size:38px}.ensemble-panel{padding:25px 27px 20px}.ensemble-panel .panel-heading{margin-bottom:14px;align-items:center}.ensemble-panel .panel-heading h2{font-family:Georgia,serif;font-size:25px;font-weight:500;margin:0 0 5px}.ensemble-panel .panel-heading p{font-size:13px}.ensemble-panel .segmented{flex-shrink:0}.ensemble-matrix{--instrument-width:190px;--steps:16;overflow:visible;padding:0;width:100%}.ensemble-ruler,.instrument-row{display:grid;grid-template-columns:var(--instrument-width) minmax(0,1fr);gap:20px;align-items:center}.ensemble-ruler{margin-bottom:6px}.ensemble-ruler>span{font-size:9px;letter-spacing:.16em;color:var(--muted);padding-left:3px}.ensemble-counts,.instrument-part{display:grid;grid-template-columns:repeat(var(--steps),minmax(0,1fr));gap:3px}.ensemble-counts span{text-align:center;font-size:10px;color:#809184;font-variant-numeric:tabular-nums;padding:5px 0}.ensemble-counts .beat-start{font-weight:700;color:var(--ink)}.instrument-row{padding:13px 0;border-top:1px solid #e9ede5}.instrument-controls{min-width:0}.instrument-toggle{display:flex;width:100%;gap:10px;align-items:center;text-align:left;border:0;background:none;padding:0;min-height:45px;border-radius:7px}.instrument-toggle:hover:not(:disabled){background:#f4f6ef}.instrument-icon{display:grid;place-items:center;flex-shrink:0;width:43px;height:43px;border-radius:50%;background:#edf2e9;color:#42644b;border:1px solid #e0e8da}.instrument-icon svg{width:36px;height:36px}.instrument-icon.dahola{background:#f3ece3;color:#97643d;border-color:#e9dccb}.instrument-icon.bendir{background:#f5eee5;color:#8c734d;border-color:#e8decc}.instrument-icon.riq{background:#e7eeeb;color:#517a6c}.instrument-icon.sagats{background:#f6f0de;color:#9c8033;border-color:#eae0be}.instrument-name{display:flex;flex-direction:column;gap:1px;flex:1}.instrument-name strong{font-size:14px;font-weight:600}.instrument-name small{font-size:10px;color:var(--muted);line-height:1.3}.instrument-switch{width:25px;height:15px;border-radius:10px;background:#cbd4ca;position:relative;flex-shrink:0}.instrument-switch:after{content:'';position:absolute;width:11px;height:11px;top:2px;left:2px;border-radius:50%;background:#fff;transition:transform .12s}.instrument-toggle[aria-pressed=true] .instrument-switch{background:var(--green)}.instrument-toggle[aria-pressed=true] .instrument-switch:after{transform:translateX(10px)}.instrument-mix{display:flex;gap:8px;align-items:center;margin:5px 0 0 53px}.instrument-solo{min-height:28px!important;font-size:10px!important;padding:4px 8px!important;border-radius:6px;line-height:1}.instrument-solo[aria-pressed=true]{background:var(--green);color:white;border-color:var(--green)}.instrument-mix input[type=range]{appearance:none;-webkit-appearance:none;min-height:26px;height:26px;flex:1;width:42px;min-width:0;border:0;background:transparent;cursor:pointer;padding:0;accent-color:#66866b}.instrument-mix input::-webkit-slider-runnable-track{height:3px;border-radius:3px;background:#d4decf}.instrument-mix input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;height:10px;width:10px;border-radius:50%;margin-top:-3.5px;background:#66866b}.instrument-state{font-size:9px;color:var(--muted);min-width:20px;line-height:1.1;text-align:right}.instrument-part{height:75px;min-height:75px;border:0;border-radius:7px;background:transparent;padding:0;width:100%;position:relative}.instrument-part:hover:not(:disabled){background:transparent}.ensemble-cell{display:flex;align-items:flex-end;justify-content:center;position:relative;height:100%;min-width:0;background:#f1f4ee;border-radius:3px;overflow:hidden;border-bottom:2px solid #e0e8d9}.ensemble-cell.beat-start{background:#e9eee4;border-left:1px solid #c6d4bf}.ensemble-hit{height:var(--hit-height);width:100%;display:flex;align-items:flex-end;justify-content:center;padding-bottom:9px;background:#6f927c;color:white;font-size:12px;font-weight:600;border-radius:2px 2px 0 0}.bass-hit .ensemble-hit{background:#b87350}.ghost-hit .ensemble-hit{background:#adbeac;color:#314c36;font-weight:400}.metal-hit .ensemble-hit{background:#b39a5b;color:white}.ensemble-rest{font-size:15px;color:#b6c1af;padding-bottom:8px}.ensemble-cell.playing{background:#d8e4d1;outline:2px solid #285945;outline-offset:-2px;box-shadow:inset 0 3px 0 #285945}.ensemble-cell.playing .ensemble-hit{filter:brightness(.83)}.instrument-row.is-muted .instrument-part{opacity:.3}.instrument-row.is-muted .instrument-icon{filter:grayscale(1);opacity:.6}.instrument-row.is-muted .instrument-name{color:#798477}.instrument-part:focus-visible{outline:3px solid #c28741;outline-offset:3px}.ensemble-legend{display:flex;gap:10px 20px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.ensemble-legend span{display:flex;align-items:center;gap:6px}.ensemble-legend i{height:8px;width:8px;border-radius:2px}.legend-dum{background:#b87350}.legend-tek{background:#6f927c}.ensemble-summary{font-size:11px;color:var(--muted);margin:15px 0 0;min-height:17px}.keyboard-hint{margin-top:10px!important;font-size:11px}.practice-sound-note{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:-5px 0 22px;color:var(--muted);font-size:12px}.practice-sound-note>span:first-child{font-size:20px}.practice-sound-note button{padding:4px 7px;min-height:32px;font-size:12px;text-decoration:underline;text-underline-offset:3px}
@media(min-width:1400px){.ensemble-matrix{--instrument-width:210px}.instrument-part{height:82px}}
@media(max-width:1080px){.ensemble-panel{padding:22px 20px}.ensemble-matrix{--instrument-width:165px}.ensemble-ruler,.instrument-row{gap:13px}.instrument-toggle{gap:7px}.instrument-icon{width:35px;height:39px;border:0}.instrument-icon svg{width:33px}.instrument-mix{margin-left:42px;gap:5px}.instrument-name strong{font-size:13px}.ensemble-counts,.instrument-part{gap:2px}.ensemble-hit{font-size:11px}.variation-bar{gap:10px}.variation-bar select{min-width:0}.rhythm-neighbours{gap:0}.ensemble-panel .panel-heading{align-items:flex-start;flex-direction:column;gap:15px}.ensemble-panel .segmented{width:auto}}
@media(max-width:600px){.practice-page{padding:22px 16px 35px}.practice-page .page-heading{gap:14px}.practice-page .page-heading .subtitle{font-size:13px;line-height:1.6}.practice-page .heading-actions button{font-size:12px;min-height:38px}.variation-bar{align-items:stretch;flex-direction:column;gap:7px;margin-bottom:16px}.variation-bar>.field{justify-content:space-between}.variation-bar select{flex:1;max-width:270px}.rhythm-neighbours{justify-content:space-between}.rhythm-neighbours button{min-height:36px;padding:5px 0}.practice-page .tempo-panel{padding:13px 18px;gap:20px}.practice-page .tempo-number strong{font-size:32px}.ensemble-panel{padding:20px 14px 17px}.ensemble-panel .panel-heading{gap:14px;margin-bottom:15px}.ensemble-panel .panel-heading h2{font-size:23px}.ensemble-panel .segmented{width:100%}.ensemble-panel .segmented button{padding:7px 8px;font-size:12px}.ensemble-ruler{display:block;position:relative;height:27px}.ensemble-ruler>span{display:none}.ensemble-counts{width:100%}.instrument-row{display:flex;flex-direction:column;align-items:stretch;gap:9px;padding:11px 0 14px}.instrument-controls{display:flex;align-items:center;justify-content:space-between;gap:12px}.instrument-toggle{width:auto;flex:1;gap:9px}.instrument-icon{width:33px;height:36px}.instrument-name strong{font-size:13px}.instrument-name small{font-size:10px}.instrument-switch{margin-left:5px}.instrument-mix{margin:0;max-width:125px;min-width:100px;gap:7px}.instrument-mix input{width:35px}.instrument-solo{min-height:36px!important;padding:7px!important}.instrument-state{font-size:9px}.instrument-part{height:59px;min-height:59px}.ensemble-hit{font-size:10px;padding-bottom:6px}.ensemble-cell{border-radius:3px}.ensemble-legend{font-size:10px;gap:10px 13px;margin-top:12px}.ensemble-summary{font-size:10px;line-height:1.5}.keyboard-hint{font-size:10px}.practice-sound-note{font-size:11px;gap:7px;margin-bottom:17px}.practice-sound-note button{font-size:11px}.ensemble-panel .hint{font-size:12px}}
@media(prefers-reduced-motion:reduce){.instrument-switch:after{transition:none}}

/* Expanded rhythm library and readable long cycles. All parts share one scroll. */

.library-toolbar{flex-wrap:wrap}.library-toolbar input[type=search]{min-width:200px;flex:1}.library-toolbar select[aria-label="Filter by meter"]{min-width:130px}
.ensemble-scroll{max-width:100%;min-width:0}.long-cycle-scroll{overflow-x:auto;overscroll-behavior-inline:contain;padding:3px 3px 8px;margin:0 -3px;scrollbar-color:#9eaf99 #f1f4ee;scrollbar-width:thin}
.ensemble-long{min-width:calc(var(--instrument-width) + var(--pattern-width) + 20px)}
.ensemble-long .instrument-controls,.ensemble-long .ensemble-ruler>span{position:sticky;left:0;z-index:2;background:white;box-shadow:10px 0 12px white;padding-right:8px}
.ensemble-cell.group-start{border-left:2px solid #739175}.ensemble-counts .group-start{color:#285945;border-left:2px solid #739175}
.cycle-count-guide{font-size:12px;color:var(--muted);margin:0 0 12px}.cycle-count-guide strong{color:#285945;font-size:14px;letter-spacing:.06em}.cycle-scroll-hint{font-size:11px;color:var(--muted);margin:0 0 8px}
@media(max-width:600px){
 .library-toolbar{gap:9px}.library-toolbar input[type=search]{flex-basis:100%}.library-toolbar select{flex:1;min-width:0}
 .ensemble-long{--instrument-width:122px}.ensemble-long .ensemble-ruler,.ensemble-long .instrument-row{display:grid;grid-template-columns:var(--instrument-width) minmax(0,1fr);gap:12px;align-items:center}.ensemble-long .ensemble-ruler>span{display:block;font-size:8px;padding-block:6px}.ensemble-long .instrument-controls{display:block}.ensemble-long .instrument-icon{display:none}.ensemble-long .instrument-toggle{width:100%;gap:2px}.ensemble-long .instrument-name strong{font-size:12px}.ensemble-long .instrument-name small{font-size:9px}.ensemble-long .instrument-switch{margin-left:0}.ensemble-long .instrument-mix{min-width:0;max-width:none;margin-top:5px;gap:5px}.ensemble-long .instrument-solo{min-height:32px!important;padding:5px!important}.ensemble-long .instrument-state{min-width:17px}.ensemble-long .instrument-row{padding:12px 0}.ensemble-long .ensemble-hit{font-size:12px}.ensemble-long .instrument-part{height:71px;min-height:71px}
}
