:root{font-family:Inter,Segoe UI,sans-serif;color:#223e35;background:#f4f3e9;font-synthesis:none;--green: #275e4c;--ink: #223e35;--muted: #69776b;--line: #dadfd3}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{min-height:44px;border:1px solid #cbd4c8;border-radius:7px;background:#fbfcf5;color:var(--ink);padding:10px 17px;cursor:pointer;font-size:13px;font-weight:650}button:hover:not(:disabled){background:#e8eddf}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #ba7b36;outline-offset:3px}button:disabled{opacity:.45;cursor:default}.primary{background:var(--green);border-color:var(--green);color:#fff}.primary:hover:not(:disabled){background:#194b3a}.quiet{border-color:transparent;background:transparent}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.topbar{height:80px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5%;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-size:12px;font-weight:800;letter-spacing:1.1px}.brand-icon{display:grid;place-items:center;background:var(--green);color:#fff;font-size:26px;width:35px;height:39px;border-radius:4px}.edition{font-size:9px;letter-spacing:1.8px;color:var(--muted)}.instrument-pill{font-size:10px;font-weight:700;letter-spacing:1px;border:1px solid #bdcbbd;border-radius:30px;padding:9px 14px}main{max-width:1260px;padding:0 42px;margin:auto}.intro{display:flex;justify-content:space-between;align-items:center;padding:43px 0 32px}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:750;color:var(--green);margin:0 0 15px}h1{font-family:Georgia,serif;font-size:46px;line-height:1.07;font-weight:400;letter-spacing:-1.6px;margin:0}h1 em{font-style:normal;color:#628170}.intro-copy{font-size:13px;color:var(--muted);margin:15px 0 0}.trail-badge{display:flex;align-items:center;gap:15px;font-size:10px;font-weight:700;letter-spacing:1.2px}.trail-badge>span{border:1px solid #d7c895;width:57px;height:57px;border-radius:50%;display:grid;place-items:center;font-size:32px;color:#aa894b;background:#eee8d5}.trail-badge small{display:block;font-size:11px;color:var(--muted);letter-spacing:0;font-weight:400;margin-top:7px}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:22px;align-items:start}.adventure{border:1px solid #c7d3c5;border-radius:11px;overflow:hidden;background:#fbfcf5}.game-top{display:flex;align-items:center;justify-content:space-between;padding:17px 21px;background:#203e35;color:#e7eee1;font-size:9px;letter-spacing:1.4px;gap:12px}.live-dot{display:inline-block;width:6px;height:6px;background:#c5dc93;border-radius:50%;margin-right:9px}.stats{display:flex;gap:22px;letter-spacing:.6px}.stats b{font-size:18px;margin-right:5px;color:#f3d69b;font-weight:500}.world-wrap{position:relative}#world{width:100%;aspect-ratio:2/1;overflow:hidden}canvas{display:block;image-rendering:pixelated}.game-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;color:#f3f1d9;background:#203e35;font-size:12px;min-height:48px}.game-feedback{min-width:0}#feedback{display:block;font-weight:650;line-height:1.5}#feedback-detail{display:block;font-size:11px;color:#d0ddc7;line-height:1.5;margin-top:3px}.game-bottom[data-state=matched] #feedback{color:#b9e5b0}.game-bottom[data-state=near] #feedback{color:#f4d897}.game-bottom[data-state=far] #feedback{color:#ffc4a1}.game-bottom[data-state=preview] #feedback{color:#c7e4fa}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}#counter{font:11px monospace;white-space:nowrap;color:#bfd1bc}.trail-progress{height:4px;background:#dce4d5}#trail-fill{height:100%;background:#d7b56b}.transport{display:flex;align-items:center;gap:8px;padding:20px;flex-wrap:wrap}.transport>span{font-size:10px;color:var(--muted);margin-left:auto}.demo-panel{border-top:1px solid var(--line);margin:0 20px;padding:17px 0;color:var(--muted);font-size:11px}.demo-panel strong{font-size:12px;color:var(--ink)}.demo-panel p{font-size:11px;margin:6px 0 12px;line-height:1.5}.note-buttons{display:flex;gap:8px;margin-bottom:10px}.note-key{width:52px;min-height:48px;padding:8px;font-size:19px;font-family:Georgia,serif;border-bottom:3px solid #b7c5b6;touch-action:none;-webkit-user-select:none;user-select:none}.note-key small{font-size:10px;margin-left:3px}.note-key.held{background:#f4c575;border-color:#ba954f}.demo-panel>small{font-size:9px}.practice-card{background:#fcfcf6;border:1px solid var(--line);border-radius:11px;padding:22px 20px;overflow:hidden}.card-heading{display:flex;justify-content:space-between;align-items:center}.card-heading .eyebrow{margin:0;font-size:9px}.mini-tag{font-size:8px;color:var(--muted);letter-spacing:1px}.note-readouts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:16px}.note-readouts>div{min-width:0;border-radius:7px;padding:10px;background:#edf1e6}.note-readouts .target-readout{background:#e2edde}.note-readouts span{display:block;font-size:11px;color:#526653}.note-readouts h2,.note-readouts strong{display:block;font:36px/1.2 Georgia,serif;overflow-wrap:anywhere;margin:5px 0 0;color:var(--green)}.written-pitch-caption{font-size:10px;color:var(--muted);margin:8px 0 0}.note-name-toggle{margin-top:12px}.check-label{display:flex;align-items:center;gap:7px;font-size:11px}input[type=checkbox]{accent-color:var(--green);width:16px;height:16px}.transpose{font-size:10px;line-height:1.6;background:#edf1e6;border-radius:5px;padding:10px;margin-top:14px;color:#49624e}.fingering-aid{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.fingering-guide{margin-top:12px;padding:12px 10px;border:1px solid #cbd7c7;border-radius:8px;background:#f5f7ed}.fingering-heading{display:flex;align-items:center;justify-content:space-between;gap:7px;flex-wrap:wrap}.fingering-heading h3{margin:0;font-size:15px;color:var(--green)}.fingering-heading span{font-size:8px;letter-spacing:.5px;color:var(--muted)}.fingering-system{margin:5px 0 0;font-size:10px;color:var(--muted)}.fingering-diagram{display:block;width:100%;max-width:280px;height:auto;margin:8px auto}.fingering-diagram text{fill:var(--ink);font:11px Segoe UI,sans-serif}.fingering-diagram .finger-hand{font-weight:700;font-size:10px}.fingering-diagram .finger-small{font-size:9px}.finger-body{fill:#dce3d6;stroke:#9aa994;stroke-width:1.5}.finger-band,.finger-link,.finger-back-link{fill:none;stroke:#788e77;stroke-width:1.5}.finger-back-link{stroke-dasharray:3 3}.finger-back{fill:#e9eee1;stroke:#c7d3bf}.finger-hole,.finger-key{fill:#fffef9;stroke:#536951;stroke-width:2}.finger-hole.covered{fill:#275e4c}.finger-check{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.finger-key.pressed{fill:#edbd64;stroke:#83531c;stroke-width:3}.fingering-legend{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;font-size:10px}.fingering-legend span{display:inline-flex;align-items:center;gap:4px}.fingering-legend i{display:inline-block;width:10px;height:10px;border:1.5px solid #536951;border-radius:50%}.legend-covered{background:#275e4c}.legend-open{background:#fffef9}.fingering-legend .legend-key{border-radius:3px;background:#edbd64;border-color:#83531c}.fingering-instructions,.fingering-tip,.fingering-help,.fingering-empty{font-size:11px;line-height:1.6}.fingering-tip{padding-left:8px;border-left:3px solid #d8aa59}.fingering-help{color:#50634d}.fingering-help a{text-decoration:underline}progress{appearance:none;width:100%;height:5px;border:none;border-radius:4px;margin-top:10px;display:block;background:#e0e6d9}progress::-webkit-progress-bar{background:#e0e6d9;border-radius:4px}progress::-webkit-progress-value{background:#5b8c61;border-radius:4px}progress::-moz-progress-bar{background:#5b8c61}.listener{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.listener-head{display:flex;justify-content:space-between;gap:10px;font-size:10px}.listener-head strong{font-weight:600}#heard{color:var(--green);font-weight:700}.listener p{font-size:10px;line-height:1.6;color:var(--muted);margin:9px 0}meter{width:100%;height:8px;display:block}#mic-button{width:100%;margin-top:14px;font-size:11px}.listener .error{color:#9b3c2a;background:#fff0e6;padding:10px;border-radius:5px}.settings-card{margin-top:26px;padding:23px 25px;border:1px solid var(--line);border-radius:10px;background:#eeefe4}.settings-heading{display:flex;align-items:baseline;gap:18px}.settings-heading h2{font:23px Georgia,serif;margin:0}.settings-heading p{font-size:11px;color:var(--muted);margin:0}.settings-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-top:23px}.settings-grid label{display:flex;flex-direction:column;gap:8px;font-size:10px;font-weight:650;color:#526653}select{width:100%;height:42px;border:1px solid #ccd5c7;border-radius:5px;padding:0 10px;background:#fafbf3;color:var(--ink);font-size:11px}select:disabled{opacity:.6}.settings-grid .speed-label{grid-column:span 2;position:relative}output{position:absolute;right:0;top:0;font-weight:400}input[type=range]{width:100%;accent-color:var(--green);margin:6px 0 0;height:20px}.range-ends{display:flex;justify-content:space-between;font-size:9px;font-weight:400}.settings-note{font-size:10px;color:var(--muted);margin:15px 0 0}.how-to{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;padding:33px 0}.how-to>div{position:relative;padding-left:33px}.how-to span{position:absolute;top:0;left:0;color:#a4b09a;font:17px Georgia,serif}.how-to h3{font-size:12px;font-weight:650;margin:0 0 8px}.how-to p{font-size:11px;line-height:1.7;margin:0;color:var(--muted)}footer{border-top:1px solid var(--line);padding:20px 0 30px;display:flex;justify-content:space-between;align-items:flex-start;gap:30px;color:var(--muted);font-size:9px;letter-spacing:1px}footer details{max-width:460px;letter-spacing:0;font-size:11px}summary{cursor:pointer}details p{line-height:1.7}.summary{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:20px;background:#f4f3e9ed}.summary .eyebrow{margin-bottom:5px}.summary h2{font:28px Georgia,serif;margin:8px 0}.summary p{font-size:12px;line-height:1.5;margin:6px 0}.summary button{margin-top:15px}#summary-notes{color:var(--muted)}.exercise-card{padding:22px 24px;margin-bottom:24px;background:#fcfcf6;border:1px solid var(--line);border-radius:10px}.exercise-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.exercise-heading h2{font:26px Georgia,serif;margin:0}.exercise-card .eyebrow{margin-bottom:8px}.exercise-card p{line-height:1.6}#exercise-details,#exercise-description,#exercise-concert{font-size:12px;color:#526653}#exercise-concert{font-size:11px}.preview-tempo{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin-top:18px;font-size:12px;color:var(--muted)}.preview-tempo input{width:160px;margin:0}.preview-tempo output{position:static;margin-left:6px;font-weight:650}.preview-tempo span{font-size:10px}#preview-status{font-size:12px;color:var(--green);margin-bottom:0}.note-buttons{flex-wrap:wrap}.note-buttons .note-key{width:auto;min-width:57px;font-size:19px}.note-buttons .note-key small{display:block;margin:3px 0 0;font:9px Segoe UI,sans-serif}.mic-check-card{padding:20px 24px;margin-bottom:24px;border:1px solid #bfcfbd;border-radius:10px;background:#edf2e7}.mic-check-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px}.mic-check-heading h2{font:23px Georgia,serif;margin:0}.mic-check-heading p,.check-hint,#mic-connected{color:var(--muted);font-size:12px;line-height:1.6}.mic-check-heading p{margin:6px 0 0}#check-body{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.mic-device-row{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.mic-device-row label{display:grid;gap:6px;font-size:12px;flex:1 1 220px}.mic-device-row button{font-size:11px}.check-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;list-style:none;gap:10px;margin:16px 0;font-size:12px}.check-steps li{padding:12px;border:1px solid #d2dacb;border-radius:6px;background:#f9fbf3}.check-steps li.done{background:#d7eace;border-color:#93b684;font-weight:650}.check-steps li.done:after{content:" ✓"}.check-level-label{display:block;font-size:12px}#check-level{width:100%;height:30px;margin-top:5px}#check-message{font-size:14px;line-height:1.5;font-weight:650;min-height:22px}#check-progress{height:8px}@media(max-width:540px){.check-steps{grid-template-columns:1fr;gap:6px}.mic-check-card{padding:17px}}.sound-controls{display:flex;align-items:center;flex-wrap:wrap;gap:20px;margin-top:18px;font-size:12px;color:var(--muted)}.sound-controls label{display:flex;align-items:center;gap:10px}.sound-controls input[type=range]{width:120px;margin:0}#sound-error{color:#9b3c2a}@media(max-width:1000px){.edition{display:none}main{padding:0 25px}.play-layout{grid-template-columns:minmax(0,1fr) 280px;gap:16px}.transport>span{width:100%;margin-top:4px}.game-top{padding:14px;font-size:8px;letter-spacing:.5px}.stats{gap:10px}.stats b{font-size:15px}.trail-badge{display:none}}@media(max-width:740px){.topbar{height:66px;padding:0 20px}.brand{font-size:9px;letter-spacing:.6px;gap:8px}.instrument-pill{font-size:8px;padding:7px}main{padding:0 16px}.intro{padding:30px 0 25px}h1{font-size:39px}.play-layout{grid-template-columns:1fr}.practice-card{padding:20px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-card{padding:20px}.settings-heading{display:block}.settings-heading p{margin-top:8px}.how-to{grid-template-columns:1fr;gap:22px}.transport{padding:15px;gap:6px}.transport button{padding:10px 12px;font-size:12px}.transport>span{width:auto;margin:0 0 0 auto}.game-bottom{font-size:11px;padding:12px}.summary h2{font-size:22px}.summary p{font-size:10px}.summary .eyebrow{font-size:8px}.summary button{min-height:35px;font-size:11px;padding:7px 12px;margin-top:6px}footer{display:block}footer details{margin-top:16px}}
