@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
.touch-sections{display:none}.touch-sections summary{min-height:44px;display:flex;align-items:center;cursor:pointer}.touch-sections nav{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;padding-top:10px}.touch-sections nav a{color:var(--ink);white-space:normal;min-height:46px}.touch-sections nav a.primary{color:white}@media(max-width:1180px),(pointer:coarse){.touch-sections{display:block;margin:12px 18px;padding:8px 14px;background:var(--paper)}.button,button,summary,a{touch-action:manipulation;-webkit-tap-highlight-color:rgba(112,155,80,.2)}}
.skip-link{position:fixed;top:-90px;left:12px;z-index:200;background:#d4f195;color:#243324;padding:14px;border-radius:8px}.skip-link:focus{top:12px}.mobile-route{display:none}.sidebar nav{overflow-y:auto;min-height:0;overscroll-behavior:contain}.intro-help{display:grid;gap:10px;justify-items:end}.intro-help .button{white-space:nowrap}.setting-toggle{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:15px 0;font-size:13px}.setting-toggle input{width:21px;height:21px;flex:none}.tutorial-steps{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.tutorial-steps button{width:44px;min-height:44px}.tutorial-card{max-width:850px;padding:32px}.tutorial-card p{font-size:16px;line-height:1.9;max-width:720px}.tutorial-footer{justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:30px}.large-text main p,.large-text .small,.large-text td,.large-text .button{font-size:16px}.large-text .voicing-numbers{font-size:21px}.reduce-motion *{transition:none!important;animation:none!important;scroll-behavior:auto!important}input[type=range]{width:100%;accent-color:var(--green);padding:8px 0}.sidebar-bottom{flex-shrink:0}.mini-path{flex-wrap:wrap}.keyboard-scroll,.table-wrap,.builder-list{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.text-input-row>*{min-width:0}.workspace{overflow-x:clip}main{scroll-margin-top:20px}
@media(max-width:800px){.sidebar nav{display:none}.sidebar{padding:12px 18px}.brand{padding:0!important}.topbar{height:auto!important;min-height:68px;padding:10px 18px!important;gap:10px;flex-wrap:wrap}.breadcrumb{display:none}.mobile-route{display:grid;gap:4px;font-size:8px;letter-spacing:1px;min-width:145px;flex:1}.mobile-route select{font-size:14px;min-height:44px;width:100%}.top-actions{margin-left:auto}.top-actions .quiet{min-height:44px}.global{gap:12px!important}.global select{min-height:38px}.sidebar-bottom{display:none}.intro{align-items:flex-start;flex-direction:column}.intro-help{justify-items:start}.intro-help .date-chip{display:none}.button,.quiet,.degree-buttons button{min-height:44px}.controls{align-items:stretch}.controls>.field{flex:1 1 140px}.controls>.field select{width:100%}.step-tools button{min-width:36px;min-height:40px}.builder-step{min-width:155px}.setting-toggle{min-height:54px}.tutorial-card{padding:22px}.four{grid-template-columns:repeat(2,minmax(0,1fr))}input:not([type=checkbox]):not([type=range]),select,textarea{font-size:16px!important}.instrument-head{align-items:flex-start}.instrument-foot span{overflow-wrap:anywhere}.legend{row-gap:10px}.chord-card .big-number{overflow-wrap:anywhere}footer>span{line-height:1.7}.key-chip{min-height:42px}.two,.three{min-width:0}.card{overflow-wrap:anywhere}.callout{overflow-wrap:anywhere}main{scroll-margin-top:0}}
@media(max-width:390px){.top-actions .quiet{padding:7px 5px}.top-actions{gap:0}.global{column-gap:10px!important}.global label{flex:1 1 110px}.global .check{flex-basis:100%}.quiz-options{grid-template-columns:1fr}.tutorial-card p{font-size:15px}.mini-path{gap:9px}.controls>.button{flex:1 1 130px}}
:root{--bg:#f6f6f1;--paper:#fff;--ink:#222c25;--muted:#72796f;--line:#e1e5da;--green:#446347;--mint:#dbe8cb;--lime:#d4f195;--gold:#d9ae5a;--shadow:0 6px 24px #25301d05;--radius:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans',system-ui,sans-serif}button,input,select,textarea{font:inherit}button,a,select,label.file-label{touch-action:manipulation}button{cursor:pointer;transition:background .16s,transform .16s}button:active{transform:translateY(1px)}button:disabled{cursor:default;opacity:.45}a{color:var(--green);text-underline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #89b563;outline-offset:3px}h1,h2,h3,.brand,.big-number{font-family:Manrope,system-ui,sans-serif}h1{font-size:clamp(28px,3vw,39px);letter-spacing:-1.5px;line-height:1.2;margin:10px 0 12px;font-weight:750}h2{font-size:20px;letter-spacing:-.5px;margin:0 0 8px}h3{font-size:15px;margin:0 0 6px}p{line-height:1.65;margin:7px 0 12px}.sidebar{width:230px;background:#151d18;color:#eff2e9;position:fixed;inset:0 auto 0 0;padding:30px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;gap:10px;align-items:center;color:inherit;text-decoration:none;font-weight:750;letter-spacing:2px;font-size:15px;padding:0 9px 38px}.brandmark{width:39px;height:39px;background:var(--lime);border-radius:12px;color:#243324;display:grid;place-items:center;font-size:29px;letter-spacing:-3px;padding-right:4px}.brand-sub{display:block;font-size:8px;font-family:'DM Sans',sans-serif;letter-spacing:1.9px;color:#b1b8ad;margin-top:5px}.nav-label{font-size:9px;letter-spacing:1.7px;color:#89988a;margin:0 12px 12px}nav{display:flex;flex-direction:column;gap:4px}nav a{color:#adb7ac;text-decoration:none;padding:10px 12px;border-radius:9px;font-size:12px;display:flex;gap:12px;align-items:center}nav a:hover{background:#243025;color:#fff}nav a.active{background:var(--lime);color:#243321;font-weight:700}nav a .nav-icon{width:19px;font-size:16px;text-align:center}nav a small{margin-left:auto;font-size:9px;opacity:.6}.sidebar-bottom{margin-top:auto;padding:25px 10px 0;color:#b1b8ad;font-size:10px}.sidebar-bottom p{font-size:12px;margin:14px 0 18px;line-height:1.8}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lime);margin-right:5px}.workspace{margin-left:230px;min-width:0}.topbar{height:72px;padding:0 38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--paper)}.breadcrumb{font-size:9px;letter-spacing:1.4px;color:var(--muted)}.breadcrumb span{margin:0 12px;color:#bdc4b9}.breadcrumb b{font-size:11px;letter-spacing:0;font-weight:500;color:var(--ink)}.top-actions{display:flex;gap:12px}.quiet{border:0;background:transparent;color:inherit;padding:7px 8px;font-size:11px;border-radius:6px}.quiet:hover{background:#8aa06b20}.global{display:flex;gap:19px;padding:17px 38px;align-items:center;border-bottom:1px solid var(--line);background:var(--paper);flex-wrap:wrap}.global label{font-size:8px;letter-spacing:1.1px;font-weight:700;color:var(--muted);display:grid;gap:4px}.global select{border:0;background:transparent;padding:2px 20px 2px 0;font-size:12px;color:var(--ink);min-width:70px;cursor:pointer}.global .check{display:flex;align-items:center;letter-spacing:0;font-size:11px;font-weight:500}.home-badge{margin-left:auto;padding:9px 12px;border:1px solid var(--line);border-radius:8px;font-size:10px;background:var(--bg)}main{padding:30px 38px 28px;max-width:1510px;margin:auto}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.8px;color:var(--green);text-transform:uppercase}.intro{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px}.intro p{color:var(--muted);max-width:610px;font-size:13px}.date-chip{font-size:10px;color:var(--muted);border:1px solid var(--line);padding:10px 14px;border-radius:99px;white-space:nowrap}.grid{display:grid;gap:18px}.two{grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr)}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);min-width:0}.hero{background:#e7eddd;position:relative;overflow:hidden;border:1px solid #d5dfc8}.hero:after{content:'♪';font-size:205px;position:absolute;right:18px;bottom:-35px;color:#56734b12;font-family:serif;pointer-events:none}.hero .eyebrow{color:#536e46}.hero h2{font-size:25px;margin:12px 0}.hero p{max-width:420px;color:#697560}.hero>*{position:relative;z-index:1}.button{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:10px 14px;border-radius:8px;font-size:11px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.button:hover{background:var(--bg)}.button.primary{background:#263d2d;color:#fff;border-color:#263d2d}.button.primary:hover{background:#3a5741}.button.lime{background:var(--lime);border-color:var(--lime);color:#263b27}.button.danger{color:#a64a40}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:15px}.muted{color:var(--muted)}.small{font-size:11px}.tiny{font-size:10px}.section-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 14px;gap:12px}.section-head h2{font-size:17px;margin:0}.tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:5px;background:#eef2e8;color:#627354;font-size:9px;letter-spacing:.2px}.tag.gold{background:#f8efda;color:#967534}.metric{display:flex;gap:12px;align-items:center}.metric strong{font-size:29px;font-family:Manrope,sans-serif;letter-spacing:-1px}.metric p{font-size:10px;color:var(--muted);margin:0}.progress-bar{height:4px;background:var(--line);border-radius:4px;overflow:hidden;margin:18px 0 5px}.progress-bar i{display:block;height:100%;background:var(--green)}.key-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:15px 0}.key-chip{padding:10px 0;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);font-size:11px}.key-chip.active{background:var(--green);color:white;border-color:var(--green)}.key-chip.done{box-shadow:inset 0 -3px #b1d280}.mini-path{display:flex;align-items:center;gap:13px;margin:20px 0}.mini-path strong{font-size:34px;letter-spacing:-1px;font-family:Manrope,sans-serif}.mini-path span{color:#8da17d}.mini-path small{font-size:12px}.line-item{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}.line-item:last-child{border:0}.round-icon{width:35px;height:35px;border:1px solid var(--line);display:grid;place-items:center;border-radius:50%;color:var(--green);flex:none}.line-item p{margin:1px 0;color:var(--muted);font-size:11px}.line-item .quiet{margin-left:auto}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin-bottom:20px}.field{display:grid;gap:6px;min-width:100px}.field>span{font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-weight:700}input,select,textarea{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:10px 11px;border-radius:7px;max-width:100%;font-size:12px}textarea{width:100%;min-height:100px;resize:vertical;line-height:1.6}input[type=number]{width:85px}input[type=checkbox]{accent-color:var(--green)}.check{font-size:11px;display:flex;align-items:center;gap:6px}.tabs{display:flex;gap:5px;padding:4px;background:#e9ede2;border-radius:9px;width:fit-content;margin:10px 0 22px;flex-wrap:wrap}.tabs button{background:transparent;border:0;color:#728069;padding:9px 15px;border-radius:6px;font-size:11px}.tabs button.active{background:var(--paper);color:var(--ink);box-shadow:0 2px 6px #00000008}.chord-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:13px;margin:16px 0}.chord-card{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:18px;position:relative;text-align:left;color:var(--ink);min-width:0;cursor:pointer}.chord-card:hover{border-color:#a5bc90}.chord-card.selected{border-color:var(--green);box-shadow:inset 0 3px var(--green);background:#f0f4e9}.big-number{font-size:29px;letter-spacing:-1px;line-height:1.4;overflow-wrap:anywhere}.chord-card .chord-name{color:var(--muted);font-size:12px;margin:3px 0 13px}.voicing-numbers{font-size:16px;font-weight:600;letter-spacing:.4px;line-height:1.9;overflow-wrap:anywhere}.voicing-numbers sup{font-size:8px;font-weight:400;color:var(--muted);margin-right:3px}.chord-card .small{line-height:1.6}.chord-card .tag{margin-bottom:10px}.voice-line{padding:10px 12px;background:var(--bg);border-radius:7px;font-size:11px;margin:6px 0}.callout{border-left:3px solid #9abc79;background:#edf2e6;padding:14px 17px;border-radius:0 8px 8px 0;font-size:12px;line-height:1.7;margin:16px 0}.callout.warning{background:#fbf3e3;border-color:#d4b479}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:11px}th{text-align:left;color:var(--muted);font-weight:500;font-size:9px;letter-spacing:.5px;text-transform:uppercase;padding:11px;border-bottom:1px solid var(--line)}td{padding:13px 11px;border-bottom:1px solid var(--line);line-height:1.6}tr:last-child td{border:0}.degree-buttons{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.degree-buttons button{min-width:39px;border:1px solid var(--line);background:var(--paper);padding:10px;color:var(--ink);border-radius:7px}.degree-buttons button.active{background:var(--green);color:white}.builder-list{display:flex;gap:10px;overflow-x:auto;padding:4px 0 14px}.builder-step{min-width:138px;padding:14px;border:1px solid var(--line);background:var(--paper);border-radius:10px;cursor:pointer}.builder-step.selected{border-color:var(--green);background:#edf2e6}.builder-step .big-number{font-size:23px}.step-tools{display:flex;gap:4px;margin-top:9px}.step-tools button{font-size:10px;border:0;background:#9eaf8a20;border-radius:4px;padding:5px 7px;color:var(--ink)}.library-card{display:flex;flex-direction:column}.library-card .actions{margin-top:auto;padding-top:12px}.library-card .path{font-size:17px;line-height:1.6;font-weight:600;margin:12px 0}.library-card p{font-size:11px;color:var(--muted)}.mentor-avatar{width:42px;height:42px;background:#e9eddf;border-radius:50%;display:grid;place-items:center;font-family:Manrope,sans-serif;font-weight:700;color:#62744e;margin-bottom:14px}.lesson{display:grid;grid-template-columns:43px 1fr auto;gap:13px;align-items:center}.lesson .num{font-size:22px;color:#aab79d;font-family:Manrope,sans-serif}.lesson p{font-size:11px;color:var(--muted);margin:3px 0}.lesson.done{background:#eff4e7}.practice-focus{text-align:center;padding:30px}.practice-focus .big-number{font-size:62px}.practice-focus .answer-hidden{padding:35px;font-size:16px;color:var(--muted)}.quiz-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:20px 0}.quiz-options button{padding:17px;background:var(--paper);border:1px solid var(--line);border-radius:8px;color:var(--ink)}.quiz-options button.good{background:#deebcf;border-color:#7a9a61}.quiz-options button.bad{background:#f5e3df;border-color:#ce9d92}.pianoTitle{font-size:13px}.instrument{margin:0 38px 25px;padding:21px 24px 15px;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);max-width:1434px}.instrument-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.instrument h3{font-size:13px;font-weight:600;margin:6px 0 0}.legend{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:9px;color:var(--muted)}.legend span:before{content:'';display:inline-block;width:6px;height:6px;background:var(--gold);border-radius:50%;margin-right:5px}.legend .guide-dot:before{background:#8daa76}.legend .color-dot:before{background:#a6b4d1}.legend .melody-dot:before{background:#ca93b6}.keyboard-scroll{overflow-x:auto}.keyboard{height:139px;position:relative;min-width:660px;user-select:none}.pkey{position:absolute;border:1px solid #cbd0c2;background:linear-gradient(#fff,#f5f5ee);border-radius:0 0 4px 4px;height:132px;padding:0;display:flex;flex-direction:column;justify-content:end;align-items:center;font-size:9px;color:#7c8475;gap:3px;padding-bottom:9px;touch-action:none}.pkey.black{height:83px;background:linear-gradient(#303a32,#19231b);z-index:2;border-color:#172017;color:#b1baaa;padding-bottom:7px;font-size:8px}.pkey.on{background:#a7bd90;color:#253322}.pkey.on.bass{background:#e3c381;color:#634d21}.pkey.on.color{background:#b3c1df;color:#2c426e}.pkey.on.melody{background:#d7a7c5;color:#5d3350}.pkey.pressed{background:#d4f195!important;color:#263d2d!important}.instrument-foot{display:flex;justify-content:space-between;gap:15px;font-size:9px;color:var(--muted);margin-top:10px}footer{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:0 38px 24px;color:var(--muted);font-size:9px;flex-wrap:wrap}footer>span:first-child{letter-spacing:2px;font-weight:700}details{border:1px solid var(--line);border-radius:8px;margin:12px 0;padding:12px 14px}summary{cursor:pointer;font-size:12px;font-weight:600}details p{font-size:12px;color:var(--muted);margin:12px 0 0}.note-list{display:flex;flex-wrap:wrap;gap:5px;margin:9px 0}.note-list span{background:var(--bg);padding:5px 8px;border-radius:5px;font-size:11px}.text-input-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.text-input-row input{flex:1;min-width:200px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(100px);opacity:0;max-width:90vw;padding:13px 20px;background:#223b2b;color:#fff;border-radius:9px;font-size:12px;z-index:100;transition:.2s;box-shadow:0 6px 25px #0002}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.midi-strip{font-size:12px;padding:13px;background:var(--bg);border-radius:8px;margin:15px 0}.saved-row{display:flex;gap:8px;margin-top:12px;align-items:center;flex-wrap:wrap}.hidden{display:none!important}.photo-preview{max-height:350px;max-width:100%;object-fit:contain;border:1px solid var(--line);margin:12px 0}.score-big{font-size:44px;font-family:Manrope,sans-serif}.dark{--bg:#151e18;--paper:#1e2921;--ink:#edf1e8;--muted:#acb8a5;--line:#364537;--green:#a4c68a;--mint:#364a2e;--shadow:none}.dark .hero{background:#2e402c;border-color:#485c3c}.dark .hero .eyebrow,.dark .hero p{color:#b2c49e}.dark .button.primary{background:#d4f195;color:#243324;border-color:#d4f195}.dark .tag,.dark .mentor-avatar{background:#34432d;color:#c2d5b1}.dark .callout,.dark .chord-card.selected,.dark .builder-step.selected,.dark .lesson.done{background:#30442b}.dark .callout.warning{background:#483f29}.dark .tabs{background:#293727}.dark .quiz-options button.good{background:#38512b}.dark .quiz-options button.bad{background:#58382f}@media(min-width:1600px){.instrument{margin-left:auto;margin-right:auto}}@media(max-width:1150px){.sidebar{width:195px;padding-left:12px;padding-right:12px}.workspace{margin-left:195px}.topbar,.global{padding-left:25px;padding-right:25px}main{padding:25px}.instrument{margin-left:25px;margin-right:25px}.three{grid-template-columns:repeat(2,1fr)}.four{grid-template-columns:repeat(2,1fr)}.global{gap:12px}.home-badge{display:none}.card{padding:20px}}@media(max-width:800px){.sidebar{position:static;width:100%;padding:13px 16px;display:block}.brand{padding:0 0 12px;font-size:13px}.brandmark{width:31px;height:31px;font-size:24px}.brand-sub,.nav-label,.sidebar-bottom{display:none}nav{flex-direction:row;overflow:auto;gap:3px}nav a{white-space:nowrap;padding:8px 10px;font-size:11px}nav a small{display:none}.workspace{margin-left:0}.topbar{height:51px;padding:0 18px}.breadcrumb{font-size:8px}.top-actions{gap:0}.top-actions .quiet{font-size:10px}.global{padding:12px 18px;gap:13px}.global label{font-size:7px}.global select{font-size:11px;min-width:55px}main{padding:22px 18px}.intro{margin-bottom:18px}.intro p{font-size:12px}.date-chip{display:none}.two{grid-template-columns:1fr}.instrument{margin:0 18px 20px;padding:16px}.instrument-head{align-items:start;flex-direction:column}.legend{gap:9px}.instrument-foot{flex-direction:column;gap:6px}.card{padding:18px}.chord-row{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.chord-card{padding:14px}.three{grid-template-columns:1fr}.four{grid-template-columns:repeat(2,1fr)}footer{padding:0 18px 20px}.controls{gap:10px}.field{min-width:90px}.big-number{font-size:25px}.lesson{grid-template-columns:32px 1fr}.lesson .button{grid-column:2}.global .check{font-size:10px}.practice-focus{padding:20px 10px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
#global{position:sticky;top:0;z-index:4;box-shadow:0 8px 24px #0003} @media(max-width:700px){#global{position:static}}
