:root{--ink:#182a44;--muted:#5c6c80;--blue:#214d82;--blue-dark:#17385f;--accent:#a6482e;--paper:#fff;--bg:#f4f6fa;--line:#dbe2ed;--soft:#eaf0f8;--radius:20px;--body:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;--serif:"Noto Serif SC","Songti SC","SimSun",serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.85}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bc633a;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1{font-family:var(--serif);font-size:clamp(2rem,3.5vw,3.3rem);font-weight:600;letter-spacing:.04em;line-height:1.4;margin-bottom:18px}h2{font-family:var(--serif);font-size:1.65rem;line-height:1.5;font-weight:600}h3{font-size:1.13rem;line-height:1.65}small{font-size:.85rem}p{margin-bottom:1em}button,.button{border:1px solid var(--line);background:white;color:var(--ink);padding:11px 20px;border-radius:10px;min-height:48px;font-size:1rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.45}.button:hover,button:hover{border-color:var(--blue);background:var(--soft)}.primary{background:var(--blue);border-color:var(--blue);color:white}.primary:hover{background:var(--blue-dark);color:white}.quiet{border-color:transparent;background:transparent;color:var(--muted)}.light{background:white;color:var(--blue-dark)}.skip{position:fixed;top:-80px;left:10px;z-index:100;background:white;padding:12px}.skip:focus{top:10px}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:#fff;border-right:1px solid var(--line);padding:38px 26px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:14px;font-family:var(--serif);font-size:1.55rem;font-weight:bold;color:var(--ink)}.brand small{display:block;font-family:var(--body);font-size:.8rem;font-weight:400;letter-spacing:.1em;color:var(--muted);margin-top:1px}.brand-mark{display:flex;align-items:center;justify-content:center;width:44px;height:50px;background:var(--blue-dark);border-radius:5px;color:white;font-size:1.5rem}.sidebar nav{display:grid;gap:10px;margin-top:65px}.sidebar nav a{color:var(--muted);padding:12px 10px;border-radius:9px;font-size:1rem;white-space:nowrap}.sidebar nav a span{font-size:.75rem;margin-right:16px;color:#62758e;font-variant-numeric:tabular-nums}.sidebar nav a.active{background:var(--soft);color:var(--blue);font-weight:bold}.sidebar nav a:hover{background:var(--bg)}.side-note{margin-top:auto;border-top:1px solid var(--line);padding-top:25px;font-size:.87rem;color:var(--muted)}.side-note p{margin-top:12px;line-height:1.9}.side-note a{font-size:.87rem}.instrument-label{font-size:.82rem;letter-spacing:.07em}.page-shell{margin-left:244px}.topbar{height:76px;border-bottom:1px solid var(--line);padding:0 clamp(24px,4vw,64px);display:flex;align-items:center;justify-content:space-between;font-size:.9rem;background:#f4f6faed;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}main{max-width:1340px;margin:auto;padding:45px clamp(24px,4vw,64px) 64px;min-height:85vh}main:focus{outline:none}.page-heading{margin-bottom:35px}.page-heading p:last-child{color:var(--muted);max-width:780px}.eyebrow{font-size:.83rem;letter-spacing:.12em;color:var(--muted);font-weight:600;display:block;margin-bottom:12px}.featured{background:var(--blue-dark);border-radius:var(--radius);padding:36px 42px;color:#fff;display:grid;grid-template-columns:1.1fr 1fr;gap:35px;align-items:center}.featured h2{font-size:2rem}.featured p,.featured .eyebrow{color:#d1dfef}.cover-notes{font-family:var(--serif);font-size:3rem;letter-spacing:.14em;text-align:center;color:#fff;border-top:1px solid #607993;border-bottom:1px solid #607993;padding:22px 0}.cover-notes small{font-family:var(--body);font-size:.9rem;letter-spacing:.16em;color:#c3d4e8}.section-heading{margin:36px 0 18px;display:flex;align-items:baseline;justify-content:space-between;gap:15px}.section-heading h2{margin:0}.section-heading span{font-size:.86rem;color:var(--muted)}footer{border-top:1px solid var(--line);margin:0 clamp(24px,4vw,64px);padding:25px 0;font-family:var(--serif);color:var(--muted);font-size:.93rem}footer span{margin-left:18px;font-family:var(--body);font-size:.8rem}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:26px}.card h3{margin-bottom:10px}.card p{color:var(--muted);font-size:1rem}.card-link{display:block;color:var(--ink);transition:transform .18s,border-color .18s}.card-link:hover{transform:translateY(-3px);border-color:#7f9dbf}.meta{font-size:.84rem;color:var(--muted)}.tag{display:inline-block;font-size:.8rem;padding:3px 10px;border-radius:5px;background:var(--soft);color:var(--blue);margin:0 5px 7px 0}.rule{height:1px;background:var(--line);margin:28px 0}.flow{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.muted{color:var(--muted)}.small{font-size:.9rem}.notice{background:var(--soft);padding:18px 23px;border-left:3px solid var(--blue);border-radius:0 10px 10px 0;margin:22px 0;font-size:.96rem}.notice p:last-child{margin:0}.columns{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:30px}.article{max-width:820px}.article h2{margin-top:38px}.article p,.article li{line-height:2}.article ul,.article ol{padding-left:1.5em}.article li{margin-bottom:8px}.step-num{font-family:var(--serif);color:var(--blue);font-size:2rem;line-height:1.2;margin-bottom:18px}.week-label{font-size:.82rem;color:var(--accent);letter-spacing:.08em}.lesson-list{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}.lesson-row{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:14px;align-items:center;padding:21px 24px;background:white;color:var(--ink)}.lesson-row:hover{background:#f7faff}.lesson-row strong{font-size:1.03rem;display:block}.lesson-row p{font-size:.9rem;color:var(--muted);margin:4px 0 0}.lesson-number{font-family:var(--serif);font-size:1.6rem;color:#687f9e}.completion{font-size:.8rem;color:var(--blue)}details{border-bottom:1px solid var(--line);padding:16px 0}summary{cursor:pointer;font-weight:600;line-height:1.7}details p{font-size:1rem;color:var(--muted);margin:14px 0 0}details ul{font-size:1rem}.sticky-card{position:sticky;top:100px;align-self:start}.toc a{display:block;font-size:.95rem;padding:7px 0}.toc h3{margin-bottom:10px}.back-link{display:inline-block;font-size:.9rem;margin-bottom:22px}.song-card{position:relative;overflow:hidden;padding:32px;min-height:270px}.song-card .song-title{font-family:var(--serif);font-size:2.5rem;margin:20px 0 10px}.song-card .song-glyph{position:absolute;right:22px;top:5px;font-family:var(--serif);font-size:8rem;line-height:1.4;color:#ecf0f6;pointer-events:none}.song-card>*:not(.song-glyph){position:relative}.song-card.blue{background:var(--blue-dark);color:white;border:0}.song-card.blue p,.song-card.blue .meta{color:#cedbef}.song-card.blue .song-glyph{color:#294d76}.song-card.blue .tag{background:#365575;color:white}.player{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:25px;margin:24px 0}.player .player-title{display:flex;align-items:baseline;justify-content:space-between;gap:15px;margin-bottom:15px}.player h3{margin:0}.player-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}.player-controls label{display:flex;align-items:center;gap:8px;font-size:.9rem}.player-controls input[type=range]{width:120px;accent-color:var(--blue)}.player-controls input[type=checkbox]{width:20px;height:20px;accent-color:var(--blue)}.score{display:flex;flex-wrap:wrap;gap:16px 0;padding:18px 0;align-items:flex-start}.measure{display:flex;align-items:flex-start;border-right:1px solid #9caabc;padding:0 13px;gap:5px;min-height:87px}.note{position:relative;display:flex;flex-direction:column;align-items:center;border:0;background:transparent;padding:6px 6px;min-width:39px;border-radius:6px;font-weight:normal;gap:4px;min-height:70px}.note:hover{background:var(--soft)}.note.active{background:var(--blue);color:white}.note .pitch{display:block;font-size:1.65rem;line-height:1.55;position:relative;white-space:nowrap;font-family:Georgia,serif}.note .upper{position:absolute;left:0;right:0;top:-15px;text-align:center;font-size:1.2rem}.note .lower{position:absolute;left:0;right:0;bottom:-7px;text-align:center;font-size:1.2rem}.note .duration-line{display:block;position:absolute;height:1.5px;background:currentColor;left:0;right:0;bottom:1px}.note .duration-line.second{bottom:-3px}.note .hint{font-size:.75rem;color:var(--muted);white-space:nowrap;line-height:1.4}.note.active .hint{color:#dce9f7}.note .tail{font-size:1.25rem;margin-left:6px}.score.hide-hints .hint{visibility:hidden}.score-note{font-size:.85rem;color:var(--muted);margin:10px 0 0}.phrase-tabs{display:flex;gap:8px;flex-wrap:wrap}.phrase-tabs button{font-size:.9rem;padding:8px 13px}.phrase-tabs button.selected{background:var(--blue);color:#fff;border-color:var(--blue)}.harmonica-scroll{overflow:auto;padding:15px 0;max-width:100%}.harmonica{display:flex;gap:3px;min-width:720px;background:#dae2eb;padding:9px;border-radius:13px;border:1px solid #aab9c9}.hole{flex:1;border:0;min-width:24px;padding:3px 0;background:transparent;border-radius:5px;display:flex;flex-direction:column;gap:4px;min-height:115px;justify-content:flex-start}.hole .hole-num{font-size:.73rem;color:#455d79}.hole i{width:17px;height:21px;background:#27384d;border-radius:3px;display:block}.hole .hole-degree{font-size:.83rem;color:var(--ink);line-height:1.7;white-space:nowrap}.hole.active{background:#fff2d2;outline:2px solid #a15b26}.hole:hover{background:#f6f9ff}.hole .breath{font-size:.72rem;color:var(--muted)}.tool-panel{background:#fff;border:1px solid var(--line);padding:24px;border-radius:var(--radius);margin:20px 0}.big-result{font-family:var(--serif);font-size:3rem;color:var(--blue);margin:15px 0;min-height:75px}.answer-buttons{display:flex;gap:12px;flex-wrap:wrap}.answer-buttons button{min-width:100px}.feedback{min-height:2.5em;font-size:1rem;margin-top:14px;color:var(--blue)}.tap-pad{min-height:105px;min-width:180px;background:var(--soft);border:2px solid var(--blue);font-size:1.3rem}.pulse{width:18px;height:18px;border-radius:50%;background:var(--line);display:inline-block;vertical-align:middle}.pulse.on{background:var(--accent);transform:scale(1.15)}.control-field{display:grid;gap:9px;font-size:1rem;margin:15px 0}.control-field input,.control-field select{padding:10px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);max-width:100%}.progress-line{height:5px;background:var(--line);border-radius:6px;overflow:hidden;margin-top:13px}.progress-line span{display:block;height:100%;background:var(--blue)}.settings-group{margin-bottom:24px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:90vw;background:var(--blue-dark);color:white;padding:12px 24px;border-radius:10px;z-index:100;display:none;font-size:1rem}.credit{font-size:.83rem;color:var(--muted)}.symbol{display:inline-block;min-width:70px;font-size:1.7rem;font-family:Georgia,serif;color:var(--blue)}.symbol-list>div{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}.symbol-list p{margin:0;font-size:1rem}.mini-schedule{font-size:.93rem}.mini-schedule>div{display:flex;gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}.mini-schedule b{flex-shrink:0;color:var(--blue)}.empty{padding:20px;color:var(--muted)}.error{color:#9b302b}.mobile-only{display:none}body.large-type{font-size:21px}body.large-type main{font-size:1.1em}body.large-type .article p,body.large-type .article li{font-size:1.1em}@media(min-width:1500px){main{padding-top:55px}.featured{padding:45px 50px}}@media(max-width:1120px){.sidebar{width:210px;padding:32px 20px}.page-shell{margin-left:210px}.columns{grid-template-columns:minmax(0,1fr)}.sticky-card{position:static}.grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.featured{padding:30px;gap:22px}.featured h2{font-size:1.7rem}}@media(max-width:760px){body{font-size:17px}.sidebar{position:relative;width:auto;padding:18px 20px 0;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:1.3rem;gap:10px}.brand-mark{width:36px;height:41px;font-size:1.3rem}.brand small{font-size:.75rem}.sidebar nav{display:flex;margin-top:18px;gap:3px;justify-content:space-between}.sidebar nav a{padding:11px 7px;font-size:.85rem;border-radius:8px 8px 0 0}.sidebar nav a span{display:none}.side-note{display:none}.page-shell{margin:0}.topbar{height:57px;padding:0 20px;font-size:.83rem}.topbar button{font-size:.85rem;padding:6px 10px;min-height:40px}main{padding:28px 20px 45px}h1{font-size:2rem}.page-heading{margin-bottom:24px}.featured{grid-template-columns:1fr;padding:28px;gap:20px}.featured h2{font-size:1.8rem}.cover-notes{font-size:2.4rem;padding:18px}.grid,.grid.three{grid-template-columns:1fr;gap:15px}.card{padding:22px}.section-heading{align-items:flex-start;flex-direction:column;gap:4px;margin-top:28px}.lesson-row{padding:18px 15px;grid-template-columns:34px 1fr;gap:10px}.lesson-row .completion{grid-column:2}.player{padding:18px 13px}.player .player-title{align-items:flex-start;flex-direction:column;gap:3px}.measure{padding:0 7px;gap:1px}.note{min-width:32px;padding:6px 4px}.note .pitch{font-size:1.5rem}.note .hint{font-size:.72rem}.score{row-gap:12px}.player-controls{gap:10px}.player-controls button{padding:10px 15px}.song-card{min-height:230px}.song-card .song-title{font-size:2.2rem}footer{margin:0 20px}.symbol-list>div{grid-template-columns:65px 1fr}.columns{gap:10px}.mobile-only{display:block}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media print{.sidebar,.topbar,footer,.player-controls,.tool-panel,.flow button,#toast{display:none}.page-shell{margin:0}main{padding:0;max-width:none}.card,.player{break-inside:avoid}.columns{display:block}body{background:white;font-size:12pt}.sticky-card{display:none}a{color:inherit}}
:where(.player,.card,.article,.columns,.tool-panel,.grid)>*{min-width:0}.player,.article,.columns,.card,.tool-panel{min-width:0}.score{max-width:100%;overflow-x:auto;padding-bottom:16px}.measure{flex-shrink:0}.page-heading{overflow-wrap:anywhere}.featured .cover-notes{font-size:2.65rem}.featured{padding-top:26px;padding-bottom:26px}.featured h2{font-size:1.7rem}.featured p{margin-bottom:15px}.song-glyph{user-select:none}.note .pitch{min-width:15px}.note .lower{bottom:-9px}.note .hint{margin-top:5px}.note .duration-line{bottom:1px}.note .duration-line.second{bottom:-3px}@media(max-width:360px){.sidebar nav{display:grid;grid-template-columns:1fr 1fr}.sidebar nav a{text-align:center;border-radius:6px;white-space:normal}.sidebar{padding-left:15px;padding-right:15px}main{padding-left:14px;padding-right:14px}.featured{padding:22px}.cover-notes{font-size:1.8rem!important}.player-controls label{flex-wrap:wrap}.flow .button,.flow button{max-width:100%}.symbol-list>div{grid-template-columns:1fr}.symbol-list p button{margin-top:10px}.topbar{padding:0 14px}}
.note .pitch .upper,.note .pitch .lower,.hole .pitch .upper,.hole .pitch .lower{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:0;line-height:1}.note .pitch .upper,.hole .pitch .upper{top:auto;bottom:calc(100% + 2px)}.note .pitch .lower,.hole .pitch .lower{bottom:auto;top:calc(100% + 4px)}.octave-dot{display:block;width:4px;height:4px;border-radius:50%;background:currentColor}.note .hint{margin-top:17px}.note{min-height:85px}.hole .pitch{position:relative;font-family:Georgia,serif;font-size:1rem;display:block;line-height:1.3}.hole .hole-degree{margin-top:12px;margin-bottom:13px}.hole .octave-dot{width:3px;height:3px;background:var(--ink)}.hole i.octave-dot{width:3px;height:3px;border-radius:50%}.hole{min-height:152px}
.pitch .upper,.pitch .lower{left:0;right:auto;width:1ch}footer a{font-family:var(--body);font-size:.86rem;margin-left:16px}.player .score::-webkit-scrollbar{height:8px}.player .score::-webkit-scrollbar-thumb{background:#b0bfd1;border-radius:8px}
