:root {
  --ink:#171713; --ink-2:#2b2a25; --paper:#f3f0e8; --cream:#fbf8ef; --gold:#d9ae56;
  --gold-2:#f2c66d; --sage:#9fc9bd; --rust:#b96f53; --muted:#77766e; --line:rgba(23,23,19,.12);
  --radius:26px; --shadow:0 22px 70px rgba(31,28,18,.13);
}
* { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html { background:var(--ink); }
body { margin:0; min-width:320px; min-height:100vh; color:var(--ink); background:var(--paper); font-family:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overscroll-behavior:none; }
button,input { font:inherit; }
button { color:inherit; }
.grain { position:fixed; inset:0; pointer-events:none; opacity:.035; z-index:20; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E"); }
.app-shell { min-height:100vh; padding:0 clamp(26px,4vw,68px) 120px; max-width:1500px; margin:auto; }
.topbar { height:96px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:24px; border-bottom:1px solid var(--line); }
.brand { border:0; background:transparent; display:flex; align-items:center; gap:13px; padding:0; text-align:left; cursor:pointer; width:max-content; }
.brand-clef { width:44px; height:58px; border:1px solid var(--gold); color:var(--gold); display:grid; place-items:center; font:42px Georgia,serif; line-height:1; }
.brand strong,.brand small { display:block; }
.brand strong { font:700 17px Georgia,serif; letter-spacing:.14em; }
.brand small { color:var(--muted); margin-top:3px; font-size:11px; letter-spacing:.08em; }
.session-stats { display:flex; gap:10px; }
.session-stats span { display:grid; grid-template-columns:auto auto; grid-template-rows:auto auto; column-gap:6px; align-items:center; min-width:84px; padding:9px 13px; border:1px solid var(--line); border-radius:15px; background:rgba(255,255,255,.3); }
.session-stats i { grid-row:1/3; font-style:normal; }
.session-stats b { font-size:14px; }
.session-stats small { font-size:9px; color:var(--muted); text-transform:uppercase; letter-spacing:.1em; }
.sound-button { justify-self:end; display:flex; align-items:center; gap:8px; border:1px solid var(--line); border-radius:999px; background:transparent; padding:10px 15px; cursor:pointer; }
.sound-button span { font-weight:900; }
.sound-button small { font-weight:750; }
.sound-button.ready { background:#dfeee8; border-color:#8ebbae; }
#view { outline:none; }
.hero { min-height:455px; display:grid; grid-template-columns:1.08fr .92fr; margin-top:34px; overflow:hidden; color:#fff; border-radius:36px; background:var(--ink); box-shadow:var(--shadow); }
.hero-copy { padding:clamp(42px,6vw,82px); z-index:2; }
.eyebrow { margin:0 0 14px; color:var(--gold-2); font-size:11px; letter-spacing:.18em; text-transform:uppercase; font-weight:900; }
.eyebrow.dark { color:#8a682c; }
.hero h1,.page-head h1,.lesson-content h1 { font:500 clamp(48px,6vw,86px)/.96 Georgia,"Times New Roman",serif; letter-spacing:-.045em; margin:0 0 22px; }
.hero h1 em { color:var(--gold-2); font-weight:500; }
.hero-copy > p:not(.eyebrow) { max-width:610px; color:rgba(255,255,255,.7); font-size:18px; line-height:1.65; }
.hero-actions { display:flex; gap:12px; margin-top:30px; }
.btn { min-height:52px; border:0; border-radius:15px; padding:0 20px; font-weight:850; cursor:pointer; transition:.18s; }
.btn:hover:not(:disabled) { transform:translateY(-2px); }
.btn:disabled { opacity:.45; }
.btn.primary { background:var(--gold-2); box-shadow:0 7px 0 #8e6a2c; }
.btn.ghost { color:white; border:1px solid rgba(255,255,255,.22); background:rgba(255,255,255,.06); }
.btn.dark { color:white; background:var(--ink); }
.btn.dark.active { color:var(--ink); background:var(--gold-2); }
.btn.mini { min-height:44px; padding:0 17px; background:var(--ink); color:white; }
.btn.ghost-dark { background:transparent; border:1px solid var(--line); }
.hero-score { position:relative; overflow:hidden; background:radial-gradient(circle at 70% 40%,#e8c77d 0 8%,transparent 8.2%), linear-gradient(135deg,#7b927f,#385349); }
.staff-lines { position:absolute; width:130%; height:160px; left:-10%; top:34%; background:repeating-linear-gradient(to bottom,transparent 0 27px,rgba(255,255,255,.22) 28px 29px); transform:rotate(-8deg); }
.hero-clef { position:absolute; left:30%; top:16%; color:var(--gold-2); font:220px Georgia,serif; transform:rotate(-9deg); text-shadow:0 18px 35px rgba(0,0,0,.2); }
.gold-orbit { position:absolute; width:330px; height:330px; border:1px solid rgba(242,198,109,.45); border-radius:50%; right:-80px; bottom:-100px; box-shadow:0 0 0 38px rgba(242,198,109,.06),0 0 0 78px rgba(242,198,109,.04); }
.floating-note { position:absolute; font:50px Georgia,serif; color:rgba(255,255,255,.65); }
.n1 { right:18%; top:18%; }.n2 { right:12%; bottom:24%; }.n3 { left:14%; bottom:18%; }
.today-grid { display:grid; grid-template-columns:1.35fr .65fr; gap:20px; margin-top:20px; }
.lesson-card,.tempo-card { position:relative; min-height:190px; border:1px solid var(--line); border-radius:var(--radius); background:var(--cream); padding:26px; overflow:hidden; }
.lesson-card.feature { display:grid; grid-template-columns:86px 1fr auto; grid-template-rows:1fr auto; gap:12px 22px; }
.card-index { grid-row:1/3; align-self:center; font:500 62px Georgia,serif; color:var(--gold); }
.lesson-card h2,.tempo-card h2,.section-heading h2 { margin:0; font:500 30px Georgia,serif; }
.lesson-card p,.tempo-card p { margin:7px 0 0; color:var(--muted); }
.lesson-meta { display:flex; gap:20px; color:var(--muted); font-size:12px; }
.round-arrow { position:absolute; right:24px; bottom:24px; width:54px; height:54px; border:0; border-radius:50%; color:white; background:var(--ink); font-size:22px; cursor:pointer; }
.tempo-card { display:flex; align-items:center; justify-content:space-between; gap:20px; background:#dfe9e1; }
.tempo-card h2 { font-size:50px; }
.tempo-card h2 small { font:800 11px Inter,sans-serif; letter-spacing:.12em; }
.pulse-button { min-width:100px; min-height:100px; border:1px solid rgba(23,23,19,.15); border-radius:50%; background:rgba(255,255,255,.45); cursor:pointer; font-weight:850; }
.pulse-button span { display:block; color:var(--rust); font-size:25px; }
.pulse-button.active { background:var(--gold-2); animation:pulse 1s infinite; }
.section-heading { margin:44px 0 18px; display:flex; justify-content:space-between; align-items:end; gap:20px; }
.section-heading button { border:0; background:transparent; font-weight:850; cursor:pointer; }
.module-strip { display:grid; grid-template-columns:repeat(4,1fr); gap:15px; }
.module-card { min-height:225px; padding:20px; text-align:left; border:1px solid var(--line); border-radius:22px; background:var(--cream); cursor:pointer; position:relative; transition:.18s; }
.module-card:hover:not(:disabled) { transform:translateY(-4px); box-shadow:var(--shadow); }
.module-card.locked { opacity:.48; filter:grayscale(.4); }
.module-icon { width:56px; height:56px; display:grid; place-items:center; border-radius:17px; background:var(--accent); font:700 25px Georgia,serif; margin-bottom:28px; }
.module-card small { color:var(--muted); letter-spacing:.12em; font-size:9px; }
.module-card h3 { margin:7px 0; font:500 22px Georgia,serif; }
.module-card p { margin:0; color:var(--muted); line-height:1.45; font-size:13px; }
.module-card b { position:absolute; right:18px; top:18px; color:var(--muted); font-size:10px; }
.page-head { padding:55px 0 30px; max-width:970px; }
.page-head h1 { color:var(--ink); font-size:clamp(48px,6vw,78px); }
.page-head > p:not(.eyebrow),.page-head div > p:not(.eyebrow) { color:var(--muted); font-size:17px; line-height:1.6; max-width:700px; }
.page-head.split,.piano-head { max-width:none; display:flex; justify-content:space-between; align-items:end; gap:30px; }
.accuracy-ring { width:145px; height:145px; flex:0 0 auto; border:12px solid #dfe9e1; border-top-color:var(--gold); border-radius:50%; display:grid; place-content:center; text-align:center; }
.accuracy-ring strong { font:500 35px Georgia,serif; }.accuracy-ring span { font-size:10px; color:var(--muted); }
.path-list { display:grid; max-width:1000px; margin:auto; }
.path-row { display:grid; grid-template-columns:54px 30px 70px 1fr auto; gap:15px; align-items:center; min-height:125px; }
.path-number { color:var(--muted); font:500 17px Georgia,serif; }
.path-line { width:1px; height:100%; justify-self:center; background:var(--line); }
.path-icon { width:60px; height:60px; display:grid; place-items:center; border-radius:20px; background:var(--accent); font:700 24px Georgia,serif; }
.path-row small { color:var(--muted); }.path-row h2 { margin:4px 0; font:500 26px Georgia,serif; }.path-row p { color:var(--muted); margin:0; }
.path-row.current { background:rgba(255,255,255,.45); border-radius:22px; padding:0 20px; box-shadow:0 12px 35px rgba(31,28,18,.06); }
.path-row.locked { opacity:.45; }
.exercise-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.exercise-card { min-height:210px; border:1px solid var(--line); border-radius:24px; background:var(--cream); padding:23px; text-align:left; cursor:pointer; display:flex; flex-direction:column; justify-content:space-between; }
.exercise-card > span { font:500 35px Georgia,serif; color:var(--gold); }.exercise-card small { color:var(--muted); }.exercise-card h2 { margin:7px 0; font:500 26px Georgia,serif; }.exercise-card p { color:var(--muted); line-height:1.45; }.exercise-card > b { text-align:right; }
.practice-stage { margin-top:28px; background:var(--cream); border:1px solid var(--line); border-radius:30px; padding:28px; scroll-margin-top:20px; }
.empty-stage { min-height:270px; display:grid; place-content:center; text-align:center; color:var(--muted); }.empty-stage > span { font-size:55px; }.empty-stage h2 { margin:10px 0 0; color:var(--ink); font:500 28px Georgia,serif; }
.practice-top { display:flex; justify-content:space-between; align-items:center; }.practice-top h2 { margin:0; font:500 32px Georgia,serif; }
.practice-score strong { font:500 42px Georgia,serif; }.practice-score span { color:var(--muted); }
.note-run { display:flex; flex-wrap:wrap; justify-content:center; gap:9px; margin:22px 0; }.note-run span { min-width:45px; padding:10px 8px; text-align:center; border-radius:12px; background:var(--paper); font-weight:850; }.note-run span.current { outline:3px solid var(--gold); }.note-run span.correct { color:white; background:#4e8d78; }.note-run span.wrong { background:#e6a397; }
.practice-prompt { text-align:center; min-height:25px; }.practice-actions { display:flex; justify-content:center; gap:10px; margin-top:20px; }
.studio-panel { padding:25px 25px 20px; border-radius:30px; color:white; background:linear-gradient(180deg,#32312b,#171713); box-shadow:var(--shadow); }
.piano-tools { display:flex; align-items:center; gap:12px; }.piano-tools label { display:flex; align-items:center; gap:9px; font-size:12px; font-weight:800; }
.switch { appearance:none; width:49px; height:28px; border-radius:999px; background:#c4c3bb; position:relative; }.switch:after { content:""; position:absolute; width:22px; height:22px; top:3px; left:3px; border-radius:50%; background:white; transition:.18s; }.switch:checked { background:#4e8d78; }.switch:checked:after { left:24px; }
.metronome-panel { min-height:74px; display:flex; justify-content:center; align-items:center; gap:18px; margin-bottom:18px; }.metronome-panel button { width:40px; height:40px; border:1px solid rgba(255,255,255,.15); border-radius:50%; color:white; background:transparent; font-size:24px; }.metronome-panel div { text-align:center; }.metronome-panel small,.metronome-panel span { color:rgba(255,255,255,.5); font-size:9px; letter-spacing:.15em; }.metronome-panel strong { margin:0 5px; font:500 36px Georgia,serif; }
.beat-lights { display:flex; gap:7px; margin-left:18px; }.beat-lights i { width:9px; height:9px; border-radius:50%; background:#68675f; }.beat-lights i.active { background:var(--gold-2); box-shadow:0 0 0 7px rgba(242,198,109,.1); }
.piano { position:relative; width:100%; height:clamp(230px,34vw,390px); user-select:none; touch-action:none; }
.white-keys { display:grid; grid-template-columns:repeat(15,1fr); height:100%; gap:2px; }
.piano-key { border:0; cursor:pointer; touch-action:none; user-select:none; transition:background .06s,transform .06s; }
.piano-key.white { position:relative; border-radius:0 0 9px 9px; background:linear-gradient(90deg,#e4e1d8,#fff 14%,#f9f6ed 80%,#d8d4c9); box-shadow:inset 0 -8px 10px #0001; }
.piano-key.white span { position:absolute; bottom:25px; left:0; right:0; color:#6b6960; font-size:11px; font-weight:800; }.piano-key.white small { position:absolute; bottom:8px; left:0; right:0; color:#9c7a38; font-size:8px; }
.black-keys { position:absolute; inset:0; pointer-events:none; }.piano-key.black { pointer-events:auto; position:absolute; left:calc((var(--left) / 15) * 100% - 2.15%); top:0; width:4.3%; height:62%; border-radius:0 0 7px 7px; color:white; background:linear-gradient(90deg,#080808,#35342f 65%,#050505); box-shadow:0 9px 8px #0007; z-index:2; }.piano-key.black span { position:absolute; bottom:12px; left:0; right:0; font-size:8px; color:#c9c6b9; }
.piano-key.pressed { background:var(--gold-2)!important; transform:translateY(5px); }.piano-key.expected { animation:keyGlow 1.15s infinite; }
.piano-key.mic-detected { box-shadow:inset 0 0 0 4px #4e8d78,0 0 24px rgba(79,142,120,.6); }
.keyboard-hint { display:grid; grid-template-columns:1fr auto 1fr; gap:20px; color:rgba(255,255,255,.45); margin-top:14px; font-size:10px; text-transform:uppercase; letter-spacing:.14em; }.keyboard-hint span:last-child { text-align:right; }.keyboard-hint b { color:var(--gold-2); }
.piano.compact { height:clamp(170px,26vw,280px); }.practice-stage .piano,.lesson .piano { background:#272620; padding:9px; border-radius:16px; }
.input-chooser { display:flex; width:max-content; max-width:100%; margin:16px auto 12px; padding:5px; gap:4px; border-radius:16px; background:#e4e0d6; }
.input-chooser button { min-height:44px; border:0; border-radius:12px; padding:0 15px; color:var(--muted); background:transparent; font-size:12px; font-weight:850; cursor:pointer; }
.input-chooser button span { margin-right:6px; }
.input-chooser button.active { color:white; background:var(--ink); box-shadow:0 5px 14px #0002; }
.mic-readout { max-width:610px; min-height:45px; margin:0 auto 17px; padding:8px 11px; display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; border:1px solid var(--line); border-radius:14px; color:var(--muted); background:rgba(255,255,255,.48); font-size:11px; text-align:left; }
.mic-readout i { width:10px; height:10px; border-radius:50%; background:#aaa89f; }.mic-readout b { min-width:80px; color:var(--ink); font:500 18px Georgia,serif; text-align:right; }
.mic-readout.listening i { background:#4e8d78; animation:micPulse 1.1s infinite; }.mic-readout.has-note { border-color:#4e8d78; background:#e0f0ea; }
.listen-panel { margin-top:22px; padding:20px; display:grid; grid-template-columns:minmax(220px,.7fr) minmax(390px,1.3fr); gap:20px; align-items:center; border:1px solid rgba(255,255,255,.13); border-radius:20px; background:rgba(255,255,255,.06); }
.listen-panel small { color:var(--gold-2); letter-spacing:.15em; }.listen-panel h2 { margin:5px 0; font:500 25px Georgia,serif; }.listen-panel p { margin:0; color:rgba(255,255,255,.55); font-size:12px; }.listen-panel .input-chooser { margin-top:0; }.listen-panel .mic-readout { color:rgba(255,255,255,.6); background:rgba(255,255,255,.07); border-color:rgba(255,255,255,.12); }.listen-panel .mic-readout b { color:var(--gold-2); }
.progress-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:15px; }.big-stat { min-height:190px; border:1px solid var(--line); border-radius:24px; background:var(--cream); padding:24px; }.big-stat > span { color:var(--gold); font-size:30px; }.big-stat strong { display:block; margin:22px 0 3px; font:500 46px Georgia,serif; }.big-stat p { color:var(--muted); margin:0; }
.progress-detail { margin-top:20px; padding:30px; border-radius:26px; background:#dfe9e1; }.progress-detail h2 { margin:0; font:500 32px Georgia,serif; }.long-progress { height:12px; margin:20px 0; border-radius:999px; overflow:hidden; background:rgba(255,255,255,.65); }.long-progress i { display:block; height:100%; border-radius:inherit; background:var(--ink); }
.dock { position:fixed; z-index:15; left:50%; bottom:max(18px,env(safe-area-inset-bottom)); transform:translateX(-50%); display:flex; gap:4px; padding:7px; border:1px solid rgba(255,255,255,.12); border-radius:22px; background:rgba(23,23,19,.94); box-shadow:0 18px 55px #0004; backdrop-filter:blur(18px); }
.dock button { min-width:94px; height:58px; border:0; border-radius:16px; color:rgba(255,255,255,.55); background:transparent; font-size:10px; font-weight:800; cursor:pointer; }.dock button span { display:block; font-size:20px; margin-bottom:2px; }.dock button.active { color:var(--ink); background:var(--gold-2); }
.lesson-dialog { width:min(1020px,calc(100vw - 30px)); max-width:none; max-height:calc(100vh - 30px); padding:0; border:0; border-radius:30px; background:var(--paper); box-shadow:0 40px 120px #0008; }.lesson-dialog::backdrop { background:rgba(10,10,8,.76); backdrop-filter:blur(7px); }
.lesson { min-height:min(760px,calc(100vh - 30px)); display:flex; flex-direction:column; }.lesson header { display:grid; grid-template-columns:44px 1fr auto; align-items:center; gap:15px; padding:18px 22px; border-bottom:1px solid var(--line); }.lesson header button { width:40px; height:40px; border:0; border-radius:50%; background:#e3dfd4; font-size:26px; }.lesson-progress { height:8px; overflow:hidden; border-radius:999px; background:#dedbd2; }.lesson-progress i { display:block; height:100%; background:var(--gold); }.lesson header > span { color:var(--muted); font-size:12px; }
.lesson-content { flex:1; display:flex; flex-direction:column; justify-content:center; padding:34px clamp(30px,8vw,90px); text-align:center; }.lesson-content h1 { font-size:clamp(42px,6vw,70px); margin-bottom:14px; }.lesson-copy { max-width:680px; margin:0 auto 26px; color:var(--muted); font-size:18px; line-height:1.55; }
.two-black-demo { position:relative; width:350px; height:180px; margin:15px auto; border-radius:16px; background:linear-gradient(90deg,#fff 0 32%,#eee 32% 34%,#fff 34% 65%,#eee 65% 67%,#fff 67%); box-shadow:var(--shadow); }.two-black-demo i { position:absolute; width:58px; height:115px; top:0; border-radius:0 0 8px 8px; background:var(--ink); }.two-black-demo i:first-child { left:29%; }.two-black-demo i:nth-child(2) { left:57%; }.two-black-demo b { position:absolute; left:13%; bottom:20px; color:#99722d; }
.posture-visual { display:grid; grid-template-columns:auto 1fr; gap:12px 16px; max-width:440px; margin:15px auto; text-align:left; align-items:center; }.posture-visual span { width:42px; height:42px; display:grid; place-items:center; border-radius:50%; background:var(--gold-2); }.posture-visual b { font:500 21px Georgia,serif; }
.finger-map { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; width:min(650px,100%); margin:22px auto; }.finger-map div { min-height:120px; display:grid; place-content:center; gap:8px; border:1px solid var(--line); border-radius:50% 50% 19px 19px; background:var(--cream); }.finger-map span { width:38px; height:38px; display:grid; place-items:center; margin:auto; border-radius:50%; background:var(--gold-2); font-weight:900; }.finger-map b { font:500 19px Georgia,serif; }.compact-map div { min-height:95px; }
.lesson-note-run { display:flex; justify-content:center; gap:9px; margin:10px 0 15px; }.lesson-note-run span { position:relative; min-width:58px; padding:11px 10px 20px; border-radius:14px; background:#e4e0d6; font-weight:850; }.lesson-note-run span small { position:absolute; right:6px; bottom:4px; color:var(--muted); font-size:8px; }.lesson-note-run span.current { outline:3px solid var(--gold); }.lesson-note-run span.correct { color:white; background:#4e8d78; }
.find-status { width:max-content; max-width:100%; margin:0 auto 18px; padding:10px 16px; border-radius:999px; background:#e4e0d6; font-weight:750; }.find-status.success { color:white; background:#4e8d78; }
.lesson-award { width:150px; height:150px; margin:20px auto; display:grid; place-content:center; border-radius:50%; background:var(--gold-2); font:700 65px Georgia,serif; box-shadow:0 0 0 18px rgba(217,174,86,.18); }.lesson-award small { font:800 10px Inter,sans-serif; letter-spacing:.12em; }
.lesson footer { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px clamp(30px,8vw,90px); border-top:1px solid var(--line); background:rgba(255,255,255,.45); }.lesson footer > span { color:var(--muted); font-size:12px; }
.toast { position:fixed; z-index:60; left:50%; top:18px; transform:translate(-50%,-120px); padding:12px 18px; color:white; background:var(--ink); border-radius:999px; box-shadow:var(--shadow); transition:.25s; }.toast.show { transform:translate(-50%,0); }
@keyframes pulse { 50% { transform:scale(1.05); } }
@keyframes keyGlow { 50% { background:#efd58e; box-shadow:inset 0 0 0 4px var(--gold),0 0 25px rgba(242,198,109,.7); } }
@keyframes micPulse { 50% { box-shadow:0 0 0 7px rgba(79,142,120,.12); } }
@media (max-width:1000px) {
  .topbar { grid-template-columns:1fr auto; }.session-stats { display:none; }.hero { grid-template-columns:1.15fr .85fr; }.hero-copy { padding:44px; }.today-grid { grid-template-columns:1fr 1fr; }.module-strip { grid-template-columns:repeat(2,1fr); }.progress-grid { grid-template-columns:repeat(2,1fr); }
}
@media (orientation:portrait) and (max-width:900px) {
  .hero { grid-template-columns:1fr; }.hero-score { min-height:270px; }.hero-clef { font-size:170px; }.today-grid { grid-template-columns:1fr; }.exercise-grid { grid-template-columns:1fr; }.piano { height:280px; }.dock button { min-width:88px; }.listen-panel { grid-template-columns:1fr; }
}
@media (max-width:650px) {
  .app-shell { padding:0 14px 105px; }.topbar { height:78px; }.brand small,.sound-button small { display:none; }.brand-clef { width:38px; height:48px; }.hero { margin-top:18px; border-radius:26px; }.hero-copy { padding:32px 25px; }.hero h1 { font-size:49px; }.hero-score { min-height:220px; }.today-grid { grid-template-columns:1fr; }.lesson-card.feature { grid-template-columns:58px 1fr; }.card-index { font-size:42px; }.lesson-meta { grid-column:1/3; }.tempo-card { min-height:170px; }.module-strip { grid-template-columns:1fr 1fr; }.module-card { min-height:205px; padding:17px; }.module-icon { margin-bottom:20px; }.page-head.split,.piano-head { display:block; }.accuracy-ring { margin-top:20px; }.path-row { grid-template-columns:38px 48px 1fr; min-height:145px; }.path-line { display:none; }.path-row .path-icon { grid-column:2; }.path-row > div { grid-column:3; }.path-row .btn { grid-column:3; width:max-content; }.progress-grid { grid-template-columns:1fr 1fr; }.big-stat { min-height:155px; }.dock { width:calc(100% - 20px); bottom:max(8px,env(safe-area-inset-bottom)); justify-content:space-around; }.dock button { min-width:0; flex:1; height:56px; }.studio-panel { padding:12px 8px; }.piano { height:230px; }.piano-key.white span,.piano-key.white small,.piano-key.black span { display:none; }.lesson-dialog { width:calc(100vw - 12px); max-height:calc(100vh - 12px); }.lesson { min-height:calc(100vh - 12px); }.lesson-content { padding:25px 16px; }.lesson footer { padding:14px 18px; }.lesson footer > span { display:none; }.lesson footer .btn { width:100%; }.input-chooser { width:100%; }.input-chooser button { flex:1; padding:0 8px; }.mic-readout { grid-template-columns:auto 1fr; }.mic-readout b { grid-column:2; text-align:left; }.listen-panel { grid-template-columns:1fr; padding:16px 10px; }.finger-map { gap:5px; }.finger-map div { min-height:88px; }.lesson-note-run span { min-width:48px; }
}
