:root{color:#2c4a3f;font-synthesis:none;background:#f4f6f0;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-size:14px}*{box-sizing:border-box}body,h1,h2,h3,p{margin:0}h2{color:#547247;font-size:20px;font-weight:500;line-height:1.5}h3{font-size:15px;font-weight:500}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;color:#5c7750;background:#fff;border:1px solid #d8e1ce;border-radius:7px;padding:10px 14px;line-height:1.5}button:hover{background:#eef3e8}button:disabled{opacity:.4;cursor:default}input,select,textarea{color:#3c5b43;background:#fff;border:1px solid #d5dfc9;border-radius:7px;width:100%;min-width:0;padding:10px 11px}input[type=checkbox]{accent-color:#147b6e;flex:none;width:16px;height:16px;margin:0}input[type=range]{accent-color:#8dac78;cursor:pointer;background:0 0;border:0;padding:0}input[type=number]{font-variant-numeric:tabular-nums}label{color:#879c75;font-size:11px;line-height:1.8}label>input:not([type=checkbox]),label>select{margin-top:7px}button,a,input,label,summary,select{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline-offset:3px;outline:2px solid #147b6e}[hidden]{display:none!important}.site-header{border-bottom:1px solid #dfe6d5;justify-content:space-between;align-items:center;gap:24px;max-width:1460px;min-height:95px;margin:auto;padding:24px 42px;display:flex}.brand{align-items:center;gap:12px;font-size:17px;font-weight:650;display:flex}.brand-mark{color:#fff;background:#147b6e;border-radius:12px;place-items:center;width:42px;height:42px;font-size:31px;line-height:1;display:grid}.brand small{letter-spacing:2px;color:#839974;margin-top:5px;font-size:10px;font-weight:400;display:block}.site-header nav{color:#7d926f;flex-wrap:wrap;align-items:center;gap:23px;font-size:12px;display:flex}.privacy{color:#90a27e;font-size:11px}.text-button{color:#829c6f;background:0 0;border:0;padding:6px 0;font-size:12px}.text-button:hover{color:#147b6e;background:0 0}.primary{color:#fff;background:#147b6e;border-color:#147b6e}.primary:hover{background:#10695e}.large{min-width:160px;padding:12px 27px;font-size:15px}.app{max-width:1280px;margin:auto;padding:0 32px}.heading{justify-content:space-between;align-items:center;gap:24px;padding:42px 0 32px;display:flex}.eyebrow,.step-label{letter-spacing:1.8px;color:#93a782;font:10px/1.5 Consolas,monospace}.eyebrow{margin-bottom:15px}.heading h1{letter-spacing:-1px;font-size:36px;font-weight:650;line-height:1.45}.heading h1 span{color:#c9916b}.intro{color:#829877;margin-top:11px;font-size:13px;line-height:1.8}.heading-note{text-align:right;color:#a0b28e;font-size:12px;line-height:2}.panel{background:#fff;border:1px solid #dfe6d5;border-radius:14px;min-width:0;overflow:hidden}.section-heading{justify-content:space-between;align-items:center;gap:15px;margin-bottom:22px;display:flex}.section-heading .step-label{margin-bottom:10px}.badge{white-space:nowrap;color:#8fa979;background:#f3f7eb;border:1px solid #dfe7d1;border-radius:6px;padding:6px 9px;font-size:10px}.note{color:#91a67e;overflow-wrap:anywhere;font-size:11px;line-height:1.9}.check-inline{white-space:nowrap;cursor:pointer;align-items:center;gap:7px;font-size:11px;display:flex}.audio-bar{background:#edf3e7;border:1px solid #dce6cf;border-radius:10px;flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:23px;padding:16px 20px;display:flex}.audio-bar>div{flex:1;align-items:center;gap:9px;min-width:220px;display:flex}.audio-bar p{color:#839a6f;font-size:11px;line-height:1.8}.status-dot{background:#b6c4a7;border-radius:50%;flex:none;width:6px;height:6px}.status-dot.active{background:#147b6e}.audio-bar>button{padding:8px 12px;font-size:10px}.volume-label{white-space:nowrap;align-items:center;gap:10px;font-size:10px;display:flex}.volume-label input{width:85px;margin:0!important}.volume-label span{color:#87a071;min-width:28px}.audio-bar>.text-button{padding:4px 0}.practice-grid{grid-template-columns:1fr 1fr;align-items:start;gap:24px;display:grid}.metronome-panel,.rhythm-panel{padding:26px 27px}.tempo-display{justify-content:center;align-items:center;gap:17px;margin:24px 0 20px;display:flex}.tempo-display>strong{color:#507a4c;font-variant-numeric:tabular-nums;letter-spacing:-2px;font:83px/1.1 Georgia,serif}.tempo-display>span{color:#88a073;font:14px Consolas,monospace}.tempo-display small{color:#a1b48c;margin-top:8px;font:10px Microsoft YaHei,sans-serif;display:block}.beat-lights{justify-content:center;gap:13px;margin:22px 0 14px;display:flex}.beat-light{color:#a2b58e;background:#f2f6e9;border:1px solid #dce7d0;border-radius:50%;place-items:center;width:37px;height:37px;font:13px Consolas,monospace;display:grid}.beat-light.active{color:#42673d;background:#b5cba5;border-color:#a9c295}.beat-light.strong{color:#fff;background:#147b6e;border-color:#147b6e}.beat-status{color:#91a67c;text-align:center;min-height:20px;font-size:11px;line-height:1.8}.metro-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin:21px 0 24px;display:flex}.metro-actions>button:not(.large){font-size:12px}.metro-actions label{font-size:10px}.metronome-panel form{border-top:1px solid #e5ecdc;padding-top:19px}.tempo-fields{grid-template-columns:.8fr 1fr 1.2fr;gap:13px;display:grid}.tempo-fields input,.tempo-fields select{padding:9px 10px;font-size:11px}.settings-bottom{justify-content:space-between;align-items:center;gap:16px;margin-top:16px;display:flex}.settings-bottom>button{padding:8px 12px;font-size:10px}.settings-bottom label{font-size:10px}.tap-row{border-top:1px solid #e6eddd;flex-wrap:wrap;align-items:center;gap:11px;margin-top:21px;padding-top:18px;display:flex}.tap-row>button{padding:8px 11px;font-size:10px}.tap-row>p{color:#9bb28a;flex:1;min-width:150px;font-size:10px;line-height:1.8}.tap-row>.text-button{padding:3px 0}.metronome-panel>.note{margin-top:13px;font-size:10px}.rhythm-panel>.note{font-size:11px}.rhythm-progress{justify-content:space-between;gap:8px;margin:25px 0 20px;display:flex}.rhythm-progress span{color:#adbd9c;background:#f8faf3;border:1px solid #e0e8d6;border-radius:6px;place-items:center;width:31px;height:30px;font:11px Consolas,monospace;display:grid}.rhythm-progress span.current{color:#5c864c;background:#f0f7e7;border-color:#8aab75}.rhythm-progress span.hit{color:#3a7a5a;background:#e0efe2;border-color:#6b9f88}.rhythm-progress span.past:not(.hit){color:#b58c66;background:#f8ede2;border-color:#e4cbb0}.rhythm-pad{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;color:#6d8a59;background:#f3f7eb;border:1px solid #dce6cf;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:194px;display:flex}.rhythm-pad.counting{background:#f9f5ea;border-color:#e5d9bd}.rhythm-pad>span{color:#859e70;font-size:13px}.rhythm-pad>strong{color:#5d834c;font:400 56px/1.1 Georgia,Microsoft YaHei,serif}.rhythm-pad>small{color:#a0b48a;font-size:10px}.rhythm-pad:active{background:#e5eedb}.rhythm-actions{justify-content:center;align-items:center;gap:12px;margin-top:20px;display:flex}.rhythm-actions button{font-size:12px}.rhythm-status{color:#a1b58d;text-align:center;min-height:20px;margin-top:13px;font-size:10px;line-height:1.9}.rhythm-result{border-top:1px solid #e6eddd;margin-top:19px;padding-top:18px}.result-stats{grid-template-columns:1fr 1.5fr .8fr;gap:12px;display:grid}.result-stats span{color:#a2b690;font-size:9px;display:block}.result-stats strong{color:#78975e;font-variant-numeric:tabular-nums;margin-top:5px;font:400 22px/1.7 Georgia,Microsoft YaHei,serif;display:block}.rhythm-offsets{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.rhythm-offsets span{color:#92ab7e;background:#f3f8ed;border:1px solid #dfe8d5;border-radius:5px;padding:5px 7px;font-size:9px}.rhythm-offsets .miss{color:#b79c7e;background:#fbf3ea;border-color:#ecddc8}.rhythm-result>.note{margin-top:12px;font-size:9px}.chord-panel,.piano-panel,.export-panel{margin-top:24px;padding:26px 28px}.chord-layout{grid-template-columns:1.1fr 1fr auto;align-items:center;gap:25px;display:grid}.chord-fields{grid-template-columns:1fr 1.5fr;gap:14px;display:grid}.chord-fields label:last-child{grid-column:1/-1}.chord-fields label:last-child select{max-width:150px}.chord-fields select{padding:9px 10px;font-size:11px}.chord-summary{border-left:1px solid #e1e9d5;min-width:0;padding:20px 24px}.chord-summary>strong{color:#5f854d;overflow-wrap:anywhere;font:400 44px/1.2 Georgia,serif}.chord-summary>p{color:#8aa172;overflow-wrap:anywhere;margin-top:10px;font-size:14px;line-height:1.8}.chord-summary small{color:#acba97;margin-top:10px;font-size:10px;display:block}.chord-actions{flex-direction:column;gap:10px;display:flex}.chord-actions button{white-space:nowrap;padding:9px 16px;font-size:11px}.chord-panel>.note{margin-top:19px;font-size:10px}.piano-scroll{scrollbar-width:thin;padding:8px 0 12px;overflow:auto}.piano{background:#3e5141;border:1px solid #aab79b;border-radius:8px;width:100%;min-width:700px;height:218px;padding:0;position:relative;overflow:hidden}.piano-key{-webkit-user-select:none;user-select:none;touch-action:none;border:1px solid #c5ceb9;border-radius:0 0 5px 5px;flex-direction:column;justify-content:end;align-items:center;gap:8px;padding:0;display:flex;position:absolute;top:0;overflow:hidden}.piano-key.white{z-index:1;background:linear-gradient(#fff,#f7f8ef);height:100%;box-shadow:inset 0 -6px #e1e7d7}.piano-key.black{z-index:2;color:#d0dfc2;background:linear-gradient(#3c5143,#243d30);border-color:#273d2d;height:62%;box-shadow:inset 0 -5px #182e21}.piano-key.in-chord.white{background:linear-gradient(#f6faef,#e3eed5)}.piano-key.in-chord.black{background:linear-gradient(#598060,#315a3e)}.piano-key.sounding.white{background:#c7ddb6;box-shadow:inset 0 -3px #9fba87}.piano-key.sounding.black{background:#89b588;box-shadow:inset 0 -3px #5b8b5a}.piano-key .note-label{color:#90a57a;font-size:12px}.piano-key.black .note-label{color:#b2c99f;font-size:9px}.piano-key>small{color:#b2bea0;min-height:11px;margin-bottom:16px;font-size:9px}.piano-key.black>small{color:#7f9e73;margin-bottom:13px;font-size:8px}.piano-key:focus-visible{outline-offset:-3px;z-index:3;outline:2px solid #147b6e}.piano-foot{color:#8fa47c;justify-content:space-between;align-items:center;gap:16px;margin-top:11px;font-size:11px;display:flex}.piano-foot button{font-size:10px}.piano-panel>.note{margin-top:13px;font-size:10px}.filename-label{align-items:center;gap:13px;display:flex}.filename-label input{max-width:260px;padding:9px 11px;font-size:12px;margin:0!important}.export-actions{flex-wrap:wrap;align-items:center;gap:9px;margin-top:20px;display:flex}.export-actions button{padding:10px 13px;font-size:11px}.export-panel>.note{margin-top:14px;font-size:10px}.features{grid-template-columns:repeat(3,minmax(0,1fr));gap:35px;padding:36px 0 43px;display:grid}.features span{letter-spacing:1px;color:#a0b48a;font:10px monospace}.features h3{color:#8ba178;margin-top:12px}.features p{color:#a2b58e;margin-top:7px;font-size:11px;line-height:1.8}.site-footer{color:#9bb18a;border-top:1px solid #e1e8d8;justify-content:space-between;gap:20px;max-width:1460px;margin:auto;padding:25px 42px;font-size:11px;display:flex}.error{color:#ad7751;background:#fff5e9;border:1px solid #e6cdb5;border-radius:8px;margin-bottom:20px;padding:12px 16px;font-size:12px;line-height:1.8}.toast{color:#f3f8ec;z-index:20;pointer-events:none;background:#355a43;border-radius:9px;width:max-content;max-width:calc(100% - 30px);padding:12px 20px;font-size:12px;line-height:1.7;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 5px 30px #244c3022}dialog{background:#fcfdf8;border:1px solid #cfdec4;border-radius:14px;box-shadow:0 20px 70px #254b3033}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#244c3766}.help-dialog{color:#6b855a;width:min(700px,100% - 30px);max-height:85vh;padding:28px}.help-dialog p{margin-top:15px;font-size:13px;line-height:1.95}.help-dialog button{white-space:nowrap;font-size:11px}.copy-fallback{z-index:10;background:#fff;border:1px solid #a8c095;border-radius:12px;max-width:700px;margin:auto;padding:20px;position:fixed;inset:auto 20px 20px;box-shadow:0 8px 35px #244c3033}.copy-fallback .section-heading{margin-bottom:12px;font-size:12px;line-height:1.8}.copy-fallback button{white-space:nowrap;font-size:11px}.copy-fallback textarea{height:180px;font:11px/1.7 Consolas,monospace}@media (width<=1050px){.app{padding:0 23px}.site-header{padding-left:25px;padding-right:25px}.practice-grid{gap:18px}.metronome-panel,.rhythm-panel{padding:24px 21px}.metronome-panel h2,.rhythm-panel h2{font-size:18px}.tempo-fields{gap:10px}.tempo-fields select{padding:9px 7px}.chord-layout{grid-template-columns:1.1fr 1fr auto;gap:20px}.chord-summary{padding-left:20px;padding-right:0}.chord-actions button{padding:9px 11px}.audio-bar{gap:13px}.audio-bar>div{min-width:250px}.chord-fields{grid-template-columns:1fr}.chord-fields label:last-child{grid-column:auto}}@media (width<=760px){.site-header{flex-wrap:wrap;gap:17px;min-height:86px;padding:18px 19px}.brand{font-size:15px}.brand-mark{width:36px;height:36px;font-size:26px}.brand small{font-size:9px}.site-header nav{gap:17px;font-size:10px}.site-header .text-button{font-size:10px}.privacy{display:none}.app{padding:0 16px}.heading{padding:29px 3px 25px}.heading h1{letter-spacing:-1px;font-size:27px}.eyebrow{letter-spacing:1px;margin-bottom:12px;font-size:7px}.intro{margin-top:9px;font-size:11px;line-height:1.9}.heading-note{display:none}.step-label{letter-spacing:1.4px;font-size:8px}.section-heading{margin-bottom:19px}.badge{padding:5px 8px;font-size:9px}.audio-bar{gap:13px;margin-bottom:18px;padding:15px 16px}.audio-bar>div{gap:8px;min-width:100%}.audio-bar p{font-size:10px}.audio-bar>button{padding:7px 10px;font-size:9px}.volume-label{gap:8px;font-size:9px}.volume-label input{width:70px}.volume-label span{min-width:24px}.audio-bar>.text-button{font-size:9px}.practice-grid{grid-template-columns:1fr;gap:18px}.metronome-panel,.rhythm-panel{padding:23px 19px}.metronome-panel h2,.rhythm-panel h2{font-size:19px}.tempo-display{margin:24px 0 20px}.tempo-display>strong{font-size:76px}.tempo-display>span{font-size:12px}.tempo-display small{font-size:9px}.beat-lights{gap:10px}.beat-light{width:32px;height:32px;font-size:11px}.beat-status{font-size:10px}.large{min-width:150px;padding:11px 21px;font-size:14px}.metro-actions{gap:11px}.metro-actions label{font-size:10px}.tempo-fields{grid-template-columns:.8fr 1fr 1.2fr;gap:10px}.tempo-fields label{font-size:10px}.tempo-fields input,.tempo-fields select{padding:9px 7px;font-size:10px}.settings-bottom{gap:12px}.settings-bottom label{font-size:10px}.settings-bottom>button{padding:8px 10px;font-size:9px}.tap-row>p{min-width:100px;font-size:9px}.tap-row>button,.metronome-panel>.note{font-size:9px}.rhythm-panel>.note{font-size:10px}.rhythm-progress{gap:6px}.rhythm-progress span{width:28px;height:28px;font-size:10px}.rhythm-pad{gap:13px;min-height:185px}.rhythm-pad>span{font-size:12px}.rhythm-pad>strong{font-size:52px}.rhythm-pad>small{font-size:9px}.rhythm-actions button{font-size:11px}.rhythm-status{font-size:9px}.result-stats{grid-template-columns:1fr 1.4fr .8fr;gap:10px}.result-stats span{font-size:8px}.result-stats strong{font-size:21px}.chord-panel,.piano-panel,.export-panel{margin-top:18px;padding:23px 19px}.chord-panel h2,.piano-panel h2,.export-panel h2{font-size:18px}.chord-panel .section-heading{display:block}.chord-panel .section-heading>.badge{margin-top:13px;font-size:9px;display:inline-block}.chord-layout{grid-template-columns:1fr;gap:18px}.chord-fields{grid-template-columns:1fr 1.4fr;gap:13px}.chord-fields label:last-child{grid-column:1/-1}.chord-fields label,.chord-fields select{font-size:10px}.chord-summary{border-top:1px solid #e1e9d5;border-left:0;padding:20px 0 0}.chord-summary>strong{font-size:40px}.chord-summary>p{font-size:13px}.chord-summary small{font-size:9px}.chord-actions{flex-flow:wrap;gap:8px}.chord-actions button{padding:9px 11px;font-size:10px}.chord-panel>.note{font-size:9px}.piano-panel .section-heading{display:block}.piano-panel .section-heading>.check-inline{margin-top:14px;font-size:10px}.piano{min-width:700px;height:195px}.piano-key .note-label{font-size:11px}.piano-foot{gap:12px;font-size:10px}.piano-foot button{white-space:nowrap;font-size:9px}.piano-panel>.note{font-size:9px}.filename-label{gap:11px;font-size:10px}.filename-label input{max-width:220px;font-size:11px}.export-actions{gap:8px;margin-top:17px}.export-actions button{padding:9px 10px;font-size:10px}.export-panel>.note{margin-top:13px;font-size:10px;line-height:1.9}.features{grid-template-columns:1fr;gap:24px;padding:29px 4px 34px}.features>div{border-left:2px solid #dfe8d4;padding-left:15px}.features span{font-size:8px}.features h3{margin-top:7px;font-size:14px}.features p{margin-top:5px;font-size:10px}.site-footer{padding:22px 19px;font-size:9px}.toast{font-size:11px}.help-dialog{padding:21px}.help-dialog h2{font-size:17px}.help-dialog button{padding:7px 9px;font-size:10px}.help-dialog p{font-size:12px}.copy-fallback{padding:15px;inset:auto 13px 13px}.copy-fallback .section-heading{font-size:11px}}
