:root{--bg:#f7f5f0;--surface:#fff;--text:#1c1d21;--muted:#5f6168;--border:#dedad2;--accent:#a8641a;--accent-text:#fff;--danger:#b3261e;--chip:#ebe7de;--level-new:#e3dfd6;--level-started:#dc9373;--level-close:#e3b54f;--level-target:#5f9e70;--note-bg:#fbf1dc;--touch:60px;--radius:14px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#16181d;--surface:#20232a;--text:#f4f1ea;--muted:#a7a9b0;--border:#33363f;--accent:#e0a64b;--accent-text:#16181d;--danger:#f2877e;--chip:#33363f;--level-new:#33363f;--level-started:#b8694b;--level-close:#c49a3a;--level-target:#4d8a5e;--note-bg:#3a3122;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-size:20px}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;line-height:1.45}button{font:inherit;color:inherit;touch-action:manipulation;-webkit-user-select:none;user-select:none;cursor:pointer}h1{margin:0 0 1rem;font-size:1.8rem}h2{margin:0 0 .75rem;font-size:1.2rem}p{margin:0 0 .75rem}.app{min-height:100dvh}.screen{max-width:900px;padding:calc(env(safe-area-inset-top) + 1.25rem) calc(env(safe-area-inset-right) + 1.25rem) calc(env(safe-area-inset-bottom) + var(--touch) + 2rem) calc(env(safe-area-inset-left) + 1.25rem);margin:0 auto}.tab-bar{background:var(--surface);border-top:1px solid var(--border);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;position:fixed;inset:auto 0 0}.tab{min-height:var(--touch);color:var(--muted);background:0 0;border:0;flex:1;font-size:.9rem;font-weight:600}.tab[aria-current=page]{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1.25rem}.empty{padding:2rem 0}.muted{color:var(--muted)}.small{font-size:.8rem}.button{min-height:var(--touch);border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);padding:0 1.5rem;font-weight:600}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.segmented{background:var(--border);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;gap:1px;display:flex;overflow:hidden}.segmented button{min-height:var(--touch);background:var(--surface);border:0;flex:auto;padding:0 1rem;font-weight:600}.segmented button[aria-checked=true]{background:var(--accent);color:var(--accent-text)}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}button:disabled{opacity:.35;cursor:default}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.title-row h1,.title-row h2{margin:0}h2{margin-top:1.5rem}.card h2{margin-top:0}.actions{flex-wrap:wrap;gap:.75rem;margin:1rem 0 1.5rem;display:flex}.back{min-height:var(--touch);color:var(--accent);background:0 0;border:0;margin-bottom:.25rem;padding:0;font-weight:600}.error{color:var(--danger);font-weight:600}.list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.list-item{width:100%;min-height:calc(var(--touch) + 16px);text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.list-main{flex-direction:column;flex:1;min-width:0;display:flex}.list-title{font-size:1.1rem;font-weight:700}.badge{background:var(--chip);color:var(--text);border-radius:999px;flex:none;padding:.3rem .8rem;font-size:.8rem;font-weight:700}.badge.stage-learning{background:var(--accent);color:var(--accent-text)}.section-row{align-items:stretch;gap:.5rem;display:flex}.reorder{gap:.5rem;display:flex}.button.icon{min-width:var(--touch);padding:0;font-size:1.2rem}.form{gap:1.25rem;display:grid}.field{gap:.4rem;display:grid}.field-label{font-weight:700}.field-hint{color:var(--muted);font-size:.8rem}.field-row{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:1rem;display:grid}.input{width:100%;min-height:var(--touch);font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:0 1rem}.input:focus{outline:3px solid var(--accent);outline-offset:0}.switch{min-height:var(--touch);text-align:left;background:0 0;border:0;align-items:center;gap:1rem;padding:0;font-weight:600;display:flex}.switch-track{background:var(--border);border-radius:18px;flex:none;width:64px;height:36px;transition:background .15s;position:relative}.switch-thumb{background:#fff;border-radius:50%;width:30px;height:30px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch[aria-checked=true] .switch-track{background:var(--accent)}.switch[aria-checked=true] .switch-thumb{transform:translate(28px)}.button.danger{color:var(--danger);border-color:var(--danger);background:0 0}.button.danger.armed{background:var(--danger);color:#fff}.metronome{gap:1rem;display:grid}.tempo-row{align-items:center;gap:.75rem;display:flex}.button.step{touch-action:none;flex:none;min-width:72px;min-height:72px;padding:0;font-size:1.2rem}.tempo{text-align:center;font-variant-numeric:tabular-nums;flex:1;font-size:4rem;font-weight:800;line-height:1}.tempo-symbol{color:var(--muted);vertical-align:middle;font-size:.5em;font-weight:600}.slider{width:100%;height:var(--touch);accent-color:var(--accent)}.beats{flex-wrap:wrap;justify-content:center;gap:1rem;min-height:48px;display:flex}.beat-dot{border:3px solid var(--border);border-radius:50%;width:40px;height:40px}.beat-dot.accent,.beat-dot.group{border-color:var(--accent)}.beat-dot.group{border-style:dashed}.beat-dot.on{background:var(--text);border-color:var(--text)}.beat-dot.accent.on{background:var(--accent);border-color:var(--accent)}.bar-count{text-align:center;min-height:1.5em;margin:0}.button.start{background:var(--accent);border-color:var(--accent);min-height:96px;color:var(--accent-text);font-size:1.6rem}.button.start.running{background:var(--surface);border-color:var(--text);color:var(--text)}.controls{gap:1.25rem;display:grid}.spaced{margin-top:.75rem}.status{margin-top:.75rem;font-weight:600}.textarea{min-height:calc(var(--touch) * 1.5);resize:vertical;padding:.75rem 1rem}.piece-map{margin:1rem 0 1.5rem}.map-strip{gap:3px;min-height:56px;display:flex}.map-cell{white-space:nowrap;min-width:28px;color:var(--text);border-radius:8px;flex-basis:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex;overflow:hidden}.map-cell span{text-overflow:ellipsis;padding:0 4px;overflow:hidden}.level-new{background:var(--level-new)}.level-started{background:var(--level-started)}.level-close{background:var(--level-close)}.level-at-target{background:var(--level-target)}.map-cell.level-started,.map-cell.level-at-target{color:#fff}.map-cell.level-close{color:#1c1d21}.stuck{background-image:repeating-linear-gradient(135deg,#0000 0 6px,#00000047 6px 10px)}.map-cell.current{outline:3px solid var(--text);outline-offset:2px}.map-legend{color:var(--muted);flex-wrap:wrap;gap:.4rem 1rem;margin-top:.6rem;font-size:.75rem;display:flex}.swatch{vertical-align:-2px;border-radius:4px;width:14px;height:14px;display:inline-block}.swatch.stuck{background-color:var(--level-started)}.suggestions ul{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.suggestions p{margin-bottom:.5rem}.row-note{margin-top:.25rem;font-size:.85rem;font-style:italic}.warm-up-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .5rem .5rem 1.25rem;display:flex}.preview{margin:0;font-weight:700}.done-today{font-weight:600}.length-buttons{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;display:grid}.length{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:center;gap:.25rem;min-height:140px;font-weight:600;display:flex}.length.last{border-color:var(--accent)}.length-number{font-size:3rem;font-weight:800;line-height:1}.session-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.block-kind{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;font-size:.85rem;font-weight:700}.block-steps{gap:4px;margin-bottom:1.25rem;display:flex}.block-step{background:var(--border);border-radius:4px;flex-basis:0;height:8px}.block-step.done{background:var(--accent)}.block-step.skipped{background:var(--muted);opacity:.4}.block-step.current{background:var(--text)}.timer-row{align-items:center;gap:1.25rem;display:flex}.timer-actions{gap:.75rem;margin-left:auto;display:flex}.clock{font-variant-numeric:tabular-nums;font-size:3.5rem;font-weight:800;line-height:1.1}.clock.over{color:var(--accent)}.block-piece{color:var(--muted);margin:1rem 0 0;font-weight:600}.block-title{margin:.25rem 0 .5rem;font-size:1.6rem}.section-note{font-weight:600}.last-note{background:var(--note-bg);border-left:5px solid var(--accent);border-radius:8px;margin:.75rem 0;padding:.75rem 1rem;font-size:1.1rem}.last-note-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.75rem;font-weight:800;display:block}.today-tempo{font-size:1.1rem}.button.big{min-width:160px;min-height:72px;font-size:1.2rem}.review-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.review-row .segmented{min-width:260px}.rating-buttons{grid-template-columns:repeat(3,1fr);gap:.75rem;margin:1.25rem 0 .5rem;display:grid}.rating{border-radius:var(--radius);border:2px solid #0000;min-height:96px;font-size:1.3rem;font-weight:800}.rating-clean{background:var(--level-target);color:#fff}.rating-nearly{background:var(--level-close);color:#1c1d21}.rating-not-yet{background:var(--surface);border-color:var(--border)}.week-summary{font-weight:600}.history-day ul{margin:0;padding-left:1.25rem}.history-day li{margin-bottom:.25rem}.metronome.compact{gap:.6rem;margin:1rem 0}.metronome.compact .tempo{font-size:3rem}.metronome.compact .button.step{min-width:64px;min-height:64px}.metronome.compact .button.start{min-height:72px;font-size:1.3rem}.metronome.compact .beat-dot{width:28px;height:28px}
