:root{font-family:system-ui,sans-serif}body{margin:0}.app{flex-direction:column;height:100dvh;display:flex}.top-nav{border-bottom:1px solid #ddd;align-items:center;padding:12px 16px;display:none}.top-nav-buttons{gap:8px;display:none}.top-nav-btn{cursor:pointer;color:#666;background:0 0;border:1px solid #ddd;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:14px;display:flex}.top-nav-btn-active{color:#111;background:#fff;border-color:#ccc}.top-nav-icon{width:20px;height:20px}.app-body{flex:1;min-height:0;display:flex}.content{flex:1;min-height:0;overflow:hidden}.practice-view{flex-direction:column;height:100%;display:flex;position:relative}.stats-card{border:1px solid #ddd;border-radius:12px;align-items:center;margin:16px 16px 12px;padding:16px 24px;display:flex}.stats-col{text-align:center;flex:1}.stats-value{font-variant-numeric:tabular-nums;color:#111;font-size:32px;font-weight:700}.stats-label{color:#888;margin-top:4px;font-size:12px}.pitch-graph-container{flex:1;min-height:0;position:relative}.pitch-graph-container canvas{width:100%;height:100%;display:block}.graph-overlay{cursor:pointer;color:#fff;background:#0006;border:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.graph-overlay-icon{width:120px;height:120px}.transport{box-sizing:border-box;border-top:1px solid #eee;flex-direction:column;gap:10px;padding:12px 16px;display:flex}.transport-idle{pointer-events:none;z-index:2;justify-content:center;display:flex;position:absolute;bottom:20px;left:0;right:0}.transport-fab{pointer-events:auto;box-shadow:0 4px 16px #0000002e}.transport-waveform{align-items:center;gap:8px;height:44px;display:flex;position:relative}.transport-close-btn{cursor:pointer;color:#888;background:0 0;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex}.transport-close-btn:active{background:#f2f2f2}.transport-waveform-btn{cursor:pointer;background:0 0;border:none;flex:1;min-width:0;height:100%;padding:0}.transport-waveform-btn canvas,.transport-live-waveform{width:100%;height:100%;display:block}.transport-row{flex-direction:column;align-items:center;gap:8px;display:flex}.transport-controls{align-items:center;gap:12px;width:100%;display:flex}.transport-side{flex:1 1 0}.transport-center{flex:none}.transport-actions{flex:1 1 0;justify-content:flex-end;display:flex}.transport-time{color:#888;font-variant-numeric:tabular-nums;font-size:13px}.transport-time-recording{color:#e0392b}.transport-btn{color:#111;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;padding:2px;display:flex}.transport-btn:active{background:#f2f2f2}.transport-btn:disabled{color:#ccc;cursor:default;border-color:#eee}.transport-btn svg{width:100%;height:100%}.transport-review-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:20px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;display:inline-flex}.transport-review-btn svg{width:20px;height:20px}.transport-delete-btn{color:#888}.transport-delete-btn:active{background:#f2f2f2}.transport-save-btn{color:#fff;background:#2e9e5b}.transport-save-btn:active{background:#278a4f}.rec-meta{align-items:center;gap:6px;display:inline-flex}.rec-blink{background:#e0392b;border-radius:50%;width:8px;height:8px;animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.tab-bar{background:#fff;border-top:1px solid #eee;min-height:56px;display:flex}.tab{color:#888;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:8px;font-size:11px;display:flex}.tab-active{color:#111;font-weight:600}.tab-icon{width:20px;height:20px}.recordings-view{height:100%;overflow-y:auto}.recordings-progress-btn{cursor:pointer;color:#333;background:0 0;border:1px solid #ccc;border-radius:20px;justify-content:center;align-items:center;gap:6px;width:calc(100% - 32px);margin:12px 16px;padding:6px 14px;font-size:14px;display:flex}.recordings-progress-btn:active{background:#f2f2f2}.recording-row{border-bottom:1px solid #eee}.recording-row-main{box-sizing:border-box;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:12px 16px;display:flex}.recording-row-main:active{background:#f2f2f2}.recording-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.recording-date{color:#111;font-size:16px;font-weight:500}.recording-time,.recording-duration{color:#888;font-variant-numeric:tabular-nums;font-size:13px}.recording-chevron{color:#bbb;flex:none;transition:transform .15s}.recording-row-expanded .recording-chevron{transform:rotate(180deg)}.recording-actions{gap:8px;padding:0 16px 12px;display:flex}.recording-action{color:#333;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 10px;font-size:13px;text-decoration:none;display:flex}.recording-action:active{background:#f2f2f2}.recording-action-delete{color:#e0392b;border-color:#f0c9c5}.recording-action-delete:active{background:#fdecea}.progress-view{box-sizing:border-box;height:100%;padding:16px;overflow-y:auto}.progress-stats{gap:32px;margin-bottom:32px;display:flex}.progress-stat-value{color:#111;font-size:36px;font-weight:700}.progress-stat-unit{color:#888;font-size:16px;font-weight:400}.progress-stat-label{color:#888;font-size:13px}.bar-chart-container{border:1px solid #ddd;border-radius:12px;padding:16px}.bar-chart{align-items:flex-end;gap:4px;height:120px;display:flex}.bar-chart-bar-container{flex:1;align-items:flex-end;height:100%;display:flex}.bar-chart-bar{background:#555;border-radius:2px 2px 0 0;width:100%;min-height:4px}.bar-chart-bar-stacked{border-radius:2px 2px 0 0;align-items:flex-end;width:100%;display:flex;overflow:hidden}.bar-chart-stack{width:100%;height:100%;display:flex}.bar-chart-stack-seg{min-width:2px;height:100%}.bar-chart-stack-untagged{background:#d0d0d0;width:100%}.bar-chart-labels{color:#888;justify-content:space-between;margin-top:8px;font-size:12px;display:flex}.tag-legend{border-top:1px solid #eee;flex-wrap:wrap;gap:10px 16px;margin:16px 0 0;padding:16px 0 0;list-style:none;display:flex}.tag-legend-item{color:#333;align-items:center;gap:6px;font-size:13px;display:inline-flex}.tag-legend-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.tag-legend-count{color:#888;font-variant-numeric:tabular-nums;margin-left:2px}.list-empty{color:#888;text-align:center;padding:24px 16px}.settings-gear{cursor:pointer;color:#666;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.settings-gear svg{width:22px;height:22px}.settings-gear-floating{z-index:3;color:#555;background:#ffffffd9;border-radius:50%;width:40px;height:40px;position:absolute;top:12px;right:12px;box-shadow:0 1px 4px #00000026}.settings-sheet-backdrop{z-index:10;background:#00000059;align-items:flex-end;display:flex;position:fixed;inset:0}.settings-sheet{box-sizing:border-box;width:100%;padding:20px 16px calc(20px + env(safe-area-inset-bottom));background:#fff;border-radius:16px 16px 0 0;box-shadow:0 -2px 16px #00000026}.settings-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.settings-title{color:#111;font-size:16px;font-weight:600}.settings-close{color:#888;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:22px;line-height:1}.settings-field{flex-direction:column;gap:6px;display:flex}.settings-field-label{color:#888;font-size:13px}.settings-select{box-sizing:border-box;color:#111;background:#fff;border:1px solid #ccc;border-radius:8px;width:100%;padding:10px 12px;font-size:15px}.main-pane{flex-direction:column;flex:1;min-width:0;display:flex}.sidebar{display:none}.sidebar-recordings{flex-direction:column;flex:1;min-height:0;display:flex}.sidebar-recordings-header{color:#888;padding:12px 16px 8px;font-size:13px;font-weight:600}.sidebar-recordings-list{flex:1;min-height:0;overflow-y:auto}.recording-row-selected{background:#f5f5f5}.progress-stat-desktop{display:none}@media (width>=768px){.top-nav,.top-nav-buttons{display:flex}.settings-desktop{margin-left:auto;position:relative}.settings-gear:hover{color:#111}.settings-dropdown{box-sizing:border-box;z-index:20;background:#fff;border:1px solid #ddd;border-radius:12px;width:260px;padding:16px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 4px 20px #0000001f}.app-body{flex-direction:row}.main-pane{flex:1;min-width:0}.sidebar{border-right:1px solid #eee;flex-direction:column;flex-shrink:0;width:380px;height:100%;display:flex}.sidebar .transport{border-top:1px solid #eee;padding:16px}.sidebar .transport-idle{pointer-events:auto;border-top:1px solid #eee;padding:16px;position:static}.tab-bar,.recordings-view{display:none}.progress-stat-desktop{display:block}.progress-view{flex-direction:column;padding:32px;display:flex}.progress-stats{gap:48px;margin-bottom:32px}.progress-stat-value{font-size:44px}.bar-chart-container{flex-direction:column;flex:1;min-height:360px;padding:24px;display:flex}.bar-chart{flex:1;gap:8px;height:auto;min-height:0}}.tag-chip{color:#444;white-space:nowrap;background:#f0f0f0;border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;line-height:1.4;display:inline-flex}.tag-chip-static{cursor:default}.tag-chip-remove{color:inherit;opacity:.55;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:14px;line-height:1;display:inline-flex}.tag-chip-remove:hover{opacity:1}.tag-editor{box-sizing:border-box;background:#fff;border:1px solid #ccc;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;min-height:36px;padding:6px;display:flex;position:relative}.tag-editor:focus-within{border-color:#888}.tag-editor-input{color:#111;background:0 0;border:none;outline:none;flex:100px;min-width:80px;padding:2px 4px;font-size:14px}.tag-editor-input::placeholder{color:#999}.tag-editor-options{z-index:30;background:#fff;border:1px solid #ddd;border-radius:8px;max-height:200px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 4px 16px #0000001f}.tag-editor-option{text-align:left;color:#333;cursor:pointer;background:0 0;border:none;width:100%;padding:8px 12px;font-size:14px;display:block}.tag-editor-option-highlighted{background:#f2f2f2}.tag-editor-option-create strong{color:#2e9e5b;font-weight:600}.transport-tags{padding:0 2px}.recording-tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.recording-tag-editor{padding:0 16px 12px}.recording-action-active{background:#f2f2f2;border-color:#ccc}.recording-action-tag{color:#555}.tag-filter{padding:0 16px 8px}.tag-filter-row{align-items:stretch;gap:8px;display:flex}.tag-filter-select{color:#111;box-sizing:border-box;background:#fff;border:1px solid #ccc;border-radius:8px;flex:1;min-width:0;padding:8px 10px;font-size:14px}.tag-filter-manage{color:#555;cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 12px;font-size:13px;display:inline-flex}.tag-filter-manage:active{background:#f2f2f2}.tag-manager{box-sizing:border-box;width:min(520px,100%);max-height:80dvh;padding:20px 16px calc(20px + env(safe-area-inset-bottom));background:#fff;border-radius:16px 16px 0 0;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 -2px 16px #00000026}@media (width>=768px){.tag-manager{border-radius:16px;max-height:70dvh;margin:auto 0}.settings-sheet-backdrop{align-items:center}}.tag-manager-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.tag-manager-title{color:#111;font-size:16px;font-weight:600}.tag-manager-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.tag-manager-row{border-radius:8px;align-items:center;gap:12px;padding:6px 8px;display:flex}.tag-manager-row-editing{background:#f7f7f7}.tag-manager-name{cursor:pointer;background:0 0;border:none;flex:none;padding:0}.tag-manager-input{color:#111;background:#fff;border:1px solid #888;border-radius:8px;outline:none;flex:auto;min-width:100px;padding:6px 10px;font-size:14px}.tag-manager-input:focus{border-color:#555}.tag-manager-count{text-align:right;color:#888;font-variant-numeric:tabular-nums;flex:auto;font-size:13px}.tag-manager-error{color:#b3261e;background:#fdecea;border-radius:8px;margin-top:12px;padding:8px 12px;font-size:13px}
