:root{--space-0:0px;--space-0-5:2px;--space-1:4px;--space-1-5:6px;--space-2:8px;--space-2-5:10px;--space-3:12px;--space-3-5:14px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-12:48px;--text-2xs:10px;--text-xs:11px;--text-sm:12px;--text-caption:13px;--text-body-sm:14px;--text-body:15px;--text-md:16px;--text-lg:17px;--text-xl:18px;--text-2xl:20px;--text-3xl:32px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-2xl:16px;--radius-pill:9999px;--radius-full:50%;--shadow-sm:0 1px 4px #0003;--shadow-md:0 4px 16px #0003;--shadow-lg:0 4px 16px #00000040;--bg-primary:#eef0f4;--bg-secondary:#e2e5ec;--bg-tertiary:#d6dae2;--bg-elevated:#dadde5;--text-primary:#1a1f2e;--text-secondary:#5a6170;--text-muted:#8a90a0;--border:#00000012;--accent:#6366f1;--accent-hover:#4f46e5;--danger:#dc2626;--success:#16a34a;--warning:#d97706;--marker:#65a30d;--marker-dim:#65a30d26;--playback:#0ea5c9;--confirm:#2563eb;--confirm-hover:#1d4ed8;--player-bg:#2a3348;--player-text:#e4e8ee;--sopran:#ec4899;--alt:#f97316;--tenor:#3b82f6;--bass:#22c55e;--satb:#8b5cf6;--piano:#a78bfa;--sec-color:#64748b}[data-theme=dark]{--bg-primary:#1e2538;--bg-secondary:#2a3348;--bg-tertiary:#354050;--bg-elevated:#303a50;--text-primary:#e4e8ee;--text-secondary:#9aa4b4;--text-muted:#6a7484;--border:#94a3b81a;--accent:#818cf8;--accent-hover:#6366f1;--danger:#f87171;--success:#4ade80;--warning:#fbbf24;--marker:#a3e635;--marker-dim:#a3e63533;--playback:#22d3ee;--confirm:#3b82f6;--confirm-hover:#2563eb;--player-bg:#2a3348;--player-text:#e4e8ee}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}.app-shell,.browse-page{flex-direction:column;height:100%;display:flex}.browse-header{z-index:10;flex-shrink:0}.browse-content{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.browse-footer{justify-content:center;gap:var(--space-2-5);padding:11px var(--space-3);background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;display:flex}.browse-footer-btn{padding:5px var(--space-3-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-secondary);font-size:var(--text-body-sm);cursor:pointer;align-items:center;gap:5px;min-height:34px;font-family:inherit;display:flex}.browse-footer-btn:active{background:var(--border)}.topbar{padding:var(--space-1) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-2-5);min-height:40px;transition:transform .3s,opacity .3s;display:flex}.topbar--hidden{opacity:0;pointer-events:none;z-index:10;position:absolute;top:0;left:0;right:0;transform:translateY(-100%)}.topbar-back{color:var(--text-secondary);padding:0 var(--space-1) 0 0;font-size:var(--text-xl);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;align-items:center;line-height:1;display:flex}.topbar-title{font-size:var(--text-xl);font-weight:600}.topbar-track{align-items:center;gap:var(--space-1-5);flex-shrink:1;min-width:0;margin-left:auto;display:flex}.topbar-track-name{font-size:var(--text-caption);color:var(--text-secondary);white-space:nowrap;font-weight:500}.topbar-voice-badge{font-size:var(--text-caption);padding:var(--space-1) var(--space-2-5);border-radius:var(--radius-sm);white-space:nowrap;flex-shrink:0;font-weight:700}.main-content{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.bottom-nav{padding:var(--space-2) 0 var(--space-3-5);background:var(--bg-secondary);border-top:1px solid var(--border);justify-content:space-around;align-items:center;min-height:60px;display:flex}.bottom-nav-item{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-5);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-direction:column;font-family:inherit;display:flex}.bottom-nav-item.active{color:var(--accent)}.bottom-nav-label{font-size:var(--text-sm);font-weight:500}.mini-player{padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border-top:1px solid var(--border);align-items:center;gap:var(--space-2-5);cursor:pointer;display:flex;position:relative}.mini-player-icon{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--accent);background:#818cf826;flex-shrink:0;justify-content:center;align-items:center;display:flex}.mini-player-info{flex:1;min-width:0}.mini-player-title{font-size:var(--text-caption);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.mini-player-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.mini-player-btn{color:var(--text-primary);cursor:pointer;padding:var(--space-2);background:0 0;border:none;align-items:center;display:flex}.mini-player-expand{color:var(--text-muted);cursor:pointer;padding:var(--space-2);background:0 0;border:none;flex-shrink:0;align-items:center;display:flex}.mini-player-progress{background:var(--bg-tertiary);height:2px;position:absolute;bottom:0;left:0;right:0}.mini-player-progress-fill{background:var(--accent);height:100%;transition:width .3s linear}.top-player-bar{padding:var(--space-1-5) var(--space-4) 30px;background:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:50;cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;min-height:56px;display:flex;position:relative}.top-player-bar--full{background:var(--bg-elevated);cursor:default}.top-player-back{color:var(--text-secondary);cursor:pointer;padding:var(--space-2-5);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;min-width:48px;min-height:48px;display:flex;position:absolute;left:8px}.top-player-time{font-size:var(--text-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:center;min-width:36px;font-weight:500}.top-player-controls{align-items:center;gap:var(--space-2);display:flex}.top-player-loop{color:var(--text-muted);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-full);touch-action:manipulation;opacity:.3;min-width:36px;min-height:36px;margin-right:var(--space-1);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.top-player-loop:disabled{cursor:default}.top-player-loop--has-range{opacity:1;color:var(--text-secondary)}.top-player-loop--active{opacity:1;color:#f59e0b}.top-player-loop:active:not(:disabled){background:var(--bg-tertiary)}.top-player-skip{color:var(--playback);cursor:pointer;padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);align-items:center;gap:var(--space-1);font-size:var(--text-caption);touch-action:manipulation;border-radius:var(--radius-xl);background:0 0;border:none;justify-content:center;min-width:44px;min-height:44px;font-family:inherit;font-weight:600;display:flex}.top-player-skip:active{background:var(--bg-tertiary)}.top-player-play{border-radius:var(--radius-full);background:var(--playback);width:52px;height:52px;color:var(--bg-primary);cursor:pointer;touch-action:manipulation;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.top-player-play:active{background:var(--playback);opacity:.8;transform:scale(.95)}.top-player-progress{background:var(--bg-tertiary);height:3px;position:absolute;bottom:0;left:0;right:0}.top-player-progress-fill{background:var(--accent);height:100%;transition:width .3s linear}.top-player-menu{z-index:60;position:absolute;top:50%;right:8px;transform:translateY(calc(-50% - 12px))}.top-player-menu-btn{color:var(--text-muted);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-full);touch-action:manipulation;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}.top-player-menu-btn:active{background:var(--bg-tertiary)}.top-player-menu-popup{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-1-5);gap:var(--space-0-5);box-shadow:var(--shadow-md);flex-direction:column;min-width:72px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.top-player-menu-item{color:var(--text-primary);cursor:pointer;padding:var(--space-2-5) 18px;font-size:var(--text-md);border-radius:var(--radius-md);text-align:center;touch-action:manipulation;white-space:nowrap;background:0 0;border:none;font-family:inherit;font-weight:500}.top-player-menu-item:active{background:var(--bg-tertiary)}.top-player-menu-item.active{background:var(--accent);color:#fff;font-weight:600}.mini-waveform{position:absolute;bottom:0;left:0;right:0}.mini-waveform-canvas{cursor:pointer;width:100%;height:20px;display:block}.mini-waveform-markers{width:100%;height:6px;position:relative}.mini-waveform-marker-dot{border-radius:var(--radius-full);background:var(--marker);width:5px;height:5px;position:absolute;top:1px;transform:translate(-50%)}.footer-slot{flex-shrink:0}.global-player{background:var(--bg-secondary);border-top:1px solid var(--border);flex-shrink:0;transition:transform .3s,opacity .3s}.global-player--hidden{opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;transform:translateY(100%)}.global-player-markers{align-items:center;gap:var(--space-1-5);padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--border);display:flex;overflow:visible}.global-player-markers-scroll{align-items:center;gap:var(--space-1-5);-webkit-overflow-scrolling:touch;white-space:nowrap;flex:1;min-width:0;display:flex;overflow-x:auto}.seek-bar{padding:var(--space-3-5) var(--space-4) 0;cursor:pointer;touch-action:none;position:relative}.seek-bar-times{padding:var(--space-1) 0 var(--space-0-5);justify-content:space-between;display:flex}.seek-bar-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500}.seek-bar-track{background:#8a90a066;border-radius:1.5px;height:3px;position:relative}.seek-bar-played{background:var(--playback);border-radius:1.5px;height:100%}.seek-bar-thumb{border-radius:var(--radius-full);background:var(--playback);pointer-events:none;z-index:2;width:14px;height:14px;position:absolute;top:50%;transform:translate(-50%,-50%)}.seek-bar-thumb--loop{background:#f59e0b}.seek-bar-loop-fill{background:#f59e0b;border-radius:1.5px;height:100%;position:absolute}.seek-bar-marker-dot{border-radius:var(--radius-full);background:var(--marker);pointer-events:none;z-index:1;width:6px;height:6px;position:absolute;top:50%;transform:translate(-50%,-50%)}.global-player-controls{padding:var(--space-1) var(--space-4) var(--space-4);padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));align-items:center;display:flex;position:relative}.gpc-side{flex:1;align-items:center;display:flex}.gpc-side--left{padding-right:var(--space-3);justify-content:flex-end}.gpc-side--right{padding-left:var(--space-5);justify-content:flex-start}.gpc-center{justify-content:center;align-items:center;gap:var(--space-2);display:flex}.gpc-btn{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-full);touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.gpc-btn:disabled{cursor:default;opacity:.3}.gpc-btn:active:not(:disabled){background:var(--bg-tertiary)}.gpc-btn--active{color:#f59e0b}.gpc-btn-skip{color:var(--playback)}.gpc-btn-play{border-radius:var(--radius-full);background:var(--playback);width:48px;height:48px;color:var(--bg-primary);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.gpc-btn-play:active{opacity:.8;transform:scale(.95)}.gpc-menu{position:absolute;top:50%;right:16px;transform:translateY(-50%)}.gpc-btn-menu{width:36px;height:36px;color:var(--text-muted)}.gpc-menu-popup{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-1-5);gap:var(--space-0-5);box-shadow:var(--shadow-md);z-index:60;flex-direction:column;min-width:72px;display:flex;position:absolute;bottom:calc(100% + 4px);right:0}.gpc-menu-item{color:var(--text-primary);cursor:pointer;padding:var(--space-2-5) 18px;font-size:var(--text-md);border-radius:var(--radius-md);text-align:center;touch-action:manipulation;background:0 0;border:none;font-family:inherit;font-weight:500}.gpc-menu-item:active{background:var(--bg-tertiary)}.gpc-menu-item.active{background:var(--accent);color:#fff;font-weight:600}.global-player-menu-popup{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-1-5);gap:var(--space-0-5);box-shadow:var(--shadow-md);flex-direction:column;min-width:72px;display:flex;position:absolute;bottom:calc(100% + 4px);right:0}.section-cards{gap:var(--space-1-5);padding:0 0 var(--space-2);flex-direction:column;display:flex}.section-card{align-items:center;gap:var(--space-2-5);padding:var(--space-2-5) var(--space-3-5);border-radius:var(--radius-lg);cursor:pointer;text-align:left;color:var(--text);-webkit-tap-highlight-color:transparent;background:0 0;border:2px solid #0000;font-family:inherit;transition:border-color .15s;display:flex}.section-card--active{border-color:var(--text-primary)}.section-card--looping{border-color:#f59e0b}.section-card--gap{border:1.5px dashed var(--border);opacity:.6}.section-card-dot{border-radius:var(--radius-full);flex-shrink:0;width:10px;height:10px}.section-card-dot--gap{border:1.5px dashed var(--text-muted);background:0 0!important}.section-card-label{font-size:var(--text-caption);flex:1;font-weight:600}.section-card-label--gap{color:var(--text-muted);font-weight:400;font-size:var(--text-sm)}.section-card-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.player-marker-row{align-items:center;gap:var(--space-1-5);padding:var(--space-1) var(--space-4);background:var(--bg-secondary);border-bottom:1px solid var(--border);white-space:nowrap;flex-shrink:0;display:flex;overflow:visible}.player-marker-row-scroll{align-items:center;gap:var(--space-1-5);-webkit-overflow-scrolling:touch;flex:1;min-width:0;display:flex;overflow-x:auto}.player-toolbar-btn{min-width:44px;min-height:34px;padding:5px var(--space-3-5);border-radius:var(--radius-lg);border:1.5px solid var(--border);color:var(--text-secondary);font-size:var(--text-body-sm);cursor:pointer;touch-action:manipulation;background:0 0;justify-content:center;align-items:center;font-family:inherit;font-weight:700;display:flex}.player-toolbar-btn:active{background:var(--bg-tertiary)}.player-toolbar-btn:disabled{opacity:.3;cursor:not-allowed}.player-toolbar-marker{align-items:center;gap:var(--space-1);padding:var(--space-1-5) var(--space-2-5);border-radius:var(--radius-2xl);border:1px solid var(--marker);background:var(--marker-dim);color:var(--marker);font-size:var(--text-sm);font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap;flex-shrink:0;font-family:inherit;font-weight:500;display:flex}.player-toolbar-marker:active{background:var(--bg-tertiary)}.player-toolbar-marker--pending{color:#f59e0b;background:#f59e0b26;border-color:#f59e0b}.player-toolbar-marker--deletable{color:#fff;background:#ffffff1f;border-color:#fff}.player-toolbar-marker--deletable .marker-dot{background:#fff}.player-toolbar-marker-x{color:var(--text-muted);margin-left:var(--space-0-5);align-items:center;display:flex}.marker-kebab-wrap{flex-shrink:0;margin-left:auto;position:relative}.marker-kebab-popup{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-1-5);gap:var(--space-0-5);box-shadow:var(--shadow-md);z-index:60;white-space:nowrap;flex-direction:column;min-width:160px;display:flex;position:absolute;bottom:calc(100% + 4px);right:0}.marker-kebab-item{color:var(--text-primary);cursor:pointer;padding:var(--space-2-5) var(--space-4);font-size:var(--text-body-sm);border-radius:var(--radius-md);text-align:left;touch-action:manipulation;background:0 0;border:none;font-family:inherit;font-weight:500}.marker-kebab-item:active{background:var(--bg-tertiary)}.player-scroll-content{-webkit-overflow-scrolling:touch;padding:0 var(--space-5) var(--space-5);flex:1;overflow-y:auto}.dot-bar{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) 0;cursor:pointer;flex-shrink:0;transition:transform .3s,opacity .3s,height .3s,padding .3s;display:flex}.dot-bar--hidden{opacity:0;pointer-events:none;height:0;padding:0;overflow:hidden;transform:translateY(-100%)}.dot{border-radius:var(--radius-full);background:var(--bg-tertiary);cursor:pointer;border:none;width:7px;height:7px;padding:0;transition:all .25s}.dot--active{background:var(--accent);border-radius:var(--radius-xs);width:20px}.player-content-area{flex:1;position:relative;overflow:hidden}.player-content-panels{width:200%;height:100%;transition:transform .3s;display:flex}.player-content-panels.swiping{transition:none}.player-content-panel{-webkit-overflow-scrolling:touch;width:50%;height:100%;overflow-y:auto}.pdf-panel{flex-direction:column;height:100%;display:flex;position:relative}.pdf-toolbar{padding:var(--space-1) var(--space-3);flex-shrink:0;justify-content:space-between;align-items:center;min-height:36px;display:none}.pdf-toolbar-name{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-right:var(--space-2);flex:1;overflow:hidden}.pdf-toolbar-actions{gap:var(--space-0-5);flex-shrink:0;display:flex}.pdf-toolbar-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;text-decoration:none;display:flex}.pdf-toolbar-btn:hover{background:var(--bg-tertiary)}.pdf-toolbar-btn--active{background:var(--accent);color:#fff}.pdf-toolbar-btn--active:hover{background:var(--accent);opacity:.9}.pdf-pages{-webkit-overflow-scrolling:touch;align-items:flex-start;gap:var(--space-1);padding:var(--space-1);background:var(--bg-primary);flex-direction:column;flex:1;display:flex;overflow:auto}.pdf-pages--drawing{touch-action:none;overflow:hidden}.pdf-page-img{width:100%;height:auto;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;pointer-events:none;background:#fff;display:block}.annotated-page{position:relative}.annotation-svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.annotation-svg--active{pointer-events:auto;touch-action:none;cursor:crosshair}.annotation-toolbar{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--bg-elevated);border-bottom:1px solid var(--border);flex-shrink:0;display:flex;overflow-x:auto}.annotation-toolbar-group{align-items:center;gap:var(--space-0-5);display:flex}.annotation-tool-btn{border-radius:var(--radius-sm);background:var(--bg-secondary);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;border:1.5px solid #0000;justify-content:center;align-items:center;display:flex}.annotation-tool-btn:active{transform:scale(.93)}.annotation-tool-btn--active{border-color:var(--accent);color:var(--accent);background:var(--bg-tertiary)}.annotation-tool-btn--danger{color:var(--danger)}.annotation-tool-btn:disabled{opacity:.3;cursor:default}.annotation-color-btn{border-radius:var(--radius-full);cursor:pointer;border:2px solid #0000;width:24px;height:24px}.annotation-color-btn--active{border-color:var(--text-primary);box-shadow:var(--shadow-sm)}.annotation-width-btn{border-radius:var(--radius-sm);background:var(--bg-secondary);cursor:pointer;border:1.5px solid #0000;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.annotation-width-btn--active{border-color:var(--accent)}.annotation-width-dot{border-radius:var(--radius-full);background:var(--text-primary)}.pdf-fab{bottom:var(--space-3);right:var(--space-3);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);width:44px;height:44px;color:var(--text-secondary);cursor:pointer;box-shadow:var(--shadow-md);z-index:5;justify-content:center;align-items:center;transition:opacity .5s;display:flex;position:absolute}.pdf-fab:active{transform:scale(.93)}.pdf-fab--draw{right:auto;left:var(--space-3)}.pdf-fab--draw-active,.pdf-fab--fullscreen{background:var(--accent);color:#fff;border-color:#0000}.pdf-fab--faded{opacity:.3}.pdf-fab-progress{pointer-events:none;width:48px;height:48px;position:absolute;top:-2px;left:-2px}.pdf-fab-progress circle{fill:none;stroke-width:2px;transform-origin:50%;transform:rotate(-90deg)}.pdf-fab-progress .pdf-fab-progress-track{stroke:#ffffff26}.pdf-fab-progress .pdf-fab-progress-fill{stroke:#fff;stroke-dasharray:138.23;transition:stroke-dashoffset .3s}.pdf-upload{justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-8);color:var(--text-muted);flex-direction:column;flex:1;display:flex}.pdf-upload-icon{border-radius:var(--radius-xl);background:var(--bg-elevated);width:48px;height:48px;color:var(--accent);justify-content:center;align-items:center;display:flex}.pdf-upload-text{font-size:var(--text-caption);text-align:center;line-height:1.5}.pdf-upload-btn{padding:var(--space-2-5) var(--space-6);border-radius:var(--radius-lg);border:1.5px dashed var(--accent);color:var(--accent);font-size:var(--text-caption);cursor:pointer;align-items:center;gap:var(--space-1-5);background:#818cf814;font-weight:600;display:flex}.pdf-upload-hint{font-size:var(--text-xs);color:var(--text-muted)}.player-empty-sections{justify-content:center;align-items:center;gap:var(--space-4);min-height:200px;color:var(--text-muted);font-size:var(--text-body);flex-direction:column;flex:1;display:flex}.player-empty-waveform{opacity:.25;width:120px;height:48px}.player-loop-row{justify-content:center;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.btn{padding:var(--space-2-5) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-body);cursor:pointer;touch-action:manipulation;border:none;justify-content:center;align-items:center;min-height:44px;font-weight:500;transition:background .15s;display:inline-flex}.btn-primary{background:var(--confirm);color:#fff}.btn-primary:hover{background:var(--confirm-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.btn-danger{background:var(--danger);color:#fff}.btn-icon{padding:var(--space-2);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:24px;display:flex}.input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-md);background:var(--bg-primary);color:var(--text-primary);min-height:44px}.input:focus{border-color:var(--accent);outline:none}.input-group{gap:var(--space-1-5);flex-direction:column;display:flex}.input-label{font-size:var(--text-caption);color:var(--text-secondary);font-weight:500}.file-list{list-style:none}.file-item{padding:var(--space-3-5) var(--space-4);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-3-5);cursor:pointer;transition:background .1s;display:flex}.file-item:active{background:var(--bg-secondary)}.file-item--active{background:#818cf814}.file-icon-box{border-radius:var(--radius-lg);flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.file-icon-folder{color:#60a5fa;background:#60a5fa26}.file-icon-audio{color:#a855f7;background:#a855f726}.file-icon-playing{color:var(--accent);background:#818cf833}.file-name--active{color:var(--accent);font-weight:600}.playing-bars{align-items:flex-end;gap:var(--space-0-5);height:14px;display:flex}.playing-bars span{background:var(--accent);border-radius:1px;width:3px;animation:.8s ease-in-out infinite bar-bounce}.playing-bars span:first-child{height:6px;animation-delay:0s}.playing-bars span:nth-child(2){height:10px;animation-delay:.2s}.playing-bars span:nth-child(3){height:4px;animation-delay:.4s}@keyframes bar-bounce{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.file-info{flex:1;overflow:hidden}.file-name{font-size:var(--text-body);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.file-meta{font-size:var(--text-caption);color:var(--text-muted);gap:var(--space-2);align-items:center;margin-top:3px;display:flex}.filter-bar{gap:var(--space-1-5);padding:var(--space-2) var(--space-4);white-space:nowrap;-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.filter-chip{padding:7px var(--space-3-5);border:1.5px solid var(--border);color:var(--text-secondary);font-size:var(--text-caption);cursor:pointer;white-space:nowrap;background:0 0;border-radius:18px;flex-shrink:0;align-items:center;gap:5px;font-family:inherit;font-weight:500;display:inline-flex}.filter-chip.active{border-color:var(--accent);color:var(--accent);background:#818cf826}.filter-chip-dot{border-radius:var(--radius-full);flex-shrink:0;width:6px;height:6px}.file-labels{gap:var(--space-1);flex-wrap:wrap;margin-top:3px;display:flex}.label-chip-sm{border-radius:var(--radius-md);font-size:var(--text-2xs);white-space:nowrap;padding:1px 7px;font-weight:600;display:inline-flex}.file-actions-btn{color:var(--text-muted);padding:var(--space-2);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;align-items:center;display:flex}.fav-toggle{cursor:pointer;padding:var(--space-2);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;align-items:center;display:flex}.swipe-wrapper{border-bottom:1px solid var(--border);position:relative;overflow:hidden}.swipe-wrapper .file-item{border-bottom:none}.swipe-content{background:var(--bg-primary);z-index:1;transition:transform .25s;position:relative;transform:translate(0)}.swipe-actions{display:flex;position:absolute;top:0;bottom:0;right:0}.swipe-revealed .swipe-content{transform:translate(-144px)}.swipe-revealed:has(.swipe-action-delete) .swipe-content{transform:translate(-192px)}.swipe-action-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;justify-content:center;align-items:center;width:48px;display:flex}.swipe-action-fav{background:var(--surface);color:#f87171}.swipe-action-fav:active{background:var(--border)}.swipe-action-label{background:var(--surface);color:var(--accent)}.swipe-action-label:active{background:var(--border)}.swipe-action-info{background:var(--surface);color:var(--text-secondary)}.swipe-action-info:active{background:var(--border)}.swipe-action-delete{background:var(--danger);color:#fff}.swipe-action-delete:active{background:#dc2626}.confirm-overlay{z-index:1000;padding:var(--space-6);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--bg-primary);border-radius:var(--radius-2xl);padding:var(--space-6);text-align:center;width:100%;max-width:320px}.confirm-title{font-size:var(--text-lg);color:var(--text-primary);margin-bottom:var(--space-2);font-weight:600}.confirm-filename{font-size:var(--text-body-sm);color:var(--text-secondary);word-break:break-all;margin-bottom:var(--space-1)}.confirm-hint{font-size:var(--text-caption);color:var(--text-muted);margin-bottom:var(--space-5)}.confirm-actions{gap:var(--space-3);display:flex}.confirm-actions .btn{flex:1}.search-bar{align-items:center;gap:var(--space-2);background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 var(--space-2) 0 var(--space-3);flex:1;display:flex}.search-input{color:var(--text-primary);font-size:var(--text-body);padding:var(--space-2-5) 0;background:0 0;border:none;outline:none;flex:1;min-height:40px;font-family:inherit}.search-input::placeholder{color:var(--text-muted)}.breadcrumb{padding:var(--space-1) var(--space-4) var(--space-1-5);font-size:var(--text-caption);color:var(--text-secondary);background:var(--bg-secondary);white-space:nowrap;align-items:center;gap:var(--space-1);border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.breadcrumb-item{cursor:pointer;color:var(--accent)}.breadcrumb-separator{color:var(--text-muted)}.breadcrumb-current{color:var(--text-primary);font-weight:500}.voice-part-selector{gap:var(--space-2);display:flex}.voice-part-btn{padding:var(--space-2-5) var(--space-1);border:2px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-caption);cursor:pointer;background:0 0;flex:1;min-height:44px;font-weight:500;transition:all .15s}.voice-part-btn.selected{border-color:var(--accent);background:var(--accent);color:#fff}.auth-page{height:100%;padding:var(--space-6);background:var(--bg-primary);justify-content:center;align-items:center;display:flex}.auth-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-xl);width:100%;max-width:360px;padding:var(--space-8) var(--space-6)}.auth-logo{text-align:center;margin-bottom:var(--space-6)}.auth-logo-icon{background:var(--accent);border-radius:var(--radius-lg);color:#fff;width:44px;height:44px;margin-bottom:var(--space-3);justify-content:center;align-items:center;display:inline-flex}.auth-title{font-size:var(--text-2xl);margin-bottom:var(--space-1);font-weight:700}.auth-subtitle{font-size:var(--text-caption);color:var(--text-muted)}.auth-error{border:1px solid var(--danger);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-4);font-size:var(--text-caption);color:var(--danger);background:#f871711a}.auth-form{gap:var(--space-3-5);flex-direction:column;display:flex}.auth-field{flex-direction:column;gap:5px;display:flex}.auth-label{font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.auth-input{width:100%;padding:var(--space-2-5) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-body);background:var(--bg-primary);color:var(--text-primary);min-height:44px;font-family:inherit}.auth-input:focus{border-color:var(--accent);outline:none}.auth-input-wrap{position:relative}.auth-input-wrap .auth-input{padding-right:44px}.auth-pw-toggle{color:var(--text-muted);cursor:pointer;padding:var(--space-2);background:0 0;border:none;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.auth-submit{width:100%;padding:var(--space-3);border-radius:var(--radius-md);background:var(--accent);color:#fff;font-size:var(--text-body);cursor:pointer;min-height:44px;margin-top:var(--space-1);border:none;font-family:inherit;font-weight:600;transition:background .15s}.auth-submit:hover{background:var(--accent-hover)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-footer{text-align:center;margin-top:var(--space-4);font-size:var(--text-caption);color:var(--text-secondary)}.auth-footer a{color:var(--accent);cursor:pointer;text-decoration:none}.pwa-guide-overlay{z-index:9999;padding:var(--space-4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pwa-guide{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-2xl);width:100%;max-width:400px;max-height:90vh;padding:var(--space-7) var(--space-6) var(--space-6);position:relative;overflow-y:auto}.pwa-guide-close{color:var(--text-muted);cursor:pointer;padding:var(--space-1);background:0 0;border:none;display:flex;position:absolute;top:12px;right:12px}.pwa-guide-header{text-align:center;margin-bottom:var(--space-5)}.pwa-guide-icon{width:64px;height:64px;margin-bottom:var(--space-3);border-radius:14px}.pwa-guide-header h2{font-size:var(--text-xl);margin-bottom:var(--space-1-5);font-weight:700}.pwa-guide-subtitle{font-size:var(--text-caption);color:var(--text-secondary);line-height:1.4}.pwa-guide-section{margin-bottom:var(--space-4)}.pwa-guide-section h3{font-size:var(--text-body-sm);margin-bottom:var(--space-2-5);color:var(--text-primary);font-weight:600}.pwa-guide-steps{gap:var(--space-2-5);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.pwa-guide-steps li{align-items:flex-start;gap:var(--space-2-5);font-size:var(--text-caption);color:var(--text-secondary);line-height:1.4;display:flex}.pwa-guide-step-icon{border-radius:var(--radius-md);background:var(--bg-primary);width:32px;height:32px;color:var(--accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.pwa-guide-actions{margin-top:var(--space-5);gap:var(--space-2);flex-direction:column;display:flex}.pwa-guide-btn-primary{width:100%;padding:var(--space-3);border-radius:var(--radius-md);background:var(--accent);color:#fff;font-size:var(--text-body);cursor:pointer;border:none;min-height:44px;font-family:inherit;font-weight:600;transition:background .15s}.pwa-guide-btn-primary:hover{background:var(--accent-hover)}.pwa-guide-btn-dismiss{width:100%;padding:var(--space-2-5);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-caption);cursor:pointer;background:0 0;border:none;min-height:44px;font-family:inherit}.pwa-guide-btn-dismiss:hover{color:var(--text-secondary)}.empty-state{padding:var(--space-12) var(--space-6);color:var(--text-muted);justify-content:center;align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.empty-state-icon{opacity:.5;font-size:48px}.settings-heading{font-size:var(--text-body-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-3);font-weight:600}.settings-rows{gap:var(--space-2);flex-direction:column;display:flex}.settings-row{min-height:44px;font-size:var(--text-body);justify-content:space-between;align-items:center;display:flex}.settings-label{color:var(--text-secondary)}.settings-nav-list{gap:var(--space-0-5);flex-direction:column;display:flex}.settings-nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3-5);border-radius:var(--radius-lg);background:var(--bg-secondary);color:var(--text-primary);font-size:var(--text-body);cursor:pointer;text-align:left;border:none;width:100%;font-family:inherit;display:flex}.settings-nav-item:active{background:var(--bg-tertiary)}.user-item{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);align-items:center;gap:var(--space-3);display:flex}.user-avatar{border-radius:var(--radius-full);background:var(--bg-tertiary);width:40px;height:40px;font-size:var(--text-xl);flex-shrink:0;justify-content:center;align-items:center;display:flex}.user-info{flex:1}.user-name{font-size:var(--text-body);font-weight:500}.user-meta{font-size:var(--text-sm);color:var(--text-muted);gap:var(--space-2);margin-top:var(--space-0-5);display:flex}.player-page{background:var(--bg-primary);flex-direction:column;height:100%;display:flex}.player-header{padding:var(--space-3) 0;justify-content:space-between;align-items:center;display:flex}.player-header-btn{color:var(--text-secondary);cursor:pointer;padding:var(--space-2-5);border-radius:var(--radius-lg);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}.player-header-btn:active{background:var(--bg-tertiary)}.player-header-title{font-size:var(--text-caption);color:var(--text-secondary);font-weight:500}.player-track-info{margin-top:var(--space-2-5);margin-bottom:var(--space-2)}.player-track-name{font-size:var(--text-xl);margin-bottom:var(--space-1);word-break:break-word;font-weight:600}.player-track-path{font-size:var(--text-caption);color:var(--text-muted)}.section-editor-footer{padding:11px var(--space-4);padding-bottom:calc(11px + env(safe-area-inset-bottom,0px));background:var(--bg-secondary);border-top:1px solid var(--border);z-index:20;flex-shrink:0;position:relative}.player-topbar-menu{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-1);min-width:200px;box-shadow:var(--shadow-lg);z-index:100;position:absolute;top:calc(100% + 4px);right:0}.player-footer-menu{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-1);min-width:200px;box-shadow:var(--shadow-lg);z-index:50;position:absolute;bottom:calc(100% + 8px);right:0}.player-footer-menu-item{align-items:center;gap:var(--space-2-5);width:100%;padding:var(--space-3) var(--space-3-5);color:var(--text-primary);font-size:var(--text-body-sm);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;font-family:inherit;display:flex}.player-footer-menu-item:active{background:var(--bg-secondary)}.section-shift-btn{border-radius:var(--radius-lg);width:44px;height:44px;color:var(--text-secondary);font-size:var(--text-2xl);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.section-shift-btn:active{color:var(--text-primary)}.section-shift-btn:disabled{opacity:.3;cursor:default}.section-boundary-row{gap:var(--space-1);margin-bottom:var(--space-6);justify-content:center;align-items:center;display:flex}.section-lane{width:100%;height:26px;margin-bottom:var(--space-1-5);position:relative}.section-block{border-radius:var(--radius-xs);cursor:pointer;height:100%;padding:0 var(--space-0-5);border:1px solid;justify-content:center;align-items:center;transition:background .15s;display:flex;position:absolute;top:0;overflow:hidden}.section-block--active{box-shadow:0 0 0 1px #fff6}.section-block-label{font-size:var(--text-2xs);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.player-time{width:100%;font-size:var(--text-caption);color:var(--text-secondary);margin-bottom:var(--space-3);font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.player-markers{gap:var(--space-1-5);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.player-divider{background:var(--border);height:1px;margin:0 -20px 20px}.waveform-canvas{cursor:pointer;touch-action:pan-x;width:100%;height:60px;margin-bottom:var(--space-8)}.waveform-placeholder{width:100%;height:80px;margin-bottom:var(--space-6);justify-content:center;align-items:center;display:flex}.waveform-loading{font-size:var(--text-caption);color:var(--text-muted)}.unified-timeline{margin-bottom:var(--space-2);touch-action:pan-y}.unified-scroll{position:relative}.unified-scroll--scrollable{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:0 var(--space-4);margin:0 -16px;overflow:auto hidden}.unified-scroll--scrollable::-webkit-scrollbar{display:none}.unified-strip{position:relative}.unified-strip .waveform-canvas{margin-bottom:0}.unified-section-lane{gap:var(--space-0-5);height:40px;margin-bottom:var(--space-0-5);cursor:pointer;display:flex}.unified-sec-block{border-radius:var(--radius-sm);height:100%;padding:0 var(--space-1-5);cursor:pointer;-webkit-tap-highlight-color:#ffffff1a;touch-action:manipulation;background:0 0;border:none;justify-content:center;align-items:center;font-family:inherit;display:flex;overflow:hidden}.unified-sec-block--gap{border:1.5px dashed #94a3b826;background:0 0!important}.unified-sec-block:focus{outline:none}.unified-sec-block--looping{border:3px solid #f59e0b!important}.unified-sec-label{font-size:var(--text-xs);color:#fff;white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.unified-playhead{pointer-events:none;z-index:3;background:#fff;border-radius:1px;width:2px;position:absolute;top:0;bottom:0;box-shadow:0 0 4px #00000080}.unified-playhead:before{content:"";border-radius:var(--radius-full);background:#fff;width:8px;height:8px;position:absolute;top:-3px;left:-3px}.waveform-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:0 var(--space-4);margin:0 -16px;overflow:auto hidden}.waveform-scroll::-webkit-scrollbar{display:none}.waveform-scroll .waveform-canvas{cursor:pointer;touch-action:pan-x;height:60px;margin-bottom:0;display:block}.player-view-toggle{background:var(--bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--space-2);gap:var(--space-0-5);padding:3px;display:flex}.player-view-toggle-btn{padding:var(--space-1-5) 0;border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:5px;font-family:inherit;font-weight:600;display:flex}.player-view-toggle-btn.active{background:var(--bg-tertiary);color:var(--text-primary)}.section-strip-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:0 var(--space-4);margin:0 -16px;overflow:auto hidden}.section-strip-scroll::-webkit-scrollbar{display:none}.section-strip-inner{gap:3px;height:80px;display:flex}.section-strip-block{border-radius:var(--radius-md);cursor:pointer;height:100%;padding:var(--space-1) var(--space-1-5);border:none;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;display:flex;position:relative;overflow:hidden}.section-strip-block--gap{border:1.5px dashed #94a3b833;background:0 0!important}.section-strip-block--gap .section-strip-label{color:#94a3b866;font-weight:500;font-size:var(--text-2xs)}.section-strip-block--gap .section-strip-time{color:#94a3b84d}.section-strip-block--current{outline-offset:-1.5px;outline:1.5px solid #ffffff4d}.section-strip-block--looping{outline-offset:-2px;outline:2px solid #f59e0b}.section-strip-label{font-size:var(--text-sm);color:#fff;z-index:1;white-space:nowrap;font-weight:700}.section-strip-time{font-size:var(--text-2xs);color:#fff9;font-variant-numeric:tabular-nums;z-index:1;margin-top:var(--space-0-5)}.section-strip-progress{pointer-events:none;background:#ffffff1f;border-radius:8px 0 0 8px;position:absolute;top:0;bottom:0;left:0}.section-strip-playing{align-items:flex-end;gap:var(--space-0-5);z-index:1;height:12px;margin-bottom:var(--space-0-5);display:flex}.section-strip-playing span{background:#fff;border-radius:1px;width:3px;animation:.8s ease-in-out infinite alternate section-play-bar}.section-strip-playing span:first-child{height:40%;animation-delay:0s}.section-strip-playing span:nth-child(2){height:70%;animation-delay:.15s}.section-strip-playing span:nth-child(3){height:50%;animation-delay:.3s}@keyframes section-play-bar{0%{transform:scaleY(.4)}to{transform:scaleY(1)}}.scroll-indicator{height:3px;margin:var(--space-1) 0 0;background:var(--bg-tertiary);border-radius:2px;position:relative;overflow:hidden}.scroll-indicator-thumb{background:var(--accent);border-radius:2px;min-width:20px;height:100%;transition:left .1s,width .1s;position:absolute;top:0}.player-core{justify-content:center;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.player-ab-btn{min-width:44px;min-height:34px;padding:5px var(--space-3-5);border-radius:var(--radius-lg);border:1.5px solid var(--border);color:var(--text-primary);font-size:var(--text-body-sm);cursor:pointer;touch-action:manipulation;background:0 0;justify-content:center;align-items:center;font-family:inherit;font-weight:700;display:flex}.player-ab-btn.active{color:#f59e0b;background:#f59e0b40;border-color:#f59e0b}.player-play-btn{border-radius:var(--radius-full);background:var(--accent);color:#fff;cursor:pointer;border:none;justify-content:center;align-items:center;width:72px;height:72px;transition:all .15s;display:flex;box-shadow:0 4px 20px #818cf84d}.player-play-btn:active{background:var(--accent-hover);transform:scale(.95)}.player-controls{justify-content:center;align-items:center;gap:var(--space-5);margin-bottom:var(--space-5);display:flex}.player-ctrl-btn{color:var(--text-secondary);cursor:pointer;padding:var(--space-2-5);font-size:var(--text-caption);background:0 0;border:none;align-items:center;gap:5px;font-family:inherit;font-weight:500;display:flex}.player-ctrl-btn:disabled{opacity:.3;cursor:not-allowed}.player-ctrl-btn.player-ctrl-amber{color:#f59e0b}.player-actions{justify-content:center;gap:var(--space-3);display:flex}.player-action-btn{padding:var(--space-2) 18px;border-radius:var(--radius-md);border:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-caption);cursor:pointer;align-items:center;gap:var(--space-1-5);background:0 0;font-family:inherit;display:flex}.player-action-btn:active{background:var(--bg-tertiary)}.player-action-btn--active{color:#f87171;border-color:#f871714d}.player-action-btn--label{color:var(--accent);border-color:#818cf84d}.player-labels{gap:var(--space-1-5);flex-wrap:wrap;display:flex}.label-chip{padding:var(--space-0-5) var(--space-2-5);border-radius:var(--radius-xl);font-size:var(--text-xs);white-space:nowrap;align-items:center;font-weight:600;display:inline-flex}.label-picker{gap:var(--space-2);padding:var(--space-4) 0;flex-wrap:wrap;justify-content:center;display:flex}.label-picker-item{align-items:center;gap:var(--space-1-5);padding:var(--space-1-5) var(--space-3-5);border:1.5px solid var(--border);font-size:var(--text-caption);cursor:pointer;background:0 0;border-radius:20px;font-family:inherit;font-weight:500;transition:all .15s;display:flex}.label-picker-dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px}.marker-chip{padding:var(--space-0-5) var(--space-1) var(--space-0-5) var(--space-2-5);background:var(--marker-dim);border:1px solid var(--marker);font-size:var(--text-xs);color:var(--marker);font-variant-numeric:tabular-nums;border-radius:14px;align-items:center;gap:3px;display:inline-flex}.marker-chip-jump{color:var(--text-secondary);font-size:var(--text-xs);font-variant-numeric:tabular-nums;cursor:pointer;padding:var(--space-0-5) var(--space-0-5);background:0 0;border:none;font-family:inherit}.marker-chip-remove{color:var(--text-muted);cursor:pointer;padding:var(--space-0-5);border-radius:var(--radius-full);background:0 0;border:none;align-items:center;display:flex}.marker-chip-remove:active{background:var(--bg-tertiary)}.marker-dot{border-radius:var(--radius-full);background:var(--marker);width:5px;height:5px}.recording-overlay{z-index:100;padding:var(--space-4);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.recording-modal{background:var(--bg-primary);border-radius:var(--radius-2xl);-webkit-overflow-scrolling:touch;width:100%;max-width:400px;max-height:calc(100vh - 32px);overflow-y:auto}.recording-header{padding:var(--space-4) var(--space-4) var(--space-2);justify-content:space-between;align-items:center;display:flex}.recording-title{font-size:var(--text-xl);font-weight:600}.recording-path{padding:0 var(--space-4) var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.recording-content{padding:var(--space-6) var(--space-4) var(--space-8);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.recording-mic-btn{border-radius:var(--radius-full);background:var(--danger);color:#fff;cursor:pointer;border:none;justify-content:center;align-items:center;width:80px;height:80px;transition:transform .15s;display:flex}.recording-mic-btn:active{transform:scale(.95)}.recording-stop-btn{border-radius:var(--radius-full);background:var(--danger);color:#fff;cursor:pointer;border:none;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.recording-indicator{align-items:center;gap:var(--space-3);display:flex}.recording-pulse{border-radius:var(--radius-full);background:var(--danger);width:12px;height:12px;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.recording-time{font-size:var(--text-3xl);font-variant-numeric:tabular-nums;font-weight:600}.recording-hint{font-size:var(--text-caption);color:var(--text-muted)}.recording-preview-info{font-size:var(--text-md);font-weight:500}.recording-actions{gap:var(--space-1-5);display:flex}.recording-action-btn{justify-content:center;align-items:center;gap:var(--space-1);min-width:0;font-size:var(--text-caption);padding:var(--space-2) var(--space-1);flex:1 1 0;min-height:44px;display:inline-flex}.recording-success{border-radius:var(--radius-full);background:var(--success);color:#fff;justify-content:center;align-items:center;width:72px;height:72px;display:flex}.recording-error{text-align:center;color:var(--danger);font-size:var(--text-body-sm);flex-direction:column;align-items:center;display:flex}.recording-section{width:100%}.recording-section-label{font-size:var(--text-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-2);font-weight:600}.section-chips{gap:var(--space-1-5);flex-wrap:wrap;display:flex}.section-chip-group{align-items:center;gap:0;display:inline-flex}.section-chip-group .filter-chip{border-radius:16px 4px 4px 16px}.section-chip-group .filter-chip:only-child{border-radius:var(--radius-2xl)}.section-chip-group:not(:has(.section-number-select)) .filter-chip{border-radius:var(--radius-2xl)}.section-number-select{appearance:none;padding:5px var(--space-2);border:1.5px solid var(--accent);color:var(--accent);font-size:var(--text-sm);cursor:pointer;text-align:center;background:#818cf826;border-left:none;border-radius:0 16px 16px 0;min-height:30px;font-family:inherit;font-weight:600}.recording-filename-preview{width:100%;padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);word-break:break-all;text-align:center;font-family:monospace}.batch-grid{padding:var(--space-3);gap:var(--space-0-5);flex-direction:column;display:flex}.grid-header{grid-template-columns:72px repeat(var(--cols), 1fr);gap:var(--space-0-5);margin-bottom:var(--space-0-5);display:grid}.grid-header-corner{padding:var(--space-1-5) var(--space-1)}.grid-header-cell{padding:var(--space-1-5) var(--space-1);font-size:var(--text-xs);text-align:center;color:#fff;border-radius:6px 6px 0 0;font-weight:700}.grid-header-cell.col-s{background:var(--sopran)}.grid-header-cell.col-a{background:var(--alt)}.grid-header-cell.col-t{background:var(--tenor)}.grid-header-cell.col-b{background:var(--bass)}.grid-header-cell.col-satb{background:var(--satb)}.grid-header-cell.col-piano{background:var(--piano)}.grid-row{grid-template-columns:72px repeat(var(--cols), 1fr);gap:var(--space-0-5);display:grid}.grid-section-label{padding:var(--space-2-5) var(--space-1-5);font-size:var(--text-xs);color:var(--text-secondary);background:var(--bg-secondary);border-radius:6px 0 0 6px;align-items:center;font-weight:600;line-height:1.2;display:flex}.grid-cell{padding:var(--space-2) var(--space-1);border-radius:var(--radius-xs);text-align:center;cursor:pointer;justify-content:center;align-items:center;min-height:44px;transition:all .15s;display:flex}.grid-cell:active{transform:scale(.95)}.grid-cell.has-file .cell-icon{border-radius:var(--radius-full);justify-content:center;align-items:center;width:28px;height:28px;display:flex}.grid-cell.voice-s{background:#ec489914}.grid-cell.voice-s .cell-icon{color:var(--sopran);background:#ec489933}.grid-cell.voice-a{background:#f9731614}.grid-cell.voice-a .cell-icon{color:var(--alt);background:#f9731633}.grid-cell.voice-t{background:#3b82f614}.grid-cell.voice-t .cell-icon{color:var(--tenor);background:#3b82f633}.grid-cell.voice-b{background:#22c55e14}.grid-cell.voice-b .cell-icon{color:var(--bass);background:#22c55e33}.grid-cell.voice-satb{background:#8b5cf614}.grid-cell.voice-satb .cell-icon{color:var(--satb);background:#8b5cf633}.grid-cell.voice-piano{background:#a78bfa14}.grid-cell.voice-piano .cell-icon{color:var(--piano);background:#a78bfa33}.grid-cell.empty{background:var(--bg-secondary);opacity:.3;cursor:default}.grid-cell.empty:active{transform:none}.grid-cell.playing .cell-icon{animation:1.5s ease-in-out infinite pulse-play}@keyframes pulse-play{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.playing-bars--sm{height:12px}.playing-bars--sm span{width:2px}.batch-section-divider{padding:var(--space-2-5) var(--space-4) var(--space-1-5);font-size:var(--text-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-top:1px solid var(--border);margin-top:var(--space-2);font-weight:600}.batch-extra-files{padding:0 var(--space-3) var(--space-3)}.batch-extra-file{align-items:center;gap:var(--space-2-5);padding:var(--space-2-5) var(--space-3);border-radius:var(--radius-md);background:var(--bg-secondary);margin-bottom:var(--space-1);cursor:pointer;transition:background .1s;display:flex}.batch-extra-file:active{background:var(--bg-tertiary)}.batch-extra-file--active{background:#818cf814}.batch-extra-name{font-size:var(--text-caption);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.player-lyrics-divider{background:var(--border);height:1px;margin:20px -20px 16px}.player-content-area{padding-top:var(--space-4);padding-bottom:var(--space-6)}.player-panel{margin-bottom:var(--space-5)}.player-panel-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2-5);display:flex}.player-panel-icon{color:var(--success);align-items:center;display:flex}.player-panel-icon--lyrics{color:#06b6d4}.player-panel-title{font-size:var(--text-body-sm);color:var(--text-primary);font-weight:600}.player-panel-badge{font-size:var(--text-2xs);color:var(--text-muted);align-items:center;gap:var(--space-1);margin-left:auto;display:flex}.player-notes-display{padding:var(--space-3);border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border);font-size:var(--text-body-sm);color:var(--text-secondary);white-space:pre-wrap;line-height:1.6}.player-section-card{border-radius:var(--radius-xl);padding:var(--space-4);background:#06b6d41a;border:1px solid #06b6d440;transition:opacity .3s}.player-section-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.player-section-name{font-size:var(--text-caption);color:#06b6d4;font-weight:600}.player-section-time{font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.player-section-lyrics{font-size:var(--text-lg);color:var(--text-primary);white-space:pre-wrap;line-height:2}.player-section-note{margin-top:var(--space-3);padding:var(--space-2) var(--space-2-5);border-radius:var(--radius-sm);border-left:3px solid var(--success);font-size:var(--text-sm);color:var(--text-secondary);background:#22c55e1a;line-height:1.5}.player-next-section{border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border);padding:var(--space-3) var(--space-3-5);opacity:.5;margin-top:var(--space-3)}.player-next-label{font-size:var(--text-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1-5);font-weight:600}.player-next-lyrics{font-size:var(--text-caption);color:var(--text-muted);white-space:pre-wrap;line-height:1.7}.player-empty-hint{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-5);border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px dashed var(--border);color:var(--text-muted);font-size:var(--text-caption);cursor:pointer;display:flex}.player-empty-hint:active{background:var(--bg-tertiary)}.player-edit-area{width:100%;min-height:80px;padding:var(--space-3);border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);font-size:var(--text-body-sm);resize:vertical;font-family:inherit;line-height:1.6}.player-edit-area::placeholder{color:var(--text-muted)}.player-edit-area:focus{border-color:var(--success);outline:none}.player-edit-area--lyrics:focus{border-color:#06b6d4}.player-section-edit{border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border);padding:var(--space-3-5);margin-bottom:var(--space-3)}.player-section-edit-header{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-2);align-items:center;gap:var(--space-1-5);font-weight:600;display:flex}.player-section-edit-time{font-size:var(--text-2xs);color:var(--text-muted);font-weight:400}.player-edit-toolbar{gap:var(--space-2);margin-top:var(--space-2-5);justify-content:flex-end;display:flex}.player-edit-toolbar button{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-caption);cursor:pointer;min-height:36px;font-family:inherit;font-weight:500}.player-btn-cancel{border:1px solid var(--border);color:var(--text-secondary);background:0 0}.player-btn-save{background:var(--accent);color:#fff;border:none}.player-eq-bars{align-items:flex-end;gap:var(--space-0-5);height:12px;display:inline-flex}.player-eq-bar{background:#06b6d4;border-radius:1px;width:3px}.player-eq-bar:first-child{height:40%;animation:.8s ease-in-out infinite playerEq}.player-eq-bar:nth-child(2){height:80%;animation:.8s ease-in-out .2s infinite playerEq}.player-eq-bar:nth-child(3){height:55%;animation:.8s ease-in-out .4s infinite playerEq}@keyframes playerEq{0%,to{height:40%}50%{height:100%}}
