.instrument-study-page{min-width:280px}.study-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;padding-block:27px;font-size:12px;display:flex}.study-back{align-items:center;gap:12px;min-height:44px;display:inline-flex}.study-edition,.study-eyebrow{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:11px;font-weight:600}.study{padding-block:48px 70px}.study-heading{justify-content:space-between;align-items:flex-end;gap:35px;margin-bottom:28px;display:flex}.study-eyebrow{margin-bottom:14px}.study h1{letter-spacing:-.035em;margin-bottom:0;font-size:clamp(44px,6vw,76px);line-height:1}.study-intro{max-width:420px;color:var(--muted);margin:0;font-size:15px;line-height:1.6}.study-reset{justify-content:center;align-items:center;gap:16px;min-height:44px;padding:8px 0 8px 16px;font-size:12px;display:inline-flex}.study-object{margin:0}.study-stage{aspect-ratio:3/2;background:var(--surface);border-radius:var(--radius);width:100%;position:relative;overflow:hidden}.study-image,.study-canvas{width:100%;height:100%;display:block}.study-image{object-fit:contain;cursor:pointer}.study-canvas{touch-action:none;cursor:grab;position:absolute;inset:0}.study-canvas:active{cursor:grabbing}.study-canvas:focus-visible{outline-offset:-5px}.study-caption{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 20px;padding-block:16px;font-size:11px;line-height:1.5;display:flex}.study-note{color:var(--accent-ink);font-variant-numeric:tabular-nums}.study-status{color:var(--muted);margin-bottom:12px;font-size:12px}.study-status:empty{display:none}.study-interaction{border-top:1px solid var(--line);padding-top:14px}@media (width<=700px){.study-header{gap:16px;padding-block:12px}.study-edition{letter-spacing:.07em;font-size:9px}.study{padding-block:32px 45px}.study-heading{margin-bottom:17px;display:block}.study-intro{margin-top:18px}}.machine-layout{align-items:start;gap:28px;display:grid}@media (width>=1100px){.machine-layout{grid-template-columns:minmax(0,1fr) 390px}.machine-panel{position:sticky;top:24px}.machine-panel .composer-controls{padding:26px 22px}}.machine-panel{container:machine-panel/inline-size}.machine-panel .composer-controls{max-width:none}.study-stage[data-live=true]{background:var(--surface)}.machine-steps{pointer-events:none;flex-wrap:wrap;gap:6px;margin:0;padding:0;font-size:11px;list-style:none;display:flex;position:absolute;top:16px;left:16px}.machine-steps li{border:1px solid var(--line);color:var(--muted);backdrop-filter:blur(6px);padding:6px 11px 6px 7px;background:#faf7efdb;border-radius:999px;align-items:center;gap:7px;padding:0;transition:color .25s,border-color .25s,background .25s;display:inline-flex}.machine-steps button{color:inherit;font:inherit;pointer-events:auto;cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:6px 11px 6px 7px;display:inline-flex}.machine-steps button:focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}.machine-steps li span{border:1px solid;border-radius:50%;place-items:center;width:18px;height:18px;font-size:10px;display:inline-grid}.machine-steps li[data-state=current]{border-color:var(--accent-ink);color:var(--ink);background:#faf7eff5}.machine-steps li[data-state=current] span{border-color:var(--accent-ink);background:var(--accent-ink);color:var(--paper)}.machine-steps li[data-state=done] span{background:var(--line);color:var(--ink);border-color:#0000}.machine-tip{z-index:2;background:var(--ink);color:var(--paper);white-space:nowrap;pointer-events:none;border-radius:6px;margin:0;padding:6px 10px;font-size:11px;position:absolute;transform:translate(14px,-130%)}.machine-launch{background:var(--ink);min-height:48px;color:var(--paper);letter-spacing:.01em;font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;padding:0 26px;font-size:13px;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #1e1c182e}.study-stage :is(.machine-coach,.machine-tip,.machine-zoom,.machine-phrase){transition:opacity .4s ease-out}.study-stage[data-arriving] :is(.machine-coach,.machine-tip,.machine-zoom,.machine-phrase){opacity:0}.machine-launch:hover{background:var(--accent-ink)}.machine-launch:disabled{opacity:.8}.study-interaction{justify-content:flex-end;display:flex}.machine-making{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;align-items:end;gap:28px;margin-top:56px;padding-top:36px;display:grid}.machine-making-copy{grid-column:1/-1}.machine-making h2{font:400 clamp(28px, 3vw, 36px) / 1.08 var(--serif);letter-spacing:-.02em;margin:0 0 14px}.machine-making p:not(.study-eyebrow){max-width:60ch;color:var(--muted);margin:0;font-size:15px;line-height:1.65}.machine-making figure{margin:0}.machine-making img{background:var(--surface);width:100%;height:auto;display:block}.machine-making figcaption{color:var(--muted);padding-top:10px;font-size:11px}@media (width<=700px){.machine-steps{font-size:10px;top:10px;left:10px}.machine-steps button{padding:4px 9px 4px 5px}.machine-steps li:not([data-state=current]) button{padding:4px;font-size:0}.machine-steps li:not([data-state=current]) span{font-size:10px}.machine-making{margin-top:48px}}@media (prefers-reduced-motion:reduce){.machine-steps li{transition:none}}.machine-zoom{z-index:2;border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 88%, transparent);backdrop-filter:blur(6px);border-radius:999px;gap:2px;padding:3px;display:none;position:absolute;bottom:12px;right:12px}.study-stage[data-live=true] .machine-zoom{display:flex}.machine-zoom button{width:40px;height:40px;color:var(--ink);border-radius:50%;place-items:center;font-size:18px;line-height:1;display:grid}.machine-zoom button:hover:not(:disabled){background:var(--line)}.machine-zoom button:disabled{opacity:.35;cursor:default}@media (pointer:coarse){.machine-zoom button{width:44px;height:44px}}.machine-hint{z-index:2;background:var(--ink);color:var(--paper);white-space:nowrap;pointer-events:none;opacity:0;border-radius:999px;margin:0;padding:7px 14px;font-size:12px;transition:opacity .18s,transform .18s;position:absolute;bottom:16px;left:50%;transform:translate(-50%,6px)}.machine-hint[data-visible=true]{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.machine-hint{transition:none}}.machine-coach{z-index:2;background:var(--accent-ink,#b8641f);color:var(--paper);white-space:nowrap;pointer-events:none;border-radius:999px;margin:0;padding:8px 14px;font-size:12px;line-height:1.3;animation:.26s ease-out both machine-coach-in,2.4s ease-in-out .26s infinite machine-coach-bob;position:absolute;transform:translate(-50%,calc(-100% - 22px));box-shadow:0 6px 18px #1e1c182e}.machine-coach:after{background:inherit;content:"";width:10px;height:10px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)rotate(45deg)}.machine-coach[data-side=below]{transform:translate(-50%,58px)}.machine-coach[data-side=below]:after{top:-5px;bottom:auto}.machine-coach.is-nudged{animation:.52s ease-out machine-coach-nudge,2.4s ease-in-out .52s infinite machine-coach-bob}@keyframes machine-coach-nudge{40%{scale:1.12}}@keyframes machine-coach-in{0%{opacity:0;margin-top:6px}}@keyframes machine-coach-bob{50%{margin-top:-4px}}@media (prefers-reduced-motion:reduce){.machine-coach{animation:none}}.machine-phrase{z-index:2;pointer-events:none;background:#fbf8f0;border-radius:4px;width:min(300px,42%);margin:0;padding:6px 8px 7px;animation:.22s ease-out both machine-phrase-in;position:absolute;top:14px;right:14px;box-shadow:0 1px 2px #1e1c181f,0 8px 22px #1e1c181f}.machine-phrase canvas{width:100%;height:auto;display:block}.machine-phrase figcaption{color:var(--muted);letter-spacing:.02em;margin-top:2px;font-size:10px}@keyframes machine-phrase-in{0%{opacity:0;transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.machine-phrase{animation:none}}.machine-keycaps{z-index:1;pointer-events:none;opacity:0;transition:opacity .3s;position:absolute;inset:0}.machine-keycaps[data-visible=true]{opacity:1;transition-duration:.12s}.machine-keycaps span{width:17px;height:17px;color:var(--ink);background:#faf7efeb;border-radius:4px;place-items:center;font-size:10px;font-weight:600;line-height:1;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 3px #1e1c1840}.machine-keycaps span[data-black=true]{color:var(--paper);background:#1e1c18e0}@media (prefers-reduced-motion:reduce){.machine-keycaps{transition:none}}.machine-progress{z-index:2;pointer-events:none;background:#24251f1a;border-radius:2px;height:2px;position:absolute;bottom:0;left:8%;right:8%;overflow:hidden}.machine-progress:after{content:"";width:var(--progress,0%);background:var(--accent-ink);transition:width .2s linear;position:absolute;inset:0 auto 0 0}.machine-progress.is-indeterminate:after{width:30%;animation:1.2s ease-in-out infinite machine-progress-shimmer}@keyframes machine-progress-shimmer{0%{transform:translate(-100%)}to{transform:translate(340%)}}.study-canvas.is-pending{opacity:0}.study-canvas.is-arriving{animation:.42s ease-out both machine-arrive}@keyframes machine-arrive{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.machine-progress.is-indeterminate:after{animation:none}}.machine-shared{z-index:3;background:var(--ink);color:var(--paper);border-radius:999px;align-items:center;gap:10px;margin:0;padding:6px 6px 6px 14px;font-size:12px;display:flex;position:absolute;top:14px;left:16px}.machine-shared button{background:var(--accent-ink);min-height:32px;color:var(--paper);border-radius:999px;padding:0 14px;font-size:12px}@media (width<=700px){.machine-entry-stage .machine-shared{top:auto;bottom:12px;left:12px}.machine-phrase{right:16px}}.study-stage:not(.machine-entry-stage) .machine-shared{top:58px}.machine-tray{margin:56px 0 0}.machine-tray[hidden]{display:none}.machine-tray h2{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin:0 10px 0 0;font-size:10px;font-weight:500;display:inline}.machine-tray-note{color:var(--muted);margin:0;font-size:11px;display:inline}.machine-tray-list{scroll-snap-type:x proximity;align-items:flex-start;gap:14px;margin:10px 0 0;padding:4px 28px 10px 2px;list-style:none;display:flex;overflow-x:auto;mask-image:linear-gradient(90deg,#000 calc(100% - 44px),#0000)}.tray-strip{scroll-snap-align:start;flex-direction:column;flex:0 0 176px;gap:6px;display:flex}.tray-paper{background:#fbf8f0;overflow:hidden;box-shadow:0 1px 2px #251b1420,0 10px 20px -14px #3b2b1a66}.tray-paper canvas{width:100%;height:auto;display:block}.tray-strip.is-unreadable .tray-paper{background:repeating-linear-gradient(#fbf8f0 0 10px,#e9e2d3 10px 11px)}.tray-meta{color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:11px}.tray-actions{flex-wrap:wrap;gap:2px 10px;display:flex}.tray-actions button{min-height:32px;color:var(--ink);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-size:11px}.tray-actions button:hover{color:var(--accent-ink);text-decoration-color:currentColor}.tray-actions .tray-remove{width:32px;min-height:32px;color:var(--muted);border-radius:50%;place-items:center;margin:0 -9px 0 auto;font-size:16px;text-decoration:none;display:grid}.tray-actions .tray-remove:hover{background:#2a1f1612}@media (pointer:coarse){.tray-actions button{min-height:44px}.tray-actions .tray-remove{width:44px;margin-right:-15px}}@media (width<=700px){.machine-tray{margin-left:0}}.machine-credit{color:var(--faint);margin:48px 0 0;font-size:13px}.machine-credit a{text-underline-offset:3px;text-decoration:underline}.composer-controls{--control-paper:var(--surface);border:1px solid var(--line);background:var(--surface);border-radius:5px;max-width:880px;margin-inline:auto;padding:32px}.composer-controls button,.composer-controls select,.composer-controls input{min-height:44px}.composer-control-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.composer-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 9px;font-size:11px;font-weight:600}.composer-control-heading h2{font:400 clamp(30px, 4vw, 40px)/1.05 var(--serif);letter-spacing:-.02em;margin:0}.composer-instruction{max-width:50ch;margin:18px 0 8px;font-size:13px}.composer-notice{color:var(--muted);min-height:3.1em;margin:0 0 18px;font-size:12px}.composer-text-button{flex-shrink:0;padding:0 8px;font-size:12px}.composer-fields{border:0;min-width:0;margin:0;padding:0}.composer-fields:disabled{opacity:.55}.composer-settings{grid-template-columns:1fr 1.2fr 1fr;gap:20px;margin-bottom:20px;display:grid}.composer-field{font-size:11px;font-weight:600;display:block}.composer-field select,.composer-field input{background:var(--control-paper);border:1px solid #c2bbae;border-radius:3px;width:100%;margin-top:7px;padding:10px;font-size:13px;display:block}.composer-unit{color:var(--muted);margin-left:4px;font-weight:400}.composer-keyboard{grid-template-columns:repeat(13,minmax(0,1fr));gap:4px;display:grid}.composer-key{color:#24251f;touch-action:none;-webkit-user-select:none;user-select:none;background:#fffdf7;border:1px solid #c8c1b6;border-bottom-width:3px;border-radius:6px;flex-direction:column;justify-content:flex-end;align-items:center;gap:17px;min-width:0;height:108px;padding:12px 3px;display:flex}.composer-key.is-black{color:#f6f0e3;background:#30302c;border-color:#22231f}.composer-key [data-key-name]{font-size:13px}.composer-key small{color:#746c5f;margin-left:1px;font-size:9px}.composer-key.is-black small{color:#c7bdad}.composer-key kbd{font:10px var(--sans);color:#82796a}.composer-key.is-black kbd{color:#a89e8d}.composer-key.is-held{background:#e8ddc6;border-bottom-width:1px;box-shadow:inset 0 3px 7px #30271925}.composer-key.is-black.is-held{background:#51463c}.composer-key:focus-visible{z-index:1;outline-offset:2px;position:relative}.composer-action-row,.composer-session-row{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.composer-action-row{border-bottom:1px solid var(--line);justify-content:space-between;padding:14px 0 18px}.composer-edit-actions{gap:14px;display:flex}.composer-edit-actions button,.composer-session-row button{padding:0 7px;font-size:12px}.composer-controls button:disabled{opacity:.4}.composer-controls button:not(:disabled):hover{color:var(--accent-ink)}.composer-controls .composer-key.is-black:not(:disabled):hover{color:#fff}.composer-play{border:1px solid #bcb3a4;border-radius:30px;align-items:center;gap:10px;padding:10px 16px;font-size:12px;display:inline-flex}.composer-play [data-composer-play-symbol]{color:var(--accent-ink);font-size:11px}.composer-print-row{justify-content:space-between;align-items:center;gap:20px;padding:22px 0 18px;display:flex;position:relative}.composer-print-row p{margin:7px 0 0;font-size:12px}.composer-crank{border:1px solid var(--accent-ink);color:var(--accent-ink);user-select:none;touch-action:none;background:0 0;border-radius:999px;flex-shrink:0;align-items:center;gap:10px;padding:10px 18px;font-size:13px;display:flex}.composer-controls .composer-crank:not(:disabled):active{background:var(--accent-ink);color:var(--bg)}.composer-crank>span:first-child{font-size:24px;line-height:1}.composer-controls .composer-crank:not(:disabled):hover{color:var(--accent-ink);background:var(--accent-soft)}.composer-print-row progress{appearance:none;background:var(--line);width:100%;height:2px;color:var(--accent-ink);border:0;position:absolute;bottom:0}.composer-print-row progress::-webkit-progress-bar{background:var(--line)}.composer-print-row progress::-webkit-progress-value{background:var(--accent-ink)}.composer-print-row progress::-moz-progress-bar{background:var(--accent-ink)}.composer-session-row{margin-top:12px}.composer-volume{align-items:center;gap:8px;margin-left:auto;font-size:10px;display:flex}.composer-volume input{width:75px;accent-color:var(--accent-ink)}.composer-dialog{--control-paper:var(--surface);background:var(--control-paper);color:var(--ink);border:1px solid var(--line);border-radius:5px;width:min(480px,100% - 32px);max-height:calc(100dvh - 32px);padding:30px;overflow:auto;box-shadow:0 24px 100px #251b142e}.composer-dialog::backdrop{backdrop-filter:blur(4px);background:#211b176b}.composer-dialog h2{font:400 32px/1.05 var(--serif);margin:0 0 14px}.composer-dialog p{font-size:13px}.composer-dialog-actions{flex-wrap:wrap;gap:16px;display:flex}.composer-dialog button{border:1px solid var(--line);border-radius:3px;min-height:44px;padding:8px 12px;font-size:12px}.composer-dialog [data-composer-confirm-new]{background:var(--ink);color:var(--paper)}.composer-score-dialog{width:min(940px,100% - 24px);padding:0;position:relative;overflow:hidden}.composer-score-layout{grid-template-columns:minmax(0,1fr) minmax(270px,330px);max-height:calc(100dvh - 34px);display:grid}.composer-score-layout>*{box-sizing:border-box;max-height:calc(100dvh - 34px)}.composer-score-sheet{box-shadow:inset -1px 0 0 var(--line);background:#ece6d9;justify-content:center;align-items:safe center;margin:0;padding:44px 36px;display:flex;overflow:auto}.composer-readable-score{background:#fbf8f0;width:min(100%,380px);position:relative;box-shadow:0 1px 2px #251b1422,0 22px 44px -20px #3b2b1a66}.composer-readable-score canvas{width:100%;height:auto;display:block}.composer-playhead{background:var(--accent-ink);pointer-events:none;border-radius:2px;width:2px;margin-left:-1px;position:absolute;box-shadow:0 0 0 4px #ab421c1f}.composer-score-side{flex-direction:column;gap:20px;padding:44px 30px 28px;display:flex;overflow:auto}.composer-score-side .composer-kicker{margin:0 0 -12px}.composer-score-side h2{text-wrap:balance;margin:0;padding-right:28px}.composer-score-side h2:focus{outline:none}.composer-score-facts{color:var(--muted);font-variant-numeric:tabular-nums;margin:-6px 0 0}.composer-score-player{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;display:grid}.composer-score-dialog .composer-score-play{background:var(--accent-ink);min-height:46px;color:var(--paper);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 22px 0 18px;font-size:13px;display:inline-flex}.composer-score-progress{background:var(--line);border-radius:2px;height:3px;overflow:hidden}.composer-score-progress span{background:var(--accent-ink);width:0;height:100%;display:block}.composer-score-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.composer-score-actions{border-top:1px solid var(--line);flex-direction:column;display:flex}.composer-score-dialog .composer-score-action{border:0;border-bottom:1px solid var(--line);min-height:46px;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border-radius:0;justify-content:space-between;align-items:center;padding:0;font-size:13px;text-decoration:none;display:flex}.composer-score-action:after{color:var(--muted);transition:transform .16s}.composer-score-action[data-composer-save-score]:after{content:"↓"}.composer-score-action[data-share-tune]:after{content:"↗"}.composer-score-action[data-composer-score-new]:after{content:"↺"}.composer-score-action:hover:after{color:var(--accent-ink);transform:translate(3px)}.composer-score-dialog .composer-score-close{background:var(--control-paper);z-index:1;width:40px;min-height:40px;color:var(--muted);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;font-size:24px;line-height:1;display:grid;position:absolute;top:14px;right:14px;box-shadow:0 1px 4px #251b1424}.composer-score-close:hover{color:var(--ink);background:#2a1f1612}@media (width<=720px){.composer-score-layout{grid-template-columns:1fr;overflow:auto}.composer-score-layout>*{max-height:none}.composer-score-sheet{max-height:none;box-shadow:inset 0 -1px 0 var(--line);padding:56px 20px 24px;overflow:visible}.composer-score-side{padding:24px 20px;overflow:visible}}.composer-recovery{border:1px solid var(--line);padding:20px}.composer-recovery h3{font:400 25px var(--serif)}.composer-recovery p{font-size:13px}.composer-recovery button{font-size:12px;text-decoration:underline;display:block}@media (width<=650px){.composer-controls{padding:24px 18px}.composer-settings{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.composer-settings>:nth-child(2){order:3;grid-column:1/-1}.composer-keyboard{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.composer-key{gap:7px;height:66px}.composer-volume{margin-left:0}.composer-notice{min-height:4.65em}.composer-print-row{align-items:flex-start;gap:12px}.composer-crank{padding:8px 12px}.composer-crank>span:first-child{font-size:20px}.composer-control-heading{gap:10px}.composer-score-dialog h2{font-size:26px}}@container machine-panel (width<=560px){.composer-settings{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.composer-settings>:nth-child(2){order:3;grid-column:1/-1}.composer-keyboard{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.composer-key{gap:7px;height:66px}.composer-volume{margin-left:0}.composer-notice{min-height:4.65em}.composer-print-row{align-items:flex-start;gap:12px}.composer-crank{padding:8px 12px}.composer-crank>span:first-child{font-size:20px}.composer-control-heading{gap:10px}}@media (width<=360px){.composer-controls{padding:22px 12px}.composer-keyboard{grid-template-columns:repeat(5,minmax(0,1fr))}.composer-crank{gap:6px}.composer-print-row{flex-wrap:wrap}.composer-settings{grid-template-columns:1fr 1fr}.composer-tempo{grid-column:1/-1;align-items:center;gap:8px;display:flex}.composer-tempo input{width:90px;margin:0 0 0 auto}}@media (prefers-reduced-motion:reduce){.composer-controls *,.composer-controls :before,.composer-controls :after{scroll-behavior:auto;transition:none;animation:none}}.composer-score-next{color:var(--muted);margin:auto 0 0;font-size:13px}.composer-score-next a{color:var(--accent-ink);text-underline-offset:3px;text-decoration:underline}.composer-score-dialog:not([data-shared]) [data-composer-score-new],.composer-score-dialog[data-shared] .composer-score-lever{display:none}.composer-score-lever{color:var(--muted);margin:14px 0 0;font-size:13px}
