:root{--bg:#fbf5ec;--surface:#fffdf9;--ink:#2a1d14;--muted:#5e4c3e;--line:#e2d4c2;--accent:#7a2e1f;--accent-ink:#fff8ef;--accent-soft:#f3e1d3;--ok:#1f6b3a;--ok-soft:#e1f1e5;--warn:#8a4b00;--warn-soft:#fbecd2;--bad:#9b1c1c;--focus:#1b5fbf;--radius:14px;--tap:48px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1c1612;--surface:#26201b;--ink:#f5ece2;--muted:#cdbcaa;--line:#463a30;--accent:#e39a7c;--accent-ink:#1c1612;--accent-soft:#3d2a22;--ok:#79d39a;--ok-soft:#1f3326;--warn:#f0b660;--warn-soft:#3a2c16;--bad:#ff8f8f;--focus:#8ab8ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);margin:0;font:17px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,sans-serif}#app{max-width:960px;margin:0 auto;padding:0 16px 96px}h1{margin:18px 0 12px;font-size:1.7rem;line-height:1.2}h1 small{color:var(--muted);font-size:1rem;font-weight:500}h2{margin:0 0 8px;font-size:1.2rem}h2 small{color:var(--muted);font-size:.9rem;font-weight:500}p{margin:0 0 10px}a{color:var(--accent)}main:focus,h1:focus{outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}.skip{position:absolute;left:-9999px}.skip:focus{z-index:30;background:var(--surface);padding:8px 12px;top:8px;left:16px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.top{padding:14px 0 6px}.brand{color:var(--accent);font-size:1.05rem;font-weight:700;text-decoration:none}.nav{z-index:20;background:var(--surface);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav a{min-height:56px;color:var(--muted);border-radius:10px;flex-direction:column;flex:1;justify-content:center;align-items:center;font-size:.8rem;text-decoration:none;display:flex}.nav a.active{color:var(--accent);background:var(--accent-soft);font-weight:700}.nav-icon{font-size:1.25rem;line-height:1}.desktop-only{display:none!important}@media (min-width:760px){.nav{background:0 0;border:0;flex-wrap:wrap;justify-content:flex-start;gap:4px;padding:0 0 8px;position:static}.nav a{min-height:var(--tap);flex-direction:row;flex:none;gap:6px;padding:8px 14px;font-size:.95rem}.desktop-only{display:flex!important}.mobile-only{display:none!important}#app{padding-bottom:40px}}.mic-bar{z-index:25;background:var(--accent);color:var(--accent-ink);flex-wrap:wrap;align-items:center;gap:10px;margin:0 -16px;padding:8px 12px;font-weight:600;display:flex;position:sticky;top:0}.mic-bar[hidden]{display:none}.mic-dot{background:#ff5a4f;border-radius:50%;width:12px;height:12px;box-shadow:0 0 0 3px #fff6}.mic-bar span:nth-child(2){flex:1;min-width:12em}.btn-stop{background:var(--accent-ink)!important;color:var(--accent)!important;border-color:var(--accent-ink)!important}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:0 0 14px;padding:16px}.row{flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0;display:flex}.btn{min-height:var(--tap);border:2px solid var(--accent);background:var(--surface);min-width:44px;color:var(--accent);font:inherit;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--accent-soft)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent);filter:brightness(1.1)}.btn-big{min-height:56px;padding:12px 22px;font-size:1.05rem}.btn-small{min-height:44px;padding:6px 12px;font-size:.95rem}.btn-ghost{border-color:#0000}.btn-danger{border-color:var(--bad);color:var(--bad)}.btn-selected{background:var(--accent-soft);outline:2px solid var(--accent)}.back{min-height:44px;padding:10px 0;display:inline-block}.hint{color:var(--muted);font-size:.93rem}.warn{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:10px 12px}.eyebrow{color:var(--muted);margin:0 0 4px;font-size:.9rem}.goal{font-weight:600}.badge{vertical-align:middle;border-radius:999px;padding:2px 8px;font-size:.8rem;font-weight:700;display:inline-block}.badge-self{background:var(--warn-soft);color:var(--warn)}.badge-measured{background:var(--ok-soft);color:var(--ok)}.badge-exp{color:#4b2b8a;background:#e8defa}.badge-pending{background:var(--accent-soft);color:var(--accent)}.stages{counter-reset:st;gap:4px;margin:0 0 14px;padding:0;list-style:none;display:flex}.stages li{text-align:center;border-bottom:4px solid var(--line);color:var(--muted);flex:1;padding:6px 2px;font-size:.85rem}.stages li.past{border-color:var(--ok);color:var(--ok)}.stages li.current{border-color:var(--accent);color:var(--ink);font-weight:700}.stat-list{margin:0 0 8px;padding-left:1.2em}.mic-panel{background:var(--surface);border:1px dashed var(--line);border-radius:var(--radius);margin:0 0 14px;padding:12px 16px}.mic-status{margin:0}.meter{background:var(--line);border-radius:6px;height:12px;margin:8px 0 4px;position:relative;overflow:hidden}.meter[hidden],.level-hint[hidden]{display:none}.meter-fill{background:var(--ok);width:0;height:100%}.meter-gate{background:var(--ink);opacity:.6;width:2px;position:absolute;top:0;bottom:0}.mic-panel.clipping .meter-fill{background:var(--bad)}.level-hint{color:var(--muted);margin:0;font-size:.9rem}.string-picker{grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:12px;display:grid}.string-btn{border:2px solid var(--line);background:var(--surface);min-height:64px;color:var(--ink);font:inherit;cursor:pointer;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:4px;display:flex;position:relative}.string-btn .sn{font-size:1.3rem;font-weight:800}.string-btn .note{color:var(--muted);font-size:.78rem}.string-btn.active{border-color:var(--accent);background:var(--accent-soft)}.string-btn.ok .ok-mark{color:var(--ok);font-weight:800;position:absolute;top:2px;right:6px}.tuner-target{font-size:1.15rem;font-weight:700}.tuner-reading{min-height:1.5em;font-size:1.05rem}.tuner-advice{min-height:3em;font-size:1.1rem;font-weight:600}.gauge{background:linear-gradient(90deg, var(--warn-soft), var(--surface) 40%, var(--surface) 60%, var(--warn-soft));border:1px solid var(--line);border-radius:10px;height:56px;margin:12px 0 22px;position:relative}.gauge-zone{background:var(--ok-soft);border-left:2px solid var(--ok);border-right:2px solid var(--ok);width:20%;position:absolute;top:0;bottom:0;left:40%}.needle{background:var(--ink);border-radius:2px;width:4px;margin-left:-2px;transition:left .12s linear;position:absolute;top:-4px;bottom:-4px}.needle[hidden]{display:none}.gauge.in .needle{background:var(--ok);width:6px;margin-left:-3px}.gauge span{color:var(--muted);font-size:.75rem;position:absolute;bottom:-22px}.gauge-l{left:0}.gauge-c{left:50%;transform:translate(-50%)}.gauge-r{right:0}.tuned-list{color:var(--ok);font-weight:600}.chord-diagram{width:100%;height:auto;display:block}.chord-diagram .cd-fret{stroke:var(--muted);stroke-width:2px}.chord-diagram .cd-string{stroke:var(--ink)}.chord-diagram .cd-nut{fill:var(--ink)}.chord-diagram .cd-dot{fill:var(--accent)}.chord-diagram .cd-finger{fill:var(--accent-ink);text-anchor:middle;font-size:18px;font-weight:700}.chord-diagram .cd-open{fill:none;stroke:var(--ink);stroke-width:2.5px}.chord-diagram .cd-mute{fill:var(--muted);text-anchor:middle;font-size:26px;font-weight:700}.chord-diagram .cd-label{fill:var(--ink);text-anchor:middle;font-size:15px;font-weight:700}.chord-diagram .cd-label-note{fill:var(--muted);text-anchor:middle;font-size:13px}.chord-diagram .cd-startfret{fill:var(--muted);font-size:16px}.chord-diagram .cd-highlight{fill:var(--warn-soft);stroke:var(--warn);stroke-width:2px}.chord-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.chord-card{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;align-items:center;padding:10px;text-decoration:none;display:flex}.chord-card:hover{border-color:var(--accent)}.chord-card .chord-diagram{max-width:120px}.chord-name{font-size:1.4rem;font-weight:800}.chord-sub{color:var(--muted);font-size:.85rem}.chord-detail{gap:16px;display:grid}.diagram-big{width:100%;max-width:300px;margin:0 auto}@media (min-width:700px){.chord-detail{grid-template-columns:300px 1fr;align-items:start}}.check-grid{grid-template-columns:40% 1fr;align-items:start;gap:12px;display:grid}.diagram-mid{width:100%;max-width:240px}@media (min-width:700px){.check-grid{grid-template-columns:240px 1fr}}@media (max-width:420px){.check .step-main{font-size:1.25rem}.check .result{font-size:1rem}}.step-count{color:var(--muted);margin:0}.step-main{margin:0 0 6px;font-size:1.5rem;font-weight:800}.result{background:var(--bg);border-radius:10px;min-height:3em;padding:10px 12px;font-size:1.1rem;font-weight:600}.result.correct-pitch{background:var(--ok-soft);color:var(--ok)}.result.wrong-pitch{background:var(--warn-soft);color:var(--warn)}.result.uncertain{background:var(--bg)}table.summary{border-collapse:collapse;width:100%;margin:10px 0}.summary th,.summary td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px}.table-wrap{overflow-x:auto}.lesson-list{padding-left:1.3em}.lesson-list li{margin:6px 0}.lesson-list a{min-height:32px;padding:4px 0;display:inline-block}.done-mark{color:var(--ok);font-weight:700}.week.before-start{opacity:.75}.steps{margin:0;padding:0;list-style:none}.step.done{border-color:var(--ok)}.step-status.ok{color:var(--ok);font-weight:600}.song-fallback{width:100%}.changes-stage{grid-template-columns:2fr 1fr;align-items:end;gap:12px;display:grid}.changes-current .chord-diagram{max-width:240px}.changes-next{opacity:.75}.changes-next .chord-diagram{max-width:120px}.changes-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.85rem}.changes-symbol{margin:0;font-size:2.6rem;font-weight:800;line-height:1.1}.changes-symbol.small{font-size:1.6rem}.changes-current.last-beat .changes-symbol{color:var(--warn)}.beat-row{align-items:center;gap:16px;margin:12px 0;display:flex}.beat-dots{gap:10px;display:flex}.beat-dots .dot{border:2px solid var(--muted);border-radius:50%;width:22px;height:22px}.beat-dots .dot.first{border-width:3px}.beat-dots .dot.on{background:var(--accent);border-color:var(--accent)}.beat-count{min-width:2ch;margin:0;font-size:2rem;font-weight:800}.pattern{font-weight:600}.controls{gap:10px;margin-top:8px;display:grid}.controls input[type=range]{width:100%;min-height:44px}.controls select{min-height:44px;font:inherit;padding:4px 8px}.check-label{align-items:center;gap:8px;min-height:44px;display:flex}.check-label input{width:22px;height:22px}fieldset{border:1px solid var(--line);border-radius:10px;margin:0 0 12px;padding:8px 12px 10px}legend{padding:0 4px;font-weight:700}.radio{align-items:center;gap:8px;min-height:44px;display:flex}.radio input{width:22px;height:22px}select,input[type=date]{font:inherit;border:1px solid var(--line);background:var(--surface);min-height:44px;color:var(--ink);border-radius:8px;padding:4px 8px}.diag{grid-template-columns:max-content 1fr;gap:4px 12px;font-size:.9rem;display:grid}.diag dd{overflow-wrap:anywhere;margin:0}.more-list{gap:10px;display:grid}.song-list{padding:0;list-style:none}.welcome h1{font-size:2rem}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
