:root{--ink:#233e50;--muted:#455b65;--paper:#f7f6f1;--white:#fffefa;--border:#c6d0c9;--accent:#b95f39;--accent-light:#f5e6da;--teal:#18716c;--green:#2c805c;--red:#b83c42;--shadow:0 8px 26px #243d4e05;--radius:16px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:1rem;line-height:1.6}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:disabled{opacity:.5;cursor:not-allowed}button,input,select{accent-color:var(--teal)}:focus-visible{outline:3px solid #377daa;outline-offset:3px}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.2}h1{font-size:1.82rem;letter-spacing:-1.7px;font-weight:600}h2{font-size:1.14rem;letter-spacing:-.6px;font-weight:600}h3{font-size:1rem;letter-spacing:-.2px;font-weight:650}p{color:var(--muted)}[hidden]{display:none!important}.skip-link{position:fixed;top:-100px;left:16px;z-index:99;padding:10px;background:white}.skip-link:focus{top:8px}.sidebar{position:fixed;inset:0 auto 0 0;width:254px;border-right:1px solid var(--border);padding:32px 22px;background:#f0f2ed;display:flex;flex-direction:column;z-index:4}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;margin-bottom:40px;line-height:1.15}.brand svg{width:43px;height:43px;flex:none}.brand span{font-size:1.05rem;letter-spacing:-.8px}.brand b{font-weight:650}.brand small{display:block;font-size:0.82rem;letter-spacing:2.1px;margin-top:8px;color:var(--muted)}nav a{text-decoration:none}.sidebar nav{display:flex;flex-direction:column;gap:8px}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:12px 10px;border-radius:10px;font-size:0.91rem;font-weight:550}.sidebar nav a>span{font-size:1rem;width:22px;text-align:center;font-weight:400}.sidebar nav a.active{background:var(--ink);color:#fff}.sidebar nav a:hover:not(.active){background:#e5e9e2}.sidebar nav small{margin-left:auto;font-size:0.82rem;opacity:.8}.sidebar-tip{margin-top:auto;padding:22px 14px;border-top:1px solid #d8dfd6}.sidebar-tip strong{display:block;font-size:1rem;margin-top:10px}.sidebar-tip p{font-size:0.91rem;margin-top:10px}.sidebar-tip a{font-size:0.91rem;color:var(--teal);display:inline-block;margin-top:12px;text-decoration:none;font-weight:650}.privacy-note{font-size:0.82rem;margin:10px 10px 0;display:flex;gap:8px;align-items:flex-start}.local-dot{height:7px;width:7px;background:#76997b;border-radius:50%;flex:none;margin-top:5px}.workspace{margin-left:254px}.topbar{min-height:87px;border-bottom:1px solid var(--border);padding:22px 44px;display:flex;justify-content:space-between;align-items:center;gap:15px}.topbar>div{display:flex;flex-direction:column;gap:2px}.topbar #cycle-label{font-size:0.91rem;color:var(--muted)}.eyebrow{font-size:0.82rem;letter-spacing:1.8px;font-weight:700;color:var(--muted)}.connection-pill{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:30px;padding:8px 13px;text-decoration:none;background:var(--white);font-size:0.82rem}.status-dot{width:7px;height:7px;border-radius:50%;background:#acb5ad}.connection-pill.connected .status-dot{background:var(--green)}main{max-width:1430px;margin:0 auto;padding:36px 44px 48px;min-height:calc(100vh - 160px)}.hero{display:grid;grid-template-columns:1.5fr 1fr;gap:28px;align-items:center;margin-bottom:43px}.hero h1{font-family:Georgia,'Times New Roman',serif;font-size:2.59rem;line-height:1.08;font-weight:400;letter-spacing:-1.8px;margin:16px 0 22px}.hero h1 em{font-style:normal;color:var(--accent)}.hero-copy>p{max-width:560px;line-height:1.8;font-size:1rem}.button-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.hero .button-row{margin-top:25px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:43px;padding:10px 17px;border:1px solid transparent;border-radius:8px;text-decoration:none;font-weight:650;font-size:0.91rem;line-height:1.4;white-space:normal}.button.primary{background:var(--ink);color:white}.button.primary:hover:not(:disabled){background:#315568}.button.secondary{border-color:#d4ddd7;background:var(--white);color:var(--ink)}.button.secondary:hover:not(:disabled){background:#eff3eb}.button.plain{background:transparent;color:var(--ink)}.button.plain:hover{background:#e8ede5}.small-button{background:var(--white);border:1px solid var(--border);border-radius:7px;color:var(--ink);padding:6px 10px;font-size:0.82rem}.hero-meta{display:flex;gap:25px;margin-top:30px;font-size:0.82rem;color:var(--muted)}.hero-meta b{display:block;font-size:1rem;font-weight:500;color:var(--ink);line-height:1.3}.hero-visual{min-height:350px;background:#e5ebe0;border-radius:140px 140px 16px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;padding:30px 14px}.hero-visual svg{width:100%;max-width:400px}.visual-tag{font-size:0.82rem;border:1px solid #b8c8b6;padding:5px 12px;border-radius:30px;color:#54735e}.visual-note{text-align:center;font-family:Georgia,serif;font-size:1rem;line-height:1.3;margin-top:-6px;color:#527062}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{margin-top:10px}.subtle{font-size:0.82rem;color:var(--muted)}.start-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.start-card{display:block;text-decoration:none;padding:25px}.start-card:hover{border-color:#bdcfc1;transform:translateY(-2px);transition:.16s}.card-number{display:inline-flex;color:var(--accent);font-size:0.91rem;font-weight:700;background:var(--accent-light);border-radius:50%;width:32px;height:32px;align-items:center;justify-content:center;margin-bottom:22px}.start-card h3{margin-bottom:12px}.start-card p{font-size:0.91rem;line-height:1.8;min-height:65px}.text-link{display:inline-block;color:var(--teal);font-size:0.91rem;font-weight:650;text-decoration:none;margin-top:20px}.home-bottom{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:23px}.home-bottom .card{padding:26px}.home-bottom h3{margin-top:13px}.home-bottom p{font-size:0.91rem;margin-top:12px}.next-card{background:#f0f3e9}.page-heading{margin-bottom:30px}.page-heading h1{margin:12px 0 15px}.page-heading p{max-width:800px;font-size:1rem}.page-heading.compact{margin-bottom:22px}.page-heading.compact h1{font-size:1.55rem}.month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:26px}.month-card{padding:19px;text-decoration:none;position:relative}.month-card.selected{border-color:var(--teal);background:#f0f6f1}.month-card .month-tag{font-size:0.82rem;font-weight:700;color:var(--accent)}.month-card h3{font-size:1rem;margin:8px 0 11px}.month-card p{font-size:0.82rem}.month-card .month-count{margin-top:14px;font-size:0.82rem;color:var(--teal)}.month-detail{padding:30px}.month-detail h2{margin:9px 0 16px}.month-detail .two-columns{margin:20px 0}.month-detail ul{margin:13px 0;padding-left:20px;color:var(--muted);font-size:0.91rem}.month-detail li{padding:4px 0}.week-row{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:0.91rem;align-items:start}.week-row input{margin-top:4px}.criteria{background:#eef3e9;padding:16px 20px;border-radius:9px;margin-top:20px;font-size:0.91rem}.exercise-links{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}.exercise-links a{border:1px solid var(--border);padding:12px 14px;text-decoration:none;font-size:0.91rem;border-radius:8px}.exercise-links a:hover{background:#eff3eb}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px}.lesson-layout{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:start}.lesson-menu{display:flex;flex-direction:column;gap:3px;position:sticky;top:20px}.lesson-menu a{font-size:0.91rem;padding:11px 13px;border-radius:8px}.lesson-menu a.active{background:#e4ece2;color:var(--teal);font-weight:700}.lesson-menu span{display:block;font-size:0.82rem;color:var(--muted);letter-spacing:.6px}.lesson-content{padding:30px}.lesson-content h2{margin:12px 0 16px}.lesson-content h3{font-size:1rem;margin:26px 0 9px}.lesson-content p{font-size:0.91rem;line-height:1.85}.lesson-diagram{margin:24px 0;background:#f1f4ee;border-radius:12px;padding:16px;overflow-x:auto}.lesson-diagram svg{display:block;max-width:100%;min-width:400px;width:100%;height:auto;font-family:system-ui;font-size:0.91rem;color:var(--ink)}.lesson-callout{padding:17px 20px;background:#f4eadf;border-radius:10px;margin-top:24px}.lesson-callout h3{margin:0 0 8px}.lesson-callout p{color:#785743}.lesson-warning{border-left:3px solid #b4c5b7;padding-left:16px;margin-top:24px}.lesson-warning strong{font-size:0.91rem}.practice-controls{display:flex;gap:16px;align-items:end;padding:20px;margin-bottom:19px;flex-wrap:wrap}label{display:flex;flex-direction:column;gap:6px;font-size:0.82rem;color:var(--muted);font-weight:600}select,input[type=number]{background:#fffefa;border:1px solid #d5ddd7;border-radius:7px;color:var(--ink);padding:8px 10px;font-size:0.91rem;min-height:37px;max-width:100%}select{cursor:pointer}input[type=checkbox]{width:15px;height:15px;flex:none}input[type=number]{width:100%}.practice-controls label{flex:1;min-width:130px}.practice-controls .exercise-select-label{flex:2;min-width:230px}.score-card{overflow:hidden}.score-header{padding:23px 25px 8px;display:flex;justify-content:space-between;gap:20px;align-items:center}.score-header h2{font-size:1.05rem;margin-top:8px}.legend{display:flex;gap:13px;font-size:0.82rem;white-space:nowrap}.r-label{color:#a14e29}.l-label{color:#156b69}.score-options{display:flex;gap:17px;align-items:center;flex-wrap:wrap;padding:12px 25px 0}.score-options label,.keyboard-header label,.practice-secondary>label{flex-direction:row;align-items:center;font-size:0.82rem;font-weight:500}.score-options .small-button{margin-left:auto}.score-scroll{overflow:auto;padding:4px 12px 0;max-height:650px;scroll-behavior:smooth}.score-svg{display:block;width:100%;min-width:840px;height:auto}.score-svg .hand-caption{font:0.82rem system-ui;fill:#738389}.score-event.muted{opacity:.23}.score-event.current .note-head{stroke-width:3}.score-event.current{filter:drop-shadow(0 0 4px #ccaf6844)}.score-note.hit{color:var(--green)}.score-note.miss{color:var(--red)}.score-note.pending{color:#457faa}.score-event.current .note-label{font-weight:700;fill:var(--ink)}.transport{border-top:1px solid var(--border);padding:17px 23px;display:flex;justify-content:space-between;gap:15px;align-items:center}.transport .button{font-size:0.82rem;padding:9px 13px;min-height:37px}.tempo-label{flex-direction:row;align-items:center;white-space:nowrap}.tempo-label input{width:65px}.practice-secondary{padding:0 23px 17px;display:flex;align-items:center;gap:19px;flex-wrap:wrap}.practice-secondary select{font-size:0.82rem;min-height:29px;padding:4px 7px}.session-feedback{display:flex;align-items:center;gap:16px;background:#eaf0e6;border:1px solid #d8e2d1;border-radius:12px;margin:19px 0;padding:17px 20px;min-height:81px}.session-feedback.wrong{background:#f8e8e2;border-color:#e7c6bb}.feedback-icon{font-size:1.23rem;color:var(--teal);width:28px;text-align:center}.session-feedback strong{font-size:0.91rem}.session-feedback p{font-size:0.82rem;margin-top:3px}.session-feedback #live-counters{margin-left:auto;font-size:0.82rem;color:var(--teal);max-width:160px;text-align:right}.keyboard-card{overflow:hidden;margin-bottom:20px}.keyboard-header{padding:18px 22px;display:flex;justify-content:space-between;align-items:center;gap:15px}.keyboard-header h3{font-size:1rem}.keyboard-header p{font-size:0.82rem;margin-top:3px}.keyboard-scroll{overflow-x:auto;padding:0 18px 12px}.virtual-keyboard{position:relative;height:150px;min-width:100%;user-select:none;touch-action:pan-x}.piano-key{position:absolute;border:1px solid #c4ccc7;border-radius:0 0 5px 5px;display:flex;align-items:end;justify-content:center;padding:0 0 8px;font-size:0.82rem;color:#7a8b83;cursor:pointer;touch-action:none;transition:background .06s;outline-offset:-4px;user-select:none}.piano-key.white{background:linear-gradient(#fffefa,#f5f6f0);width:30px;height:143px;z-index:1}.piano-key.black{background:linear-gradient(#31434a,#172b37);border-color:#152832;color:#b7c7c7;width:19px;height:91px;z-index:2;font-size:0.82rem;box-shadow:0 4px 3px #172c3444}.piano-key.target-R{box-shadow:inset 0 -7px 0 #bd7245}.piano-key.target-L{box-shadow:inset 0 -7px 0 #388d85}.piano-key.down{background:#79bda2;color:#163e2f}.piano-key.down.bad{background:#e5a091;color:#682e24}.piano-key.center span{background:#e6ddca;padding:2px 3px;border-radius:3px}.keyboard-footer{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;border-top:1px solid var(--border);padding:10px 22px;color:var(--muted);font-size:0.82rem}.corrections{padding:17px 22px;margin-bottom:20px}.corrections summary{font-weight:650;font-size:0.91rem}.corrections p{font-size:0.91rem;margin:12px 0}.correction-list{font-size:0.82rem;line-height:1.9;color:var(--muted)}.result-card{padding:26px;margin-top:20px}.result-card h2{margin-bottom:14px}.result-badges{display:flex;gap:20px;flex-wrap:wrap;margin:18px 0}.result-badges>div{background:#eef3e9;border-radius:10px;padding:14px 17px;min-width:120px}.result-badges strong{display:block;font-size:1.09rem;line-height:1.3}.result-badges span{font-size:0.82rem;color:var(--muted)}table{border-collapse:collapse;width:100%;font-size:0.82rem;text-align:left}th{color:var(--muted);font-weight:600;white-space:nowrap}th,td{padding:12px 10px;border-bottom:1px solid var(--border)}td{color:var(--ink)}.table-scroll{overflow:auto}.result-card .small-note{margin-top:12px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:21px}.stat-card{padding:23px}.stat-card strong{display:block;font-size:1.32rem;font-weight:500;margin-top:8px}.stat-card p{font-size:0.82rem;margin-top:5px}.progress-toolbar{padding:20px;display:flex;justify-content:space-between;align-items:end;gap:15px;flex-wrap:wrap;margin-bottom:22px}.progress-toolbar .button{font-size:0.82rem}.file-button{cursor:pointer;position:relative;overflow:hidden}.file-button input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.card-title{padding:23px 25px 0;font-size:1rem}.progress-bars{height:190px;display:grid;grid-template-columns:repeat(8,1fr);gap:12px;padding:24px 30px 12px;align-items:end}.progress-bar{height:150px;display:flex;align-items:center;justify-content:end;flex-direction:column;gap:5px;font-size:0.82rem}.progress-bar>i{display:block;background:#789886;width:60%;min-height:3px;border-radius:6px 6px 0 0}.progress-bar strong{font-size:0.82rem;font-weight:550}.progress-bar small{font-size:0.82rem;color:var(--muted)}.small-note{font-size:0.82rem;line-height:1.75;color:var(--muted)}#view-progres>.card>.small-note{padding:8px 25px 20px}.history-card{padding:24px;margin-top:23px}.history-card h2{font-size:1rem}.history-card .small-note{padding:8px 0 16px!important}.danger-link{border:0;background:transparent;color:var(--red);font-size:0.82rem;padding:10px 0;margin-top:18px;text-decoration:underline}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px}.setup-card{padding:29px}.setup-card h2{font-size:1rem;margin-bottom:16px}.setup-card p{font-size:0.91rem;margin:13px 0}.setup-card label{margin-top:15px}.setup-card .card-number{margin-bottom:15px}.setup-card .button{margin-top:5px}.manual-range{margin-top:20px;font-size:0.91rem}.manual-range .two-columns{gap:14px}.manual-range button{margin-top:12px}.preferences{padding:26px;margin-top:25px}.preferences h2{font-size:1rem;margin-bottom:22px}.preferences .small-note{margin-top:12px}.faq-list{margin-top:23px}.faq-list details{border-bottom:1px solid var(--border);padding:17px 3px}.faq-list summary{font-size:1rem;font-weight:600;cursor:pointer}.faq-list p{font-size:0.91rem;line-height:1.85;margin-top:13px;max-width:900px}code{background:#eaece4;border-radius:3px;padding:2px 4px;font-size:0.82rem;overflow-wrap:anywhere}.source-note{font-size:0.82rem;margin-top:23px}.footer{display:flex;justify-content:space-between;gap:15px;padding:18px 44px;border-top:1px solid var(--border);font-size:0.82rem;color:var(--muted);flex-wrap:wrap}.footer a{text-decoration:none}.notice{margin:16px 44px 0;padding:13px 17px;border-radius:9px;font-size:0.91rem}.warning{background:#f6e5d9;color:#7b452b;border:1px solid #e5c6b0}dialog{border:1px solid var(--border);border-radius:18px;background:var(--white);color:var(--ink);padding:32px;width:min(760px,calc(100vw - 35px));max-height:85vh;overflow:auto;box-shadow:0 20px 100px #17303c33}dialog::backdrop{background:#17303c66}dialog h2{margin:13px 0 17px}dialog p{font-size:0.91rem}dialog .dialog-close{float:right;background:transparent;border:0;font-size:1.23rem;color:var(--muted);line-height:1}.calibration-values{background:#eef3e9;padding:20px;border-radius:10px;margin:22px 0;font-size:1rem}.toast{position:fixed;bottom:25px;right:25px;background:var(--ink);color:white;padding:13px 22px;border-radius:10px;z-index:20;font-size:0.91rem;max-width:calc(100vw - 50px);box-shadow:0 8px 30px #233e5022}.empty-state{text-align:center;padding:40px 20px;color:var(--muted);font-size:0.91rem}.out-of-range{color:var(--red);font-weight:650}.score-range-notice{padding:12px 0;color:var(--red)}.result-events{max-height:260px;overflow:auto;margin-top:16px}.result-events ul{font-size:0.82rem;padding-left:18px;color:var(--muted)}
@media(min-width:1600px){.hero h1{font-size:3rem}.hero-visual{min-height:390px}}@media(max-width:1180px){.sidebar{width:218px;padding:25px 16px}.workspace{margin-left:218px}main{padding:30px 27px}.topbar,.footer{padding-left:27px;padding-right:27px}.hero h1{font-size:2.18rem}.hero-visual{min-height:310px}.hero-meta{gap:18px}.start-card{padding:21px}.start-card h3{font-size:1rem}.lesson-layout{grid-template-columns:200px 1fr}.transport{flex-wrap:wrap}.month-grid{grid-template-columns:repeat(4,1fr)}.month-card{padding:15px}.notice{margin-left:27px;margin-right:27px}}
@media(max-width:900px){.sidebar{position:static;width:100%;padding:16px 20px;border-bottom:1px solid var(--border);border-right:0}.brand{margin:0 0 15px;gap:8px}.brand svg{width:34px;height:34px}.brand span{font-size:1rem}.brand small{margin-top:4px}.sidebar nav{flex-direction:row;overflow-x:auto;gap:4px}.sidebar nav a{white-space:nowrap;padding:7px 10px;font-size:0.82rem}.sidebar nav a>span{font-size:1rem;width:16px}.sidebar nav small,.sidebar-tip,.privacy-note{display:none}.workspace{margin-left:0}.topbar{min-height:68px;padding:14px 22px}main{padding:27px 22px}.hero{gap:25px}.hero h1{font-size:2rem}.hero-copy>p{font-size:0.91rem}.hero-visual{min-height:290px}.start-card p{min-height:85px}.score-header{flex-wrap:wrap}.legend{font-size:0.82rem}.score-svg{min-width:860px}.stats-grid{gap:11px}.stat-card{padding:17px}.keyboard-header{flex-wrap:wrap}.lesson-layout{grid-template-columns:180px 1fr}.lesson-content{padding:23px}.setup-card{padding:23px}.setup-card h2{font-size:1rem}}
@media(max-width:650px){h1{font-size:1.5rem}.topbar .eyebrow{font-size:0.82rem;letter-spacing:1px}.connection-pill{font-size:0.82rem;max-width:170px}.topbar #cycle-label{font-size:0.82rem}.hero{grid-template-columns:1fr;margin-bottom:30px}.hero h1{font-size:2.14rem}.hero-visual{display:none}.hero-meta{gap:26px}.section-heading{align-items:start;flex-direction:column;gap:8px}.section-heading h2{font-size:1.09rem}.start-grid{grid-template-columns:1fr}.start-card{position:relative;padding:22px 24px 22px 75px}.start-card .card-number{position:absolute;left:23px;top:23px}.start-card p{min-height:0}.start-card .text-link{margin-top:12px}.home-bottom{grid-template-columns:1fr}.month-grid{grid-template-columns:repeat(2,1fr);gap:11px}.month-detail{padding:23px}.two-columns{grid-template-columns:1fr;gap:20px}.exercise-links{grid-template-columns:1fr}.lesson-layout{grid-template-columns:1fr}.lesson-menu{position:static;flex-direction:row;overflow:auto;padding-bottom:5px}.lesson-menu a{min-width:140px}.lesson-content{padding:23px}.lesson-diagram{padding:10px}.lesson-diagram svg{min-width:370px}.practice-controls{gap:13px;padding:17px}.practice-controls label{min-width:120px}.practice-controls .exercise-select-label{min-width:100%;order:3}.practice-controls label:last-child{min-width:100%;order:4}.practice-secondary{gap:14px}.score-header{padding:21px 18px 8px}.score-header h2{font-size:1rem}.score-options{padding:10px 18px 0;gap:10px}.score-options .small-button{margin-left:0}.transport{padding:16px}.session-feedback{padding:14px;gap:10px;flex-wrap:wrap}.session-feedback #live-counters{margin-left:38px;max-width:100%;text-align:left}.keyboard-header{padding:17px}.keyboard-header .button-row{gap:6px}.keyboard-header .small-button{font-size:0.82rem}.keyboard-footer{padding:10px 17px}.stats-grid{grid-template-columns:1fr 1fr}.setup-grid{grid-template-columns:1fr}.progress-toolbar{align-items:stretch}.progress-toolbar>label{flex:1}.progress-bars{gap:5px;padding:20px 13px 10px}.progress-bar small{font-size:0.82rem}.footer{padding:17px 22px;font-size:0.82rem}.page-heading.compact h1{font-size:1.32rem}.toast{right:15px;bottom:15px}.notice{margin:15px 22px}.result-badges{gap:10px}.result-badges>div{flex:1;min-width:100px}.practice-secondary label:last-child{flex-basis:100%}.history-card{padding:19px}}
@media(prefers-reduced-motion:reduce){html,.score-scroll{scroll-behavior:auto}*{transition:none!important}}
@media print{@page{size:A4 landscape;margin:12mm}.sidebar,.topbar,.footer,.page-heading,.practice-controls,.transport,.practice-secondary,.session-feedback,.keyboard-card,.score-options,.legend,.result-card,.toast,dialog,.lesson-menu,.button-row,.connection-pill,.notice{display:none!important}.workspace{margin:0}main{padding:0;max-width:none}.view:not(#view-pratiquer){display:none!important}#view-pratiquer{display:block!important}.card{border:0;box-shadow:none;background:white}.score-card{overflow:visible}.score-scroll{padding:0;max-height:none;overflow:visible}.score-svg{min-width:0;width:100%;max-height:none}.score-header{padding:0 0 12px}.corrections{padding:12px 0;margin:0;font-size:0.82rem}.corrections:not([open]){display:none}.corrections summary{display:none}body{background:white;font-size:0.82rem}.score-note,.score-event{color:#111!important;filter:none!important}.score-event.muted{opacity:.3}}
.score-zoom{display:inline-flex;align-items:center;gap:6px}.score-zoom output{font-size:0.82rem;min-width:37px;text-align:center}.score-zoom .small-button{font-size:1rem;padding:1px 9px;min-height:27px;margin:0}
@media print{.score-svg{width:100%!important;min-width:0!important}}

/* V2 : interface tactile et lecture sur une tablette de 10 pouces. */
:root{font-size:22px;--muted:#455b65;--radius:20px}:root[data-reading-size="large"]{font-size:26px}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-size:1rem;line-height:1.7}h1,h2,h3{font-family:inherit;line-height:1.3;font-weight:700;letter-spacing:0}h1{font-size:1.9rem}h2{font-size:1.5rem}h3{font-size:1.15rem}button,input,select{max-width:100%}p,h1,h2,h3,li,summary{overflow-wrap:break-word}section,article,.card,.workspace,.lesson-content,.practice-fields>*,.two-columns>*{min-width:0}:focus-visible{outline:4px solid #9d6017;outline-offset:4px}
.sidebar{position:static;inset:auto;width:100%;padding:24px 28px;background:#eef1e9;border-right:0;border-bottom:2px solid var(--border);display:block}.brand{margin:0 0 24px;gap:16px;width:fit-content}.brand svg{width:60px;height:60px}.brand span{font-size:1.5rem;letter-spacing:0}.brand small{font-size:.82rem;letter-spacing:.02em;margin-top:10px}.sidebar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;overflow:visible;max-width:1280px;margin:auto}.sidebar nav a{font-size:1rem;min-height:64px;padding:14px 18px;white-space:normal;background:var(--white);border:2px solid var(--border);border-radius:16px;line-height:1.4;justify-content:flex-start}.sidebar nav a>span{font-size:1.3rem;width:30px;flex-shrink:0}.sidebar nav a.active{border-color:var(--ink)}.sidebar nav small,.sidebar-tip,.privacy-note{display:none}.workspace{margin-left:0}.topbar{padding:24px 28px;min-height:100px;gap:20px;flex-wrap:wrap;align-items:center}.topbar .eyebrow{font-size:.82rem;letter-spacing:.02em}.topbar #cycle-label{font-size:.91rem;margin-top:6px}.topbar>div.reading-tools{flex-direction:row;align-items:center;gap:10px}.reading-tools>span{font-size:.91rem}.reading-tools button{font-size:1rem;min-width:60px;min-height:60px;padding:10px;border:2px solid var(--border);border-radius:14px;color:var(--ink);background:var(--white)}.reading-tools button:last-child{font-size:1.18rem;font-weight:bold}.reading-tools button[aria-pressed=true]{background:var(--ink);color:white;border-color:var(--ink)}.connection-pill{font-size:.91rem;min-height:60px;padding:14px 18px;border-radius:16px;max-width:100%;line-height:1.5}.status-dot{width:12px;height:12px;flex-shrink:0}main{max-width:1280px;padding:32px 28px 48px;min-height:0}.eyebrow{font-size:.91rem;letter-spacing:.02em}.hero{grid-template-columns:1.2fr 1fr;gap:28px;margin-bottom:36px}.hero h1{font-family:inherit;font-size:2rem;line-height:1.25;letter-spacing:0;font-weight:700;margin:20px 0 26px}.hero-copy>p{font-size:1rem;line-height:1.8;max-width:40em}.hero-visual{min-height:440px;padding:28px 20px}.hero-visual svg{min-width:0}.hero-visual svg text{font-size:22px}.visual-tag{font-size:.91rem}.visual-note{font-family:inherit;font-size:1.18rem;line-height:1.5;margin-top:12px}.hero-meta{font-size:.91rem;gap:24px;flex-wrap:wrap}.hero-meta b{font-size:1.4rem;font-weight:bold}.button-row{gap:16px}.button,.transport .button,.progress-toolbar .button{font-size:1rem;min-height:64px;padding:16px 22px;border-radius:14px;line-height:1.45;text-align:center;border-width:2px}.button.secondary{border-color:#a4b8ad}.small-button,.keyboard-header .small-button,.score-zoom .small-button{font-size:1rem;min-width:60px;min-height:60px;padding:12px 16px;border-width:2px;border-radius:13px;line-height:1.45}.text-link{font-size:1rem;line-height:1.5;min-height:56px;padding:12px 0;text-decoration:underline;text-underline-offset:4px}.section-heading{align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:24px}.section-heading h2{font-size:1.5rem}.subtle{font-size:.91rem}.start-grid{grid-template-columns:1fr;gap:22px}.start-card{padding:28px;position:static}.start-card .card-number{position:static}.start-card h3{font-size:1.2rem;margin-bottom:16px}.start-card p{font-size:1rem;min-height:0;max-width:40em}.start-card .text-link{margin-top:14px}.card-number{font-size:1rem;width:54px;height:54px;margin-bottom:20px}.home-bottom{grid-template-columns:1fr 1fr;gap:24px}.home-bottom .card{padding:28px}.home-bottom p{font-size:1rem;margin-top:18px}.page-heading{margin-bottom:28px}.page-heading h1,.page-heading.compact h1{font-size:1.9rem;margin:18px 0}.page-heading p{font-size:1rem;max-width:40em}.month-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.month-card{padding:28px}.month-card .month-tag{font-size:1rem}.month-card h3{font-size:1.2rem;margin:16px 0}.month-card p{font-size:1rem}.month-card .month-count{font-size:.91rem;margin-top:20px}.month-detail{padding:30px}.month-detail ul{font-size:1rem;padding-left:28px}.month-detail li{padding:8px 0}.two-columns{grid-template-columns:1fr;gap:28px}.week-row{font-size:1rem;gap:16px;padding:18px 0;line-height:1.7}.week-row input{margin-top:6px}.criteria{font-size:1rem;padding:24px;border-radius:16px}.exercise-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.exercise-links a{font-size:1rem;line-height:1.6;min-height:64px;padding:20px;border-width:2px;border-radius:16px}.lesson-layout{grid-template-columns:1fr}.lesson-picker>summary,.practice-controls>summary,.practice-options>summary{padding:20px 24px;min-height:64px;font-size:1rem;font-weight:bold;cursor:pointer;line-height:1.6;color:var(--teal)}.lesson-menu{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 24px 24px;overflow:visible}.lesson-menu a{font-size:1rem;min-width:0;min-height:70px;border:2px solid var(--border);padding:18px;border-radius:14px;line-height:1.6}.lesson-menu span{font-size:.82rem;letter-spacing:.02em}.lesson-content{padding:30px}.lesson-content h2{margin:18px 0 24px}.lesson-content h3{font-size:1.18rem;margin:30px 0 14px}.lesson-content p{font-size:1.09rem;line-height:1.85;max-width:40em}.lesson-diagram{padding:24px;margin:28px 0;overflow-x:auto}.lesson-diagram svg{min-width:700px;max-width:none;width:100%;font-size:1rem;display:block}.lesson-diagram .diagram-legend{font-size:1rem;padding-left:28px;color:var(--ink);line-height:1.8;margin:24px 0 0}.diagram-legend li{padding:8px 0}.lesson-diagram .diagram-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.diagram-card{background:var(--white);border:2px solid var(--border);border-radius:18px;padding:22px;text-align:center}.lesson-diagram .diagram-card svg{width:100%;max-width:140px;min-width:0;margin:auto;height:130px}.diagram-card strong{font-size:1rem;display:block}.lesson-diagram .diagram-card p{font-size:1rem;margin-top:12px}.lesson-callout{padding:24px;border-radius:18px}.lesson-callout h3{margin:0 0 16px}.lesson-warning strong{font-size:1rem}.lesson-warning{padding-left:22px;border-width:4px}.practice-controls{padding:0;display:block;margin-bottom:24px}.practice-fields{padding:4px 24px 24px;display:grid;grid-template-columns:1fr 1fr;gap:24px}.practice-fields label:nth-child(-n+2){grid-column:1/-1}.practice-controls label,.practice-controls .exercise-select-label{min-width:0;order:initial}label{font-size:1rem;gap:12px;line-height:1.6;color:var(--ink)}select,input[type=number]{font-size:1rem;min-height:64px;padding:14px 12px;border:2px solid #a9bbae;border-radius:12px;width:100%;min-width:0}input[type=checkbox]{width:30px;height:30px;flex-shrink:0}.score-header{padding:28px 26px 16px;flex-wrap:wrap;align-items:flex-start}.score-header h2{font-size:1.5rem;margin-top:16px}.legend{font-size:.95rem;gap:18px;white-space:normal;flex-wrap:wrap;line-height:1.6}.r-label{color:#904123}.l-label{color:#12625f}.score-options{padding:16px 26px;gap:20px 26px}.score-options label,.keyboard-header label,.practice-secondary>label{font-size:1rem;min-height:60px;gap:12px;flex-wrap:wrap}.score-options .small-button{margin-left:0}.score-zoom{gap:14px}.score-zoom output{font-size:1rem;min-width:70px}.score-reading-note{font-size:.91rem;padding:12px 26px 18px;line-height:1.7}.score-scroll{padding:4px 16px 12px;max-height:450px;scroll-behavior:auto}.score-svg{min-width:640px}.score-svg .hand-caption{font:20px system-ui;fill:#304853}.transport{padding:24px;gap:24px;flex-wrap:wrap;align-items:center}.tempo-label{font-size:1rem;gap:12px}.tempo-label input{width:100px}.practice-options{border-top:1px solid var(--border)}.practice-secondary{padding:8px 24px 24px;gap:24px;align-items:flex-start}.practice-secondary select{font-size:1rem;min-height:64px;padding:14px 12px;width:auto}.practice-secondary>label{font-size:1rem;flex-wrap:wrap;min-width:0;max-width:100%;flex-direction:row;align-items:center}.practice-secondary label:last-child{flex-basis:auto}.session-feedback{padding:24px;gap:20px;margin:24px 0;min-height:110px;align-items:flex-start;flex-wrap:wrap}.session-feedback strong{font-size:1.09rem}.session-feedback p{font-size:1rem;margin-top:12px}.session-feedback #live-counters{font-size:.91rem;margin-left:0;max-width:none;text-align:left;flex-basis:100%}.feedback-icon{font-size:1.6rem;width:40px}.session-feedback>div:not(#live-counters){flex:1;min-width:200px}.keyboard-header{padding:26px;flex-wrap:wrap;gap:24px;align-items:flex-start}.keyboard-header h3{font-size:1.2rem}.keyboard-header p{font-size:.91rem;margin-top:12px}.keyboard-header .button-row{gap:16px}.keyboard-scroll{padding:0 20px 20px;scrollbar-width:auto;scrollbar-color:#68877a #e3eadd;overscroll-behavior-x:contain}.virtual-keyboard{height:226px;min-width:0;touch-action:pan-x}.piano-key{font-size:1rem;padding-bottom:14px;border-radius:0 0 10px 10px;color:#344e42;line-height:1.3}.piano-key.white{width:var(--white-key-width,76px);height:210px}.piano-key.black{width:var(--black-key-width,50px);height:132px;font-size:.82rem;color:#fff;padding-bottom:18px}.piano-key.target-R{box-shadow:inset 0 -10px 0 #a54e2a}.piano-key.target-L{box-shadow:inset 0 -10px 0 #187b75}.piano-key.center span{padding:6px 4px;border-radius:6px}.keyboard-footer{font-size:.91rem;padding:20px 26px;gap:18px;line-height:1.7}.corrections{padding:24px;margin-bottom:24px}.corrections summary{font-size:1rem;min-height:60px;cursor:pointer}.corrections p{font-size:1rem;margin:20px 0}.correction-list{font-size:1rem;line-height:1.9}.correction-list>div{padding:12px 0;border-bottom:1px solid var(--border)}.result-card{padding:28px}.result-badges{gap:18px;margin:24px 0}.result-badges>div{min-width:190px;flex:1;padding:22px}.result-badges strong{font-size:1.7rem}.result-badges span{font-size:.91rem}.result-events{max-height:400px}.result-events summary{font-size:1rem;min-height:60px}.result-events ul{font-size:1rem;line-height:1.8}table{font-size:.91rem}th,td{padding:18px 16px;line-height:1.6}th{white-space:normal}.table-scroll>table{min-width:900px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.stat-card{padding:28px}.stat-card strong{font-size:1.75rem;margin-top:16px}.stat-card p{font-size:.91rem;margin-top:14px}.progress-toolbar{padding:26px;gap:24px;margin-bottom:28px}.card-title{font-size:1.25rem;padding:26px 28px 0}.progress-bars{height:250px;min-width:800px;gap:20px;padding:26px 28px 18px}.progress-bar{height:190px;font-size:1rem;gap:12px}.progress-bar strong{font-size:1rem}.progress-bar small{font-size:.91rem}#progress-chart{overflow-x:auto}.small-note{font-size:.91rem;line-height:1.8}.history-card{padding:28px}.history-card h2{font-size:1.3rem}.danger-link{font-size:1rem;min-height:60px;padding:16px 0}.setup-grid{grid-template-columns:1fr;gap:26px}.setup-card{padding:30px}.setup-card h2{font-size:1.45rem;margin-bottom:24px}.setup-card p{font-size:1rem;margin:20px 0;line-height:1.8}.setup-card label{margin-top:24px}.setup-card .small-note{font-size:.91rem}.manual-range{font-size:1rem;margin-top:28px}.manual-range summary{min-height:60px;cursor:pointer}.preferences{padding:28px;margin-top:28px}.preferences h2{font-size:1.45rem;margin-bottom:26px}.faq-list details{padding:22px 4px}.faq-list summary{font-size:1.09rem;line-height:1.6;min-height:60px}.faq-list p{font-size:1rem;line-height:1.85;margin-top:20px}code{font-size:.91rem;line-height:1.8}.source-note{font-size:.91rem;line-height:1.8}.footer{padding:24px 28px;font-size:.82rem;line-height:1.7}.footer a{min-height:56px;display:inline-flex;align-items:center;text-decoration:underline}.notice{font-size:1rem;padding:22px;margin:24px 28px 0}dialog{width:min(900px,calc(100vw - 32px));padding:30px;max-height:90vh;border-radius:22px}dialog h2{font-size:1.5rem;margin:22px 60px 24px 0}dialog p{font-size:1rem}dialog .dialog-close{font-size:1.5rem;min-width:60px;min-height:60px;background:#e6ede1;border-radius:12px}.calibration-values{font-size:1.1rem;padding:24px;white-space:pre-line}.toast{font-size:1rem;line-height:1.6;padding:20px 26px;max-width:calc(100vw - 32px);right:16px;bottom:20px}.empty-state{font-size:1rem;padding:40px 24px}.skip-link{font-size:1rem;padding:18px;top:-200px}.guide p,.guide li{font-size:1rem}.guide pre{font-size:.91rem}.guide h1{font-size:1.9rem}.guide h2{font-size:1.45rem}.guide h3{font-size:1.15rem}
@media(max-width:1000px){.hero{grid-template-columns:1fr}.hero-visual{display:none}.home-bottom{grid-template-columns:1fr}.practice-fields{grid-template-columns:1fr}.practice-fields label:nth-child(-n+2){grid-column:auto}.page-heading h1,.page-heading.compact h1{font-size:1.75rem}.lesson-diagram{padding:20px}.brand span{font-size:1.4rem}}
@media(max-width:650px){.sidebar{padding:20px 16px}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.sidebar nav a{padding:14px 12px;font-size:.95rem}.sidebar nav a>span{display:none}.brand svg{width:52px;height:52px}.topbar{padding:20px 16px;gap:18px}.topbar>div:first-child{width:100%}.topbar .eyebrow{font-size:.82rem}.connection-pill{font-size:.91rem;max-width:100%;width:100%}main{padding:24px 16px 36px}.hero h1{font-size:1.75rem}.hero-meta{gap:20px}.month-grid,.exercise-links,.lesson-menu,.lesson-diagram .diagram-cards{grid-template-columns:1fr}.start-card,.month-card,.month-detail,.lesson-content,.setup-card{padding:24px}.start-card p{min-height:0}.lesson-menu{padding:0 18px 18px}.lesson-picker>summary,.practice-controls>summary,.practice-options>summary{padding:18px}.lesson-diagram{padding:16px}.score-header{padding:24px 20px 12px}.score-header h2{font-size:1.3rem}.score-options{padding:16px 20px}.score-scroll{padding:4px 12px 12px;max-height:440px}.score-reading-note{padding:12px 20px 18px}.transport,.keyboard-header,.keyboard-footer{padding:22px 18px}.session-feedback{padding:20px}.feedback-icon{display:none}.session-feedback>div:not(#live-counters){min-width:0}.practice-secondary{padding:8px 18px 20px}.practice-secondary>label{flex-basis:100%}.practice-secondary select{max-width:100%}.stats-grid{grid-template-columns:1fr}.footer{padding:22px 16px;font-size:.82rem}.notice{margin:20px 16px 0}.result-card,.history-card,.preferences{padding:24px}dialog{padding:24px}.toast{right:16px;bottom:16px}.guide{padding:24px!important}}
@media(prefers-reduced-motion:reduce){html,.score-scroll{scroll-behavior:auto}*{transition:none!important}}
@media print{:root,:root[data-reading-size="large"]{font-size:14px}.lesson-picker,.reading-tools,.practice-options,.score-reading-note{display:none!important}.workspace{margin:0}main{padding:0}.score-scroll{overflow:visible;max-height:none;padding:0}.score-svg{min-width:0!important;width:100%!important}.score-header{padding:0 0 12px}.score-header h2{font-size:24px}.score-header .eyebrow{font-size:14px}.score-system{break-inside:avoid}.corrections p,.correction-list{font-size:14px}.corrections{padding:12px 0}table,th{font-size:13px}body{font-size:14px}.table-scroll>table{min-width:0}}

.print-score{display:none}
@media print{#score-container{display:none}.print-score{display:block}.print-score-sheet{break-inside:avoid;page-break-inside:avoid;margin-bottom:16px}.print-score .score-svg{min-width:0!important;width:100%!important}}

.score-svg .note-label,.score-svg .finger{font-size:22px}:root[data-reading-size="large"] #score-container .note-label,:root[data-reading-size="large"] #score-container .finger{font-size:26px}

.score-scroll{max-height:480px}.score-scroll .score-svg{margin:0 auto}
@media print{.score-scroll{max-height:none}}

/* En-tête harmonisé avec Atelier Glockenspiel : deux lignes sur une largeur centrée. */
.sidebar{max-width:1440px;margin:0 auto;padding:24px 28px;background:var(--paper);border-bottom:2px solid var(--border)}.masthead{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:24px;margin:0 0 22px;min-width:0}.masthead .brand{margin:0;flex:0 0 auto;gap:14px}.masthead .brand svg{width:64px;height:64px}.masthead .brand span{font-size:22px;line-height:1.2;letter-spacing:0}.masthead .brand b{display:block;font-size:28px;margin-top:2px}.masthead .brand small{font-size:18px;line-height:1.4;letter-spacing:0;margin-top:8px;white-space:nowrap}.header-controls{display:flex;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:18px;margin-left:auto;min-width:0}.masthead .reading-tools{display:flex;flex-direction:row;align-items:center;gap:6px;flex:0 0 auto;white-space:nowrap}.masthead .reading-tools>span{font-size:18px}.masthead .reading-tools button{min-width:54px;min-height:60px;padding:10px 8px;font-size:22px}.masthead .reading-tools button:last-child{font-size:26px}.masthead .connection-pill{display:inline-flex;flex:0 1 auto;min-width:0;max-width:300px;padding:12px 14px;font-size:18px;min-height:60px;white-space:nowrap;margin:0;width:auto;gap:8px;line-height:1.4}.masthead #connection-text{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.masthead .status-dot{width:10px;height:10px;flex-shrink:0}.sidebar nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));flex-wrap:nowrap;justify-content:stretch;align-items:stretch;gap:10px;max-width:none;width:100%;margin:0;overflow:visible;padding:0;white-space:nowrap}.sidebar nav a{min-width:0;min-height:64px;font-size:20px;line-height:1.4;font-weight:600;white-space:nowrap;padding:14px 10px;text-align:center;justify-content:center;gap:0;border-radius:14px}.sidebar nav a>span,.sidebar nav small{display:none}:root[data-reading-size="large"] .sidebar nav a{font-size:22px}
@media(max-width:1150px){.sidebar{padding:22px 20px}.masthead{gap:16px}.header-controls{gap:12px}.masthead .connection-pill{padding:12px 10px;max-width:240px}.sidebar nav{display:flex;flex-direction:row;gap:6px;overflow-x:auto}.sidebar nav a{flex:1 0 auto;min-width:max-content;padding:14px 6px}}
@media(max-width:700px){.sidebar{padding:20px 16px}.masthead{flex-wrap:wrap;gap:18px}.masthead .brand{flex-basis:100%}.header-controls{width:100%;margin-left:0;justify-content:space-between;gap:12px}.masthead .connection-pill{max-width:calc(100% - 174px)}.sidebar nav{display:flex;flex-wrap:nowrap;gap:6px}.sidebar nav a{flex:0 0 auto;font-size:20px}:root[data-reading-size="large"] .sidebar nav a{font-size:22px}}
