:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #0a0a0a;--bg-secondary: #111;--bg-tertiary: #1a1a1a;--bg-elevated: #222;--bg-surface: #2a2a2a;--bg-hover: #333;--bg-dark: #0d0d0d;--bg-panel: #141414;--border-color: #333;--border-color-light: #3a3a3a;--border-color-focus: #646cff;--text-primary: #e0e0e0;--text-secondary: #ccc;--text-muted: #888;--accent-primary: #646cff;--accent-primary-hover: #535bf2;--accent-success: #00ff00;--accent-success-light: #00cc00;--accent-success-dim: #00ff0020;--accent-success-dark: #006600;--accent-success-darker: #004400;--accent-success-hover: #00ff0040;--accent-error: #ff4444;--accent-error-light: #ff6666;--accent-error-bg: #8b0000;--accent-warning: #ffc800;--accent-blue: #0099ff;--accent: #00ff00;--accent-dim: #00ff0040;--accent-dark: #006600;--accent-glow: #00ff0080;--border: #333;--error: #ff4444;--warning: #ffc800;--text: #e0e0e0;--text-dim: #666;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--transition-fast: .15s ease;--transition-normal: .25s ease;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem}a{font-weight:500;color:var(--accent-primary);text-decoration:inherit}a:hover{color:var(--accent-primary-hover)}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:var(--radius-lg);border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-tertiary);cursor:pointer;transition:border-color var(--transition-normal)}button:hover{border-color:var(--accent-primary)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}[data-theme=light]{color-scheme:light;color:#213547;background-color:#f8faf8;--bg-primary: #f8faf8;--bg-secondary: #f0f4f0;--bg-tertiary: #e8ece8;--bg-elevated: #dfe5df;--bg-surface: #d5ddd5;--bg-hover: #e0e8e0;--bg-dark: #2a3a2a;--bg-panel: #e0e8e0;--border-color: #b8c8b8;--border-color-light: #c8d4c8;--border-color-focus: #00aa00;--border: #c0d0c0;--text-primary: #1a2a1a;--text-secondary: #2a4a2a;--text-muted: #4a6a4a;--accent: #008800;--accent-dim: #00880040;--accent-dark: #006600;--accent-glow: #00880060;--accent-success: #008800;--accent-success-light: #00aa00;--accent-success-dim: #00880015;--accent-success-dark: #006600;--accent-success-darker: #004400;--accent-success-hover: #00880025;--error: #cc0000;--accent-error: #cc0000;--accent-error-light: #dd2222;--accent-error-bg: #ffeeee;--warning: #cc9900;--text: #1a2a1a;--text-dim: #6a8a6a}[data-theme=light] a:hover{color:#0a0}[data-theme=light] button{background-color:#e8ece8}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){color:#213547;background-color:#f8faf8;--bg-primary: #f8faf8;--bg-secondary: #f0f4f0;--bg-tertiary: #e8ece8;--bg-elevated: #dfe5df;--bg-surface: #d5ddd5;--bg-hover: #e0e8e0;--bg-dark: #2a3a2a;--bg-panel: #e0e8e0;--border-color: #b8c8b8;--border-color-light: #c8d4c8;--border-color-focus: #00aa00;--border: #c0d0c0;--text-primary: #1a2a1a;--text-secondary: #2a4a2a;--text-muted: #4a6a4a;--accent: #008800;--accent-dim: #00880040;--accent-dark: #006600;--accent-glow: #00880060;--accent-success: #008800;--accent-success-light: #00aa00;--accent-success-dim: #00880015;--accent-success-dark: #006600;--accent-success-darker: #004400;--accent-success-hover: #00880025;--error: #cc0000;--accent-error: #cc0000;--accent-error-light: #dd2222;--accent-error-bg: #ffeeee;--warning: #cc9900;--text: #1a2a1a;--text-dim: #6a8a6a}:root:not([data-theme=dark]) a:hover{color:#0a0}:root:not([data-theme=dark]) button{background-color:#e8ece8}}.public-key-display{display:inline-flex;align-items:center;gap:.25rem;font-family:monospace;font-size:.9em}.public-key-display.has-username{font-family:inherit}.public-key-display.clickable{cursor:pointer}.public-key-display.clickable:hover{text-decoration:underline}.public-key-tags{display:inline-flex;gap:.125rem;margin-left:.25rem}.public-key-tag{font-size:.85em}.self-badge{margin-right:.25rem}.public-key-display.is-self{font-weight:500}.public-key-display.is-blocked .public-key-text{text-decoration:line-through;opacity:.6}.public-key-inline-tags{display:inline-flex;gap:.125rem;margin-right:.25rem}.table-owner-cell{font-size:.85em}.identity-manager{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);background:var(--bg-tertiary);border-radius:var(--radius-lg);max-height:500px;overflow:hidden}.identity-manager-header{display:flex;justify-content:space-between;align-items:center}.identity-manager-header h3{margin:0;font-size:1.1em}.add-contact-btn{width:32px;height:32px;padding:0;font-size:1.5em;line-height:1;border-radius:50%}.identity-filter-bar{display:flex;gap:.5rem;flex-wrap:wrap}.filter-btn{padding:.4em .8em;font-size:.85em;background:#2a2a2a;border:1px solid #3a3a3a}.filter-btn.active{background:#646cff;border-color:#646cff}.filter-btn.filter-blocked{margin-left:auto}.identity-list{display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1}.identity-empty{text-align:center;color:#888;padding:2rem}.identity-item{background:#2a2a2a;border-radius:6px;overflow:hidden}.identity-item-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem;cursor:pointer}.identity-item-header:hover{background:#333}.identity-item-info{display:flex;flex-direction:column;gap:.25rem;overflow:hidden}.identity-item-name{font-weight:500}.identity-last-seen{font-size:.8em;color:#888}.identity-item-actions{display:flex;gap:.5rem}.identity-action-btn{width:32px;height:32px;padding:0;font-size:1em;border-radius:4px;background:transparent;border:none}.identity-action-btn:hover{background:#444}.identity-item-details{padding:.75rem;border-top:1px solid #3a3a3a;display:flex;flex-direction:column;gap:.75rem}.identity-detail-row{display:flex;flex-direction:column;gap:.25rem}.identity-detail-label{font-size:.8em;color:#888}.identity-detail-value{font-size:.9em;word-break:break-all}.identity-detail-value code{font-family:monospace;font-size:.85em;padding:.25rem;background:#1a1a1a;border-radius:4px;display:block;overflow-x:auto}.identity-tags{display:flex;gap:.5rem}.tag-toggle{width:36px;height:36px;padding:0;font-size:1.2em;border-radius:4px;background:#1a1a1a;border:1px solid #3a3a3a;opacity:.5}.tag-toggle.active{opacity:1;border-color:#646cff}.tag-toggle:hover{opacity:1}.identity-notes-edit textarea{width:100%;padding:.5rem;background:#1a1a1a;border:1px solid #3a3a3a;border-radius:4px;color:inherit;font-family:inherit;font-size:.9em;resize:vertical}.identity-notes-actions{display:flex;gap:.5rem;margin-top:.5rem}.identity-notes-actions button{padding:.4em .8em;font-size:.85em}.identity-notes-display{padding:.5rem;background:#1a1a1a;border-radius:4px;min-height:2em;cursor:pointer;font-size:.9em}.identity-notes-display:hover{background:#222}.notes-placeholder{color:#666;font-style:italic}.identity-item-footer{padding-top:.5rem;border-top:1px solid #3a3a3a}.identity-delete-btn{background:#8b0000;color:#fff;padding:.4em .8em;font-size:.85em}.identity-delete-btn:hover{background:#a00000}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#1a1a1a;border-radius:12px;max-width:450px;width:90%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid #3a3a3a}.modal-header h3{margin:0}.modal-close{width:32px;height:32px;padding:0;font-size:1.5em;line-height:1;background:transparent;border:none}.modal-tabs{display:flex;border-bottom:1px solid #3a3a3a}.modal-tab{flex:1;padding:.75rem;background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;cursor:pointer}.modal-tab.active{border-bottom-color:#646cff}.modal-body{padding:1rem;overflow-y:auto}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-size:.9em;color:#888}.form-group input{width:100%;padding:.75rem;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:6px;color:inherit;font-family:inherit;font-size:1em;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#646cff}.form-group input.input-error{border-color:#f44}.error-message{color:#f44;font-size:.9em;margin-bottom:1rem}.primary-btn{width:100%;padding:12px;background:var(--accent);border:none;border-radius:4px;color:#000;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.primary-btn:hover:not(:disabled){background:var(--accent-bright)}.scan-tab{display:flex;flex-direction:column;gap:1rem}.video-container{position:relative;width:100%;aspect-ratio:1;background:#000;border-radius:8px;overflow:hidden}.video-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#666}.scan-hint{text-align:center;font-size:.9em;color:#888}.share-tab{display:flex;flex-direction:column;align-items:center;gap:1rem}.qr-display{background:#fff;padding:1rem;border-radius:8px}.share-key{display:flex;gap:.5rem;width:100%;align-items:center}.public-key-code{flex:1;padding:.75rem;background:#2a2a2a;border-radius:6px;font-family:monospace;font-size:.75em;word-break:break-all;overflow:hidden}.copy-btn{padding:.75rem 1rem;white-space:nowrap}.share-hint{text-align:center;font-size:.9em;color:#888}.not-logged-in{text-align:center;color:#888;padding:2rem}.animate-spin{animation:spin 1s linear infinite}.toast-container{position:fixed;top:16px;right:16px;z-index:10000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;background:var(--bg-secondary);border:1px solid var(--border-color);box-shadow:0 4px 12px #0000004d;min-width:250px;max-width:400px;pointer-events:auto;animation:toast-enter .3s ease-out}.toast-exit{animation:toast-exit .3s ease-out forwards}@keyframes toast-enter{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toast-exit{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.toast-icon{font-size:16px;flex-shrink:0}.toast-message{flex:1;font-size:14px;color:var(--text-primary)}.toast-dismiss{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:18px;padding:0;line-height:1;opacity:.7;transition:opacity .2s}.toast-dismiss:hover{opacity:1}.toast-success{border-left:4px solid #22c55e}.toast-success .toast-icon{color:#22c55e}.toast-error{border-left:4px solid #ef4444}.toast-error .toast-icon{color:#ef4444}.toast-info{border-left:4px solid #3b82f6}.toast-info .toast-icon{color:#3b82f6}.toast-warning{border-left:4px solid #f59e0b}.toast-warning .toast-icon{color:#f59e0b}.equalizer-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.equalizer-panel{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:20px;min-width:500px;max-width:90vw}.equalizer-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.equalizer-header h3{margin:0;font-size:16px;color:var(--text-primary);flex-shrink:0}.equalizer-controls{display:flex;align-items:center;gap:12px;flex:1}.equalizer-toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);cursor:pointer}.equalizer-toggle input{cursor:pointer}.equalizer-preset-select{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;padding:4px 8px;color:var(--text-primary);font-size:12px;cursor:pointer}.equalizer-reset-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;padding:4px 12px;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.equalizer-reset-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.equalizer-close{background:none;border:none;color:var(--text-dim);font-size:24px;cursor:pointer;padding:0;line-height:1;margin-left:auto}.equalizer-close:hover{color:var(--text-primary)}.equalizer-visualizer{overflow:hidden;max-height:220px;transition:max-height .3s ease-out,opacity .3s ease-out;opacity:1}.equalizer-visualizer.collapsed{max-height:0;opacity:0}.equalizer-bands{display:flex;gap:8px;justify-content:center;align-items:flex-end;padding:20px 0}.equalizer-band{display:flex;flex-direction:column;align-items:center;gap:8px}.equalizer-slider{-webkit-appearance:none;appearance:none;width:24px;height:120px;background:var(--bg-tertiary);border-radius:4px;cursor:pointer;writing-mode:vertical-lr;direction:rtl}.equalizer-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:10px;background:var(--accent);border-radius:2px;cursor:grab;box-shadow:0 1px 3px #0000004d}.equalizer-slider::-webkit-slider-thumb:active{cursor:grabbing}.equalizer-slider::-moz-range-thumb{width:24px;height:10px;background:var(--accent);border-radius:2px;cursor:grab;border:none;box-shadow:0 1px 3px #0000004d}.equalizer-slider::-moz-range-thumb:active{cursor:grabbing}.equalizer-label{font-size:10px;color:var(--text-dim);font-weight:500}.equalizer-value{font-size:10px;color:var(--text-secondary);font-family:monospace;min-width:28px;text-align:center}.equalizer-scale{display:flex;justify-content:space-between;padding:0 10px;font-size:10px;color:var(--text-muted)}.bass-boost-section{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--border);margin-top:12px}.bass-boost-label{font-size:13px;color:var(--text-secondary);font-weight:500}.bass-boost-buttons{display:flex;gap:6px}.bass-boost-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;padding:6px 12px;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:all .15s;min-width:44px}.bass-boost-btn:hover{background:var(--bg-hover);border-color:var(--accent-dim)}.bass-boost-btn.active{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600;box-shadow:0 0 12px #00ff004d}.bass-clipping-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);cursor:pointer;margin-left:auto;padding:4px 8px;border-radius:4px;transition:all .15s}.bass-clipping-toggle:hover{background:var(--bg-tertiary)}.bass-clipping-toggle input{cursor:pointer}.bass-clipping-toggle input:disabled{cursor:not-allowed}.bass-clipping-toggle input:disabled+span{opacity:.4}@media(max-width:600px){.equalizer-panel{min-width:auto;width:95vw;padding:16px}.equalizer-header{flex-wrap:wrap}.equalizer-controls{width:100%;order:1;margin-top:8px}.equalizer-close{order:0}.equalizer-bands{gap:4px;overflow-x:auto;padding:16px 0}.equalizer-slider{width:20px;height:100px}}@keyframes skeleton-pulse{0%{opacity:.4}50%{opacity:.7}to{opacity:.4}}.skeleton{background-color:var(--bg-tertiary);animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:4px}.skeleton-text{height:14px;width:100%;border-radius:4px}.skeleton-rectangular{border-radius:4px}.skeleton-circular{border-radius:50%}.skeleton-row{display:flex;gap:16px;padding:12px 8px;border-bottom:1px solid var(--border-color)}.skeleton-row .skeleton{flex:1;min-width:40px}.skeleton-row .skeleton:first-child{flex:0 0 24px;max-width:24px}.skeleton-row .skeleton:nth-child(2){flex:2}.skeleton-table{background-color:var(--bg-primary);border-radius:8px;padding:8px}.skeleton-header{display:flex;gap:16px;padding:12px 8px;border-bottom:1px solid var(--border-color);margin-bottom:4px}.skeleton-header .skeleton{flex:1;min-width:40px;height:16px}.skeleton-header .skeleton:first-child{flex:0 0 24px;max-width:24px}.skeleton-header .skeleton:nth-child(2){flex:2}.skeleton-details{padding:16px;background-color:var(--bg-primary);border-radius:8px}.skeleton-details-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.skeleton-details-tabs{display:flex;gap:8px;margin-bottom:16px}.skeleton-details-content{display:flex;flex-direction:column;gap:12px}.skeleton-file-item{display:flex;align-items:center;gap:12px;padding:8px;background-color:var(--bg-secondary);border-radius:4px}.skeleton-file-item .skeleton:first-child{flex-shrink:0}.skeleton-file-item .skeleton:last-child{flex-shrink:0}.skeleton-card{background-color:var(--bg-secondary);border-radius:8px;overflow:hidden;width:160px}.skeleton-card-content{padding:8px;display:flex;flex-direction:column;gap:6px}.skeleton{background-color:var(--bg-tertiary);background-image:linear-gradient(90deg,var(--bg-tertiary) 0%,var(--bg-elevated) 50%,var(--bg-tertiary) 100%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.genre-autocomplete{position:relative;width:100%}.genre-autocomplete-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;max-height:240px;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:100}.genre-autocomplete-label{padding:8px 12px 4px;font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.genre-autocomplete-option{display:block;width:100%;padding:8px 12px;text-align:left;background:transparent;border:none;color:var(--text-secondary);font-size:14px;cursor:pointer;transition:background .1s ease,color .1s ease}.genre-autocomplete-option:hover,.genre-autocomplete-option.highlighted{background:var(--bg-hover);color:var(--text-primary)}.genre-autocomplete-option:first-of-type{border-radius:6px 6px 0 0}.genre-autocomplete-option:last-of-type{border-radius:0 0 6px 6px}.genre-autocomplete-option:only-of-type{border-radius:6px}.genre-match{background:#32cd3240;color:var(--accent);padding:1px 2px;border-radius:2px}.genre-autocomplete-hint{padding:6px 12px;font-size:11px;color:var(--text-dim);border-top:1px solid var(--border);text-align:center}.genre-autocomplete-dropdown::-webkit-scrollbar{width:8px}.genre-autocomplete-dropdown::-webkit-scrollbar-track{background:transparent}.genre-autocomplete-dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.genre-autocomplete-dropdown::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.scroll-picker{position:relative;width:100%;overflow:hidden;background:var(--bg-dark);border-radius:8px;-webkit-user-select:none;user-select:none;touch-action:pan-y}.scroll-picker-container{height:100%;overflow-y:scroll;scroll-snap-type:y mandatory;scrollbar-width:none;-ms-overflow-style:none;cursor:grab}.scroll-picker-container::-webkit-scrollbar{display:none}.scroll-picker-container.dragging{cursor:grabbing;scroll-behavior:auto}.scroll-picker-item{display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:500;color:var(--text-dim);scroll-snap-align:center;transition:transform .15s,opacity .15s;cursor:pointer}.scroll-picker-item:hover{color:var(--text-secondary)}.scroll-picker-item.selected{color:var(--accent);font-weight:600;transform:scale(1.1)}.scroll-picker-highlight{position:absolute;left:8px;right:8px;background:#00ff001a;border-top:1px solid rgba(0,255,0,.3);border-bottom:1px solid rgba(0,255,0,.3);border-radius:4px;pointer-events:none;z-index:1}.scroll-picker-fade{position:absolute;left:0;right:0;height:40%;pointer-events:none;z-index:2}.scroll-picker-fade-top{top:0;background:linear-gradient(to bottom,var(--bg-dark) 0%,rgba(var(--bg-dark-rgb),.8) 30%,transparent 100%)}.scroll-picker-fade-bottom{bottom:0;background:linear-gradient(to top,var(--bg-dark) 0%,rgba(var(--bg-dark-rgb),.8) 30%,transparent 100%)}@media(max-width:768px){.scroll-picker-item{font-size:20px}}@media(prefers-reduced-motion:reduce){.scroll-picker-item{transition:none}.scroll-picker-container{scroll-behavior:auto}}.audio-visualizer{width:100%;overflow:hidden;border-radius:4px}.audio-visualizer-canvas{width:100%;display:block}.mini-player{position:fixed;bottom:28px;left:0;right:0;background:var(--bg-secondary);border-top:2px solid var(--accent);z-index:500;transition:bottom .15s ease,height .2s ease}.mini-player.expanded{height:auto;max-height:60vh}.mini-player.has-video.expanded{max-height:80vh}.seek-feedback{position:absolute;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 20px;background:#000c;border-radius:12px;z-index:100;animation:seek-feedback-pop .8s ease-out forwards;pointer-events:none}.seek-feedback.forward{right:20%}.seek-feedback.back{left:20%}.seek-feedback-icon{color:var(--accent);display:flex;animation:seek-icon-bounce .3s ease-out}.seek-feedback-text{font-size:14px;font-weight:600;color:var(--text-primary)}@keyframes seek-feedback-pop{0%{opacity:0;transform:translateY(-50%) scale(.8)}20%{opacity:1;transform:translateY(-50%) scale(1.1)}40%{transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(1)}}@keyframes seek-icon-bounce{0%{transform:scale(.5)}50%{transform:scale(1.2)}to{transform:scale(1)}}.mini-player-bar{display:flex;align-items:center;gap:12px;padding:8px 16px;min-height:48px}.mini-player-info{flex:1;min-width:0;cursor:pointer}.mini-player-title{font-size:13px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-player-artist{font-size:11px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-player-progress{flex:1;max-width:300px}.progress-bar-container,.expanded-seek-container{position:relative;flex:1;height:100%}.buffer-bar{position:absolute;top:50%;left:0;height:4px;background:#00ff884d;border-radius:2px;transform:translateY(-50%);pointer-events:none;transition:width .2s ease}.expanded-seek-container .buffer-bar{height:6px}.mini-seek-bar{width:100%;height:4px;-webkit-appearance:none;background:var(--border);border-radius:2px;cursor:pointer;position:relative;z-index:1}.mini-seek-bar::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;background:var(--accent);border-radius:50%;cursor:pointer}.mini-seek-bar::-moz-range-thumb{width:12px;height:12px;background:var(--accent);border-radius:50%;cursor:pointer;border:none}.mini-player-controls{display:flex;align-items:center;gap:4px}.mini-ctrl-btn{background:none;border:none;color:var(--text-dim);font-size:16px;padding:6px 8px;cursor:pointer;border-radius:4px;transition:all .15s}.mini-ctrl-btn:hover{color:var(--text-primary);background:#ffffff0d}.mini-ctrl-play{font-size:18px;color:var(--accent)}.mini-ctrl-play.buffering,.ctrl-btn-play.buffering{cursor:wait}.buffer-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--accent-dim);border-top-color:var(--accent);border-radius:50%;animation:buffer-spin .8s linear infinite}.ctrl-btn-play .buffer-spinner{width:20px;height:20px;border-width:3px}@keyframes buffer-spin{to{transform:rotate(360deg)}}.mini-ctrl-close{font-size:20px;color:var(--text-dim)}.mini-ctrl-close:hover{color:#ff6b6b}.mini-player-expanded{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px;max-height:calc(60vh - 72px);overflow-y:auto}.mini-player-video{width:100%;max-height:50vh;object-fit:contain;background:#000;border-radius:4px}.mini-player-video.hidden{display:none}.mini-player-video.visible{display:block}.expanded-seek{display:flex;align-items:center;gap:8px}.expanded-seek-bar{width:100%;height:6px;-webkit-appearance:none;background:var(--border);border-radius:3px;cursor:pointer}.expanded-seek-bar::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:pointer}.expanded-seek-bar::-moz-range-thumb{width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:pointer;border:none}.time-label{font-size:11px;color:var(--text-dim);font-family:monospace;min-width:40px}.expanded-controls{display:flex;align-items:center;justify-content:center;gap:8px}.ctrl-btn{background:none;border:none;color:var(--text-dim);font-size:18px;padding:8px 10px;cursor:pointer;border-radius:4px;transition:all .15s}.ctrl-btn:hover{color:var(--text-primary);background:#ffffff0d}.ctrl-btn.active{color:var(--accent)}.ctrl-btn-play{font-size:24px;color:var(--accent)}.volume-control{display:flex;align-items:center;gap:6px}.volume-slider{width:80px;height:4px;-webkit-appearance:none;background:var(--border);border-radius:2px;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;background:var(--accent);border-radius:50%;cursor:pointer}.volume-slider::-moz-range-thumb{width:12px;height:12px;background:var(--accent);border-radius:50%;cursor:pointer;border:none}.speed-btn{font-size:12px;font-weight:600;min-width:40px;padding:4px 8px;background:#ffffff0d;border-radius:4px}.track-counter{font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums}.playlist-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:4px;cursor:pointer;transition:background .15s}.playlist-item:hover{background:#ffffff0d}.playlist-item.active{background:var(--accent-dim)}.playlist-drag-handle{font-size:12px;color:var(--text-muted);cursor:grab;padding:0 2px;opacity:.5;transition:opacity .15s;-webkit-user-select:none;user-select:none}.playlist-item:hover .playlist-drag-handle{opacity:1}.playlist-drag-handle:active{cursor:grabbing}.playlist-item.dragging{opacity:.5;background:var(--accent-dim)}.playlist-item.drag-over{border-top:2px solid var(--accent);margin-top:-2px}.playlist-item[draggable=true]{cursor:pointer}.playlist-num{font-size:11px;color:var(--text-dim);min-width:20px;text-align:right}.playlist-title{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-remove-btn{margin-left:auto;padding:4px;background:transparent;border:none;border-radius:4px;cursor:pointer;color:var(--text-muted);opacity:0;transition:opacity .15s,color .15s,background .15s;display:flex;align-items:center;justify-content:center}.playlist-item:hover .playlist-remove-btn{opacity:1}.playlist-remove-btn:hover{color:var(--danger);background:#ff64641a}.playlist-remove-btn:active{background:#ff646433}.expanded-playlist{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;background:var(--bg-dark);border-radius:6px;padding:8px}.playlist-artist{font-size:11px;color:var(--text-muted);margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.playlist-header{display:flex;justify-content:space-between;align-items:center;padding:4px 8px 8px;border-bottom:1px solid var(--border);margin-bottom:4px}.playlist-header-title{font-size:12px;font-weight:500;color:var(--text-primary)}.playlist-header-count{font-size:11px;color:var(--text-muted)}.mini-queue-btn{position:relative;display:flex;align-items:center;gap:2px}.queue-icon{font-size:14px}.queue-badge{font-size:10px;font-weight:600;background:var(--accent);color:#000;border-radius:8px;padding:1px 5px;min-width:16px;text-align:center}.subtitle-control{display:flex;align-items:center}.subtitle-select{background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;color:var(--text-primary);font-size:12px;padding:4px 8px;cursor:pointer;min-width:80px}.subtitle-select:hover{border-color:var(--accent)}.subtitle-select:focus{outline:none;border-color:var(--accent)}.subtitle-select option{background:var(--bg-dark);color:var(--text-primary)}.mini-ctrl-btn.active{color:var(--accent)}video::cue{background:#000c;color:#fff;font-size:1.1em;padding:4px 8px;border-radius:4px}@media(max-width:768px){.details-panel{height:50vh;max-height:60vh}.details-title h2{max-width:200px;font-size:14px}.meta-grid{grid-template-columns:1fr}.mini-player-bar{padding:8px 12px;gap:8px}.mini-player-progress{display:none}.mini-player-info{max-width:40%;flex:1}.mini-player-title{font-size:12px}.mini-player-artist{font-size:10px}.mini-ctrl-btn{padding:10px 12px;font-size:18px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.mini-ctrl-play{font-size:22px}.mini-ctrl-close{font-size:24px}.mini-player-bar .mini-queue-btn{display:none}.mini-player-expanded{max-height:calc(80vh - 60px);padding:16px 12px}.mini-player-video{max-height:35vh}.expanded-controls{flex-wrap:wrap;gap:4px;justify-content:center}.ctrl-btn{padding:12px 14px;font-size:20px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.ctrl-btn-play{font-size:28px;padding:12px 16px}.volume-control{flex-wrap:nowrap;width:100%;justify-content:center;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.volume-slider{width:120px;height:8px}.volume-slider::-webkit-slider-thumb{width:20px;height:20px}.volume-slider::-moz-range-thumb{width:20px;height:20px}.expanded-seek-bar{height:10px}.expanded-seek-bar::-webkit-slider-thumb{width:20px;height:20px}.expanded-seek-bar::-moz-range-thumb{width:20px;height:20px}.time-label{font-size:12px}.subtitle-control{width:100%;margin-top:8px;justify-content:center}.subtitle-select{min-width:120px;padding:8px 12px;font-size:14px}.expanded-playlist{max-height:35vh}.playlist-item{padding:10px 12px;min-height:44px}.playlist-title{font-size:14px}.playlist-artist{font-size:12px;max-width:100px}.track-counter{width:100%;text-align:center;margin-top:8px}}@media(max-width:480px){.mini-player-bar{padding:6px 8px;gap:6px}.mini-player-info{max-width:35%}.mini-player-title{font-size:11px}.mini-ctrl-btn{padding:8px 10px;min-width:40px;min-height:40px}.mini-player-bar button[title=Previous],.mini-player-bar button[title=Next]{display:none}.expanded-controls{gap:2px}.ctrl-btn{padding:10px 12px;min-width:40px;min-height:40px}.volume-slider{width:100px}.mini-player-video,.expanded-playlist{max-height:30vh}}.visualizer-section{display:flex;align-items:center;gap:8px;padding:8px 0;margin:4px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.visualizer-section .audio-visualizer{flex:1;background:var(--bg-dark);border-radius:4px}.visualizer-mode-selector{display:flex;flex-direction:column;gap:4px}.viz-mode-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:4px 8px;border-radius:4px;cursor:pointer;font-size:10px;transition:all .15s ease;min-width:36px}.viz-mode-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.viz-mode-btn.active{background:var(--accent);border-color:var(--accent);color:var(--bg-primary)}@media(max-width:480px){.visualizer-section{flex-direction:column;gap:4px}.visualizer-mode-selector{flex-direction:row;width:100%;justify-content:center}}.sleep-timer-control{position:relative}.sleep-timer-badge{font-size:10px;font-weight:600;margin-left:4px;color:var(--accent)}.sleep-timer-menu{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:8px;margin-bottom:8px;min-width:140px;box-shadow:0 4px 12px #0000004d;z-index:600}.sleep-timer-header{font-size:12px;font-weight:600;color:var(--text-primary);padding:4px 8px 8px;border-bottom:1px solid var(--border);margin-bottom:4px;text-align:center}.sleep-timer-active{font-size:13px;font-weight:500;color:var(--accent);padding:8px;text-align:center}.sleep-timer-option{display:block;width:100%;padding:8px 12px;background:transparent;border:none;color:var(--text-primary);font-size:13px;text-align:left;cursor:pointer;border-radius:4px;transition:background .15s ease}.sleep-timer-option:hover{background:var(--bg-hover)}.sleep-timer-option.cancel{color:var(--danger);text-align:center;margin-top:4px;border-top:1px solid var(--border);padding-top:8px;border-radius:0 0 4px 4px}.sleep-timer-option.cancel:hover{background:rgba(var(--danger-rgb, 239, 68, 68),.1)}.sleep-timer-menu-picker{min-width:160px;padding:12px}.sleep-timer-menu-picker .sleep-timer-header{margin-bottom:8px}.sleep-timer-start-btn{display:block;width:100%;padding:10px 16px;margin-top:12px;background:var(--accent);border:none;border-radius:6px;color:var(--bg-primary);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease,transform .1s ease}.sleep-timer-start-btn:hover{background:var(--accent-hover)}.sleep-timer-start-btn:active{transform:scale(.98)}.bookmark-marker{position:absolute;top:50%;transform:translate(-50%,-50%);width:8px;height:16px;background:var(--accent);border:none;border-radius:2px;cursor:pointer;z-index:5;opacity:.8;transition:all .15s ease;padding:0}.bookmark-marker:hover{opacity:1;transform:translate(-50%,-50%) scale(1.2);box-shadow:0 0 6px var(--accent)}.bookmark-marker:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid var(--accent)}.bookmark-count-badge{font-size:9px;font-weight:600;background:var(--accent);color:var(--bg-primary);border-radius:8px;padding:1px 5px;margin-left:2px;min-width:14px;text-align:center}.ctrl-btn.has-bookmarks{color:var(--accent-dim)}.bookmarks-panel{position:fixed;bottom:88px;right:16px;width:320px;max-width:calc(100vw - 32px);background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #0006;z-index:550;overflow:hidden;animation:bookmarks-slide-up .2s ease-out}@keyframes bookmarks-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.bookmarks-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg-dark)}.bookmarks-panel-header h3{margin:0;font-size:14px;font-weight:600;color:var(--text-primary)}.bookmarks-panel-close{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.bookmarks-panel-close:hover{color:var(--text-primary);background:var(--bg-hover)}.bookmark-add-form{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.bookmark-name-input{flex:1;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;padding:8px 12px;color:var(--text-primary);font-size:13px;outline:none;transition:border-color .15s ease}.bookmark-name-input:focus{border-color:var(--accent)}.bookmark-name-input::placeholder{color:var(--text-muted)}.bookmark-add-btn{display:flex;align-items:center;gap:6px;background:var(--accent);border:none;border-radius:6px;padding:8px 12px;color:var(--bg-primary);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease;white-space:nowrap}.bookmark-add-btn:hover{background:var(--accent-hover, #00cc7a);transform:translateY(-1px)}.bookmark-add-btn:active{transform:translateY(0)}.bookmarks-list{max-height:240px;overflow-y:auto;padding:8px}.bookmarks-empty{padding:24px 16px;text-align:center;color:var(--text-muted);font-size:13px;line-height:1.5}.bookmark-item{display:flex;align-items:center;gap:8px;padding:4px;border-radius:6px;transition:background .15s ease}.bookmark-item:hover{background:var(--bg-hover)}.bookmark-jump-btn{flex:1;display:flex;align-items:center;gap:8px;background:none;border:none;padding:8px;cursor:pointer;text-align:left;border-radius:4px;transition:background .15s ease;color:var(--text-primary)}.bookmark-jump-btn:hover{background:var(--bg-dark)}.bookmark-jump-btn svg{color:var(--accent);flex-shrink:0}.bookmark-name{flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bookmark-time{font-size:11px;font-family:monospace;color:var(--text-dim);flex-shrink:0}.bookmark-delete-btn{background:none;border:none;color:var(--text-muted);padding:6px;cursor:pointer;border-radius:4px;transition:all .15s ease;display:flex;align-items:center;justify-content:center;opacity:0}.bookmark-item:hover .bookmark-delete-btn{opacity:1}.bookmark-delete-btn:hover{color:var(--danger);background:rgba(var(--danger-rgb, 239, 68, 68),.1)}@media(max-width:480px){.bookmarks-panel{right:8px;left:8px;width:auto;max-width:none}.bookmark-add-form{flex-direction:column}.bookmark-add-btn{justify-content:center}.bookmark-delete-btn{opacity:1}}.ab-loop-btn.active{color:var(--accent)}.ab-loop-btn.complete{color:var(--accent);background:color-mix(in srgb,var(--accent) 20%,transparent)}.ab-loop-badge{font-size:9px;font-weight:700;background:var(--accent);color:var(--bg-primary);border-radius:3px;padding:1px 4px;margin-left:3px;letter-spacing:.5px}.ab-loop-region{position:absolute;top:50%;transform:translateY(-50%);height:8px;background:color-mix(in srgb,var(--accent) 40%,transparent);border:1px solid var(--accent);border-radius:4px;z-index:4;pointer-events:none}.ab-loop-region.complete{background:color-mix(in srgb,var(--accent) 30%,transparent);animation:ab-loop-pulse 2s ease-in-out infinite}.ab-loop-region.partial{border-style:dashed;opacity:.7}@keyframes ab-loop-pulse{0%,to{background:color-mix(in srgb,var(--accent) 30%,transparent)}50%{background:color-mix(in srgb,var(--accent) 50%,transparent)}}.ab-marker{position:absolute;top:-18px;font-size:10px;font-weight:700;color:var(--accent);background:var(--bg-panel);padding:1px 4px;border-radius:3px;border:1px solid var(--accent);line-height:1}.ab-marker-a{left:-2px;transform:translate(-50%)}.ab-marker-b{right:-2px;transform:translate(50%)}@media(max-width:480px){.ab-marker{font-size:9px;top:-16px;padding:1px 3px}}.log-panel{position:fixed;bottom:28px;left:0;right:0;height:250px;background:var(--bg-dark);border-top:1px solid var(--border);display:flex;flex-direction:column;z-index:999;font-family:Consolas,Monaco,Courier New,monospace}.log-panel-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:linear-gradient(180deg,#2a2a2a,#1a1a1a);border-bottom:1px solid var(--border);flex-shrink:0}.log-panel-title{font-weight:700;color:var(--text-primary);font-size:12px}.log-panel-filters{display:flex;align-items:center;gap:8px}.log-filter-select{background:var(--bg-dark);border:1px solid var(--border);color:var(--text-primary);padding:2px 6px;font-size:11px;border-radius:3px;font-family:inherit}.log-filter-select:focus{outline:none;border-color:var(--accent)}.log-count{font-size:11px;color:var(--text-dim)}.log-panel-actions{display:flex;gap:4px}.log-action-btn{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:2px 6px;font-size:14px;border-radius:3px}.log-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.log-panel-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 0}.log-empty{color:var(--text-dim);text-align:center;padding:20px;font-size:12px}.log-entry{display:flex;gap:8px;padding:1px 12px;font-size:11px;line-height:1.4;white-space:nowrap}.log-entry:hover{background:var(--bg-hover)}.log-timestamp{color:var(--text-dim);flex-shrink:0}.log-level{flex-shrink:0;font-weight:700;width:30px}.log-source{color:var(--blue);flex-shrink:0;min-width:120px;max-width:180px;overflow:hidden;text-overflow:ellipsis}.log-message{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis}.log-level-error .log-message{color:var(--error)}.log-level-warn .log-message{color:var(--warning)}.log-scroll-btn{position:absolute;bottom:10px;left:50%;transform:translate(-50%);background:var(--accent-dim);color:var(--text-primary);border:1px solid var(--accent);padding:4px 12px;font-size:11px;border-radius:4px;cursor:pointer;font-family:inherit}.log-scroll-btn:hover{background:var(--accent);color:var(--bg-dark)}.system-log-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:2px 8px;font-size:11px;border-radius:3px;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:4px}.system-log-btn:hover{border-color:var(--accent);color:var(--text-primary)}.system-log-btn.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text-primary)}.system-log-btn .log-indicator{width:6px;height:6px;border-radius:50%;background:var(--text-dim)}.system-log-btn .log-indicator.has-errors{background:var(--error);animation:pulse-error 1s infinite}.system-log-btn .log-indicator.has-warnings{background:var(--warning)}@keyframes pulse-error{0%,to{opacity:1}50%{opacity:.5}}.app.log-panel-open .main-content{height:calc(100vh - 290px)}.debug-panel{position:fixed;bottom:32px;right:8px;width:420px;max-height:70vh;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;display:flex;flex-direction:column;z-index:900;box-shadow:0 4px 20px #00000080}.debug-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);background:#0000004d}.debug-panel-title{font-size:13px;font-weight:700;color:var(--accent)}.debug-panel-actions{display:flex;gap:4px}.debug-action-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:4px 8px;border-radius:3px;cursor:pointer;font-size:12px;transition:all .15s}.debug-action-btn:hover:not(:disabled){background:#ffffff0d;color:var(--text-primary)}.debug-action-btn:disabled{opacity:.5;cursor:not-allowed}.debug-action-btn .spin{animation:spin 1s linear infinite}.debug-panel-content{flex:1;overflow-y:auto;padding:12px}.debug-section{margin-bottom:16px}.debug-section:last-child{margin-bottom:0}.debug-section-title{font-size:11px;font-weight:700;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin:0 0 8px;padding-bottom:4px;border-bottom:1px solid var(--border)}.debug-grid{display:flex;flex-direction:column;gap:6px}.debug-item{display:flex;justify-content:space-between;align-items:flex-start;padding:6px 8px;background:#0003;border-radius:4px;gap:12px}.debug-label{font-size:11px;color:var(--text-dim);flex-shrink:0}.debug-value{font-size:11px;color:var(--text-primary);text-align:right;word-break:break-all}.debug-value.active{color:var(--success)}.debug-value.error{color:var(--error)}.debug-value-mono{font-family:Monaco,Consolas,monospace;font-size:10px}.debug-value-small{font-size:9px;color:var(--text-dim);max-width:250px;overflow:hidden;text-overflow:ellipsis}.debug-inline-btn{display:inline-flex;align-items:center;gap:4px;background:#ffffff0d;border:1px solid var(--border);color:var(--text-dim);padding:2px 6px;border-radius:3px;cursor:pointer;font-size:10px;margin-left:8px;transition:all .15s}.debug-inline-btn:hover:not(:disabled){background:#ff646433;border-color:var(--error);color:var(--error)}.debug-inline-btn:disabled{opacity:.5;cursor:not-allowed}.debug-panel-content::-webkit-scrollbar{width:6px}.debug-panel-content::-webkit-scrollbar-track{background:transparent}.debug-panel-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.debug-panel-content::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.app.log-panel-open .debug-panel{bottom:282px}@media(max-width:768px){.debug-panel{left:8px;right:8px;width:auto;max-height:60vh}}.identity-manager{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;width:90vw;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #000c}.identity-manager-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%)}.identity-manager-header h3{margin:0;color:var(--accent);font-size:18px}.identity-manager-toolbar{display:flex;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--bg-dark)}.identity-search{flex:1;background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;padding:8px 12px;color:var(--text);font-size:13px}.identity-search:focus{outline:none;border-color:var(--accent)}.btn-add-contact{background:var(--accent);color:#000;border:none;border-radius:4px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-add-contact:hover{background:var(--accent-bright)}.identity-filter-bar{display:flex;gap:4px;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--bg-primary);flex-wrap:wrap}.identity-filter-bar .filter-btn{background:transparent;border:1px solid var(--border);border-radius:4px;padding:6px 12px;color:var(--text-dim);font-size:12px;cursor:pointer;transition:all .15s}.identity-filter-bar .filter-btn:hover{border-color:var(--accent);color:var(--accent)}.identity-filter-bar .filter-btn.active{background:var(--accent);border-color:var(--accent);color:#000}.identity-filter-bar .filter-btn.filter-blocked.active{background:var(--error);border-color:var(--error);color:#fff}.identity-filter-bar .filter-btn.filter-recent.active{background:var(--blue);border-color:var(--blue);color:#fff}.identity-list{flex:1;overflow-y:auto;padding:8px 0}.identity-empty{text-align:center;padding:40px 20px;color:var(--text-dim)}.identity-item{border-bottom:1px solid var(--border)}.identity-item:last-child{border-bottom:none}.identity-item-header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;cursor:pointer;transition:background .15s}.identity-item-header:hover{background:#00ff000d}.identity-item.expanded .identity-item-header{background:#00ff0014}.identity-item-info{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.identity-item-name{font-size:14px}.identity-last-seen{font-size:11px;color:var(--text-dim)}.identity-item-actions{display:flex;gap:8px;align-items:center}.identity-action-btn{background:transparent;border:1px solid var(--border);border-radius:4px;width:32px;height:32px;cursor:pointer;transition:all .15s;font-size:14px}.identity-action-btn:hover{border-color:var(--accent);background:#00ff001a}.identity-action-btn.chat-btn:hover{border-color:var(--blue);background:#0064ff1a}.identity-item-details{padding:16px 20px;background:var(--bg-primary);border-top:1px solid var(--border)}.identity-detail-row{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.identity-detail-row:last-child{margin-bottom:0}.identity-detail-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.identity-detail-value{font-size:13px;color:var(--text);word-break:break-all}code.identity-detail-value{font-family:monospace;background:var(--bg-dark);padding:8px;border-radius:4px;font-size:11px;-webkit-user-select:all;user-select:all}.identity-tags{display:flex;gap:8px}.tag-toggle{width:36px;height:36px;border:1px solid var(--border);border-radius:4px;background:transparent;cursor:pointer;font-size:16px;transition:all .15s;opacity:.5}.tag-toggle:hover{opacity:1;border-color:var(--accent)}.tag-toggle.active{opacity:1;background:#0f03;border-color:var(--accent)}.identity-notes-display{background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;padding:12px;min-height:60px;cursor:pointer;font-size:13px;transition:border-color .15s}.identity-notes-display:hover{border-color:var(--accent)}.identity-notes-display .notes-placeholder{color:var(--text-dim);font-style:italic}.identity-notes-edit textarea{width:100%;background:var(--bg-dark);border:1px solid var(--accent);border-radius:4px;padding:12px;color:var(--text);font-size:13px;resize:vertical;font-family:inherit}.identity-notes-edit textarea:focus{outline:none}.identity-notes-actions{display:flex;gap:8px;margin-top:8px}.identity-notes-actions button{padding:6px 16px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .15s}.identity-notes-actions button:first-child{background:var(--accent);border:none;color:#000}.identity-notes-actions button:first-child:hover{background:var(--accent-bright)}.identity-notes-actions button:last-child{background:transparent;border:1px solid var(--border);color:var(--text-dim)}.identity-notes-actions button:last-child:hover{border-color:var(--text-dim);color:var(--text)}.identity-item-footer{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.identity-delete-btn{background:transparent;border:1px solid var(--error);color:var(--error);padding:8px 16px;border-radius:4px;font-size:12px;cursor:pointer;transition:all .15s}.identity-delete-btn:hover{background:var(--error);color:#fff}.chat-panel{position:fixed;bottom:30px;right:20px;width:360px;height:450px;background:var(--bg-dark);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;z-index:1000;box-shadow:0 4px 20px #0006}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:linear-gradient(180deg,#2a2a2a,#1a1a1a);border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;flex-shrink:0}.chat-peer-info{display:flex;align-items:center;gap:8px}.chat-status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.chat-status-dot.connected{background:var(--success, #22c55e)}.chat-status-dot.disconnected{background:var(--text-dim)}.chat-status-dot.connecting{background:var(--warning, #f59e0b);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.chat-peer-name{font-weight:600;color:var(--text-primary);font-size:14px}.chat-offline-badge{font-size:10px;background:var(--bg-hover);color:var(--text-dim);padding:2px 6px;border-radius:3px}.chat-connecting-badge{font-size:10px;background:#f59e0b33;color:var(--warning, #f59e0b);padding:2px 6px;border-radius:3px}.chat-close-btn{background:transparent;border:none;color:var(--text-dim);font-size:20px;cursor:pointer;padding:0 4px;line-height:1}.chat-close-btn:hover{color:var(--text-primary)}.chat-messages{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-dim);text-align:center}.chat-empty p{margin:4px 0}.chat-empty-hint{font-size:12px;opacity:.7}.chat-connect-btn{margin-top:12px;background:var(--accent);border:none;border-radius:4px;padding:8px 20px;color:var(--bg-dark);font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:opacity .15s}.chat-connect-btn:hover{opacity:.9}.chat-message{max-width:80%;display:flex;flex-direction:column}.chat-message.incoming{align-self:flex-start}.chat-message.outgoing{align-self:flex-end}.chat-message-content{padding:8px 12px;border-radius:12px;font-size:13px;line-height:1.4;word-wrap:break-word}.chat-message.incoming .chat-message-content{background:var(--bg-hover);color:var(--text-primary);border-bottom-left-radius:4px}.chat-message.outgoing .chat-message-content{background:var(--accent);color:var(--bg-dark);border-bottom-right-radius:4px}.chat-message-time{font-size:10px;color:var(--text-dim);margin-top:2px}.chat-message.outgoing .chat-message-time{text-align:right}.chat-message.pending .chat-message-content{background:#ffffff26;color:var(--text-dim)}.chat-message-pending-info{display:flex;align-items:center;gap:6px;margin-top:4px;justify-content:flex-end}.chat-pending-spinner{width:10px;height:10px;border:2px solid var(--text-dim);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.chat-pending-label{font-size:10px;color:var(--text-dim)}.chat-cancel-btn{background:transparent;border:none;color:var(--text-dim);font-size:14px;cursor:pointer;padding:0 4px;line-height:1;opacity:.7;transition:opacity .15s,color .15s}.chat-cancel-btn:hover{opacity:1;color:var(--error, #ef4444)}.chat-input-area{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0}.chat-input{flex:1;background:var(--bg-light);border:1px solid var(--border);border-radius:20px;padding:8px 16px;color:var(--text-primary);font-size:13px;font-family:inherit}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-input:disabled{opacity:.5;cursor:not-allowed}.chat-input::placeholder{color:var(--text-dim)}.chat-send-btn{background:var(--accent);border:none;border-radius:20px;padding:8px 16px;color:var(--bg-dark);font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:opacity .15s}.chat-send-btn:hover:not(:disabled){opacity:.9}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.app.log-panel-open .chat-panel{bottom:280px}.qr-code-modal{max-width:400px}.qr-code-description{margin:0 0 16px;color:var(--text-secondary);font-size:14px;text-align:center}.qr-code-container{display:flex;justify-content:center;padding:16px;background:#fff;border-radius:8px;margin:0 auto 16px;width:fit-content}.qr-code-error{text-align:center;padding:24px;color:var(--warning)}.qr-code-error p{margin:8px 0}.qr-code-data-preview{margin-top:16px}.qr-code-data-preview details{border:1px solid var(--border);border-radius:4px;padding:8px}.qr-code-data-preview summary{cursor:pointer;color:var(--text-secondary);font-size:12px;-webkit-user-select:none;user-select:none}.qr-code-data-preview pre{margin:8px 0 0;padding:8px;background:var(--bg-dark);border-radius:4px;font-size:10px;overflow-x:auto;max-height:150px;word-break:break-all;white-space:pre-wrap}.qr-scanner-wrapper{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-md)}.qr-scanner-container{width:100%;max-width:400px;aspect-ratio:1;border-radius:var(--radius-md);overflow:hidden;background:var(--bg-dark);position:relative}.qr-scanner-container video{object-fit:cover!important}.qr-scanner-container #qr-shaded-region{border-color:var(--primary)!important}.qr-scanner-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);background:var(--bg-dark);color:var(--text-dim)}.qr-scanner-loading svg{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.qr-scanner-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-xl);text-align:center;color:var(--text-dim);min-height:300px}.qr-scanner-error svg{color:var(--warning)}.qr-scanner-error p{max-width:300px;line-height:1.5}.qr-scanner-retry-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--primary);color:var(--bg-dark);border:none;border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:500;cursor:pointer;transition:opacity .2s}.qr-scanner-retry-btn:hover{opacity:.9}.qr-scanner-hint{color:var(--text-dim);font-size:var(--font-sm);text-align:center;margin:0}@media(max-width:480px){.qr-scanner-wrapper{padding:var(--space-sm)}.qr-scanner-container{max-width:100%}}.settings-modal{max-width:480px}.settings-section{padding:16px 0}.settings-section:not(:last-child){border-bottom:1px solid var(--border)}.settings-section-title{margin:0 0 16px;font-size:14px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.5px}.settings-item{margin-bottom:16px}.settings-item-header{margin-bottom:12px}.settings-item-label{display:block;font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:4px}.settings-item-description{display:block;font-size:12px;color:var(--text-dim)}.settings-radio-group{display:flex;flex-direction:column;gap:8px}.settings-radio{display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--bg-light);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:border-color .15s,background-color .15s}.settings-radio:hover{background:var(--bg-hover)}.settings-radio:has(input:checked){border-color:var(--accent);background:#00ff000d}.settings-radio input[type=radio]{margin-top:2px;accent-color:var(--accent);width:16px;height:16px;flex-shrink:0}.settings-radio-label{display:flex;flex-direction:column;gap:2px}.settings-radio-title{font-size:14px;font-weight:500;color:var(--text-primary)}.settings-radio-desc{font-size:12px;color:var(--text-dim);line-height:1.4}.settings-button-group{display:flex;gap:8px;flex-wrap:wrap}.settings-btn{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--bg-light);border:1px solid var(--border);border-radius:4px;font-size:13px;color:var(--text-primary);cursor:pointer;transition:background-color .15s,border-color .15s}.settings-btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.settings-btn:disabled{opacity:.5;cursor:not-allowed}.settings-btn-primary{background:var(--accent);color:var(--bg-dark);border-color:var(--accent)}.settings-btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.settings-import{padding-top:16px;margin-top:8px;border-top:1px solid var(--border)}.settings-checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer}.settings-checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.settings-checkbox-label .settings-item-label{display:inline;margin-bottom:0}.add-contact-modal{width:90vw;max-width:500px}.modal-tabs{display:flex;border-bottom:1px solid var(--border)}.modal-tab{flex:1;background:transparent;border:none;padding:12px 16px;color:var(--text-dim);font-size:13px;cursor:pointer;transition:all .15s;border-bottom:2px solid transparent}.modal-tab:hover{color:var(--text);background:#00ff000d}.modal-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.modal-body{padding:20px}.paste-tab .form-group,.scan-tab .form-group{margin-bottom:16px}.paste-tab label,.scan-tab label{display:block;margin-bottom:6px;font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.paste-tab input,.scan-tab input{width:100%;background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;padding:10px 12px;color:var(--text);font-size:13px}.paste-tab input:focus,.scan-tab input:focus{outline:none;border-color:var(--accent)}.paste-tab input.input-error{border-color:var(--error)}.error-message{color:var(--error);font-size:12px;margin-bottom:12px}.video-container{position:relative;background:#000;border-radius:4px;overflow:hidden;margin-bottom:16px;aspect-ratio:4/3}.qr-video{width:100%;height:100%;object-fit:cover}.video-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:13px}.scan-hint{text-align:center;color:var(--text-dim);font-size:12px;margin-top:12px}.share-tab{text-align:center}.qr-display{display:inline-block;background:#fff;padding:16px;border-radius:8px;margin-bottom:16px}.share-key{display:flex;gap:8px;align-items:stretch;margin-bottom:12px}.public-key-code{flex:1;background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;padding:10px 12px;font-size:11px;font-family:monospace;word-break:break-all;text-align:left;-webkit-user-select:all;user-select:all}.copy-btn{background:var(--accent);border:none;border-radius:4px;padding:10px 16px;color:#000;font-size:13px;font-weight:700;cursor:pointer;transition:all .15s;white-space:nowrap}.copy-btn:hover{background:var(--accent-bright)}.share-hint{color:var(--text-dim);font-size:12px}.not-logged-in{color:var(--text-dim);font-style:italic}.login-screen{flex:1;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#111,#000);padding:20px}.login-box{text-align:center;padding:40px;background:var(--bg-panel);border:2px solid var(--border);border-radius:8px;box-shadow:0 0 40px #00ff001a;max-width:500px;width:100%}.login-box h1{font-size:36px;margin-bottom:12px;text-shadow:0 0 20px var(--accent-dim);animation:glow 2s ease-in-out infinite alternate}@keyframes glow{0%{text-shadow:0 0 10px var(--accent-dim)}to{text-shadow:0 0 30px var(--accent),0 0 50px var(--accent-dim)}}.login-box p{font-size:16px;color:var(--text-secondary);margin-bottom:6px}.login-box .subtitle{font-size:11px;color:var(--text-dim);margin-bottom:24px}.saved-keys-section{margin-bottom:24px;text-align:left}.saved-keys-section h3{font-size:13px;color:var(--text-secondary);margin-bottom:12px;text-transform:uppercase;letter-spacing:1px}.saved-keys-list{background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;max-height:200px;overflow-y:auto}.saved-key-item{display:flex;align-items:center;border-bottom:1px solid var(--border);transition:background .15s}.saved-key-item:last-child{border-bottom:none}.saved-key-item:hover{background:var(--bg-hover)}.saved-key-item.is-default{background:#00ff000d}.saved-key-item.is-default:hover{background:#00ff0014}.saved-key-default-btn{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;padding:12px 8px 12px 12px;transition:color .15s,transform .15s}.saved-key-default-btn:hover{color:var(--warning);transform:scale(1.1)}.saved-key-default-btn.is-default{color:var(--warning)}.saved-key-info{flex:1;padding:12px 16px 12px 8px;cursor:pointer;display:flex;flex-direction:column;gap:4px}.saved-key-label{color:var(--accent);font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}.default-badge{font-size:9px;padding:2px 6px;background:var(--warning);color:#000;border-radius:3px;text-transform:uppercase;font-weight:700;letter-spacing:.5px}.saved-key-pubkey{color:var(--text-dim);font-size:11px;font-family:monospace}.saved-key-delete{background:none;border:none;color:var(--text-dim);font-size:20px;cursor:pointer;padding:12px 16px;transition:color .15s}.saved-key-delete:hover{color:var(--error)}.login-actions{display:flex;flex-direction:column;gap:16px}.new-key-section{display:flex;flex-direction:column;gap:10px}.new-key-input{text-align:center}.btn-primary{background:linear-gradient(180deg,#050,#030);border:2px solid var(--accent);color:var(--accent);padding:14px 24px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;border-radius:6px;transition:all .15s;text-transform:uppercase;letter-spacing:1px}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg,#060,#040);box-shadow:0 0 20px var(--accent-dim)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:linear-gradient(180deg,#333,#222);border:1px solid var(--border);color:var(--text-secondary);padding:12px 20px;font-family:inherit;font-size:13px;cursor:pointer;border-radius:4px;transition:all .15s}.btn-secondary:hover{background:linear-gradient(180deg,#444,#333);border-color:var(--accent);color:var(--accent)}.login-divider{display:flex;align-items:center;gap:12px;color:var(--text-dim);font-size:12px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border)}.login-error{color:var(--error);font-size:13px;margin-top:16px}.form-textarea{resize:vertical;min-height:100px;font-family:monospace;font-size:12px}.form-error{color:var(--error);font-size:12px;margin-top:8px}@media(max-width:768px){.login-box{padding:24px}.login-box h1{font-size:28px}}.shortcuts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.shortcut-group{display:flex;flex-direction:column;gap:.5rem}.shortcut-group-title{margin:0;padding-bottom:.5rem;border-bottom:1px solid var(--border-color);color:var(--accent-success);font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.shortcut-list{display:flex;flex-direction:column;gap:.5rem}.shortcut-item{display:flex;align-items:center;gap:.75rem}.shortcut-key{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;padding:.25rem .5rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;font-family:inherit;font-size:.75rem;font-weight:600;color:var(--text-primary);box-shadow:0 2px 0 var(--border-color)}.shortcut-description{font-size:.875rem;color:var(--text-secondary)}.shortcut-note{margin-left:.25rem;font-size:.75rem;color:var(--text-muted);font-style:italic}.modal-header svg{color:var(--accent-success)}.version-history-modal{max-width:700px;width:90vw}.version-history-content{display:flex;flex-direction:column;gap:1rem;max-height:70vh;overflow-y:auto}.version-entry{padding-bottom:.75rem;border-bottom:1px solid var(--border-color)}.version-entry:last-child{border-bottom:none;padding-bottom:0}.version-entry.current{background:var(--bg-secondary);margin:-.5rem -.5rem .25rem;padding:.5rem;border-radius:6px;border-bottom:none}.version-entry.unreleased{background:color-mix(in srgb,var(--accent-color, #3b82f6) 10%,transparent);margin:-.5rem -.5rem .25rem;padding:.5rem;border-radius:6px;border-bottom:none;border:1px dashed var(--accent-color, #3b82f6)}.unreleased-badge{font-size:.6rem;padding:.1rem .35rem;background:var(--accent-color, #3b82f6);color:#fff;border-radius:3px;text-transform:uppercase;font-weight:600}.commit-count{font-size:.65rem;color:var(--text-tertiary);margin-left:auto}.version-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem}.version-number{font-weight:600;font-size:.95rem;color:var(--text-primary)}.version-date{font-size:.7rem;color:var(--text-tertiary)}.current-badge{font-size:.6rem;padding:.1rem .35rem;background:var(--accent-success, #10b981);color:#fff;border-radius:3px;text-transform:uppercase;font-weight:600}.version-changes{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.15rem}.version-changes li{display:flex;align-items:flex-start;gap:.4rem;font-size:.75rem;color:var(--text-secondary);line-height:1.3;padding:.15rem 0}.version-changes li:last-child{margin-bottom:0}.change-type{font-size:.55rem;padding:.1rem .3rem;border-radius:3px;text-transform:uppercase;font-weight:600;flex-shrink:0;min-width:3rem;text-align:center}.change-type.feat{background:#10b981;color:#fff}.change-type.fix{background:#ef4444;color:#fff}.change-type.refactor{background:#8b5cf6;color:#fff}.change-type.perf{background:#f59e0b;color:#fff}.change-type.a11y{background:#06b6d4;color:#fff}.change-type.security{background:#dc2626;color:#fff}.change-type.docs{background:#6b7280;color:#fff}.change-type.test{background:#4b5563;color:#fff}.change-type.style{background:#9ca3af;color:#fff}.change-type.chore{background:#d1d5db;color:#374151}.change-type.other{background:#e5e7eb;color:#374151}.change-scope{font-size:.65rem;color:var(--text-tertiary);font-weight:500}.change-description{flex:1}@media(max-width:600px){.version-history-modal{max-width:95vw}.version-changes li{font-size:.7rem}.change-type{font-size:.5rem;min-width:2.5rem}}.menubar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#2a2a2a,#1a1a1a);border-bottom:1px solid var(--border);padding:0 12px;height:40px;flex-shrink:0}.menubar-left,.menubar-center,.menubar-right{display:flex;align-items:center;gap:12px}.menubar-left{min-width:auto;flex-shrink:0}.menubar-center{flex:1;justify-content:center}.menubar-right{min-width:300px;justify-content:flex-end}.app-title{font-size:16px;font-weight:700;color:var(--accent);text-shadow:0 0 10px var(--accent-dim)}.app-version{font-size:10px;color:var(--text-dim);background:var(--bg-dark);padding:2px 6px;border-radius:3px;border:none;cursor:pointer;transition:background-color .2s,color .2s}.app-version:hover{background:var(--bg-light);color:var(--text)}.nav-tabs{display:flex;margin-left:20px;gap:4px;position:relative;z-index:10}.nav-tab{padding:6px 14px;font-size:12px;font-family:inherit;color:var(--text-dim);text-decoration:none;background:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .15s}.nav-tab:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-tab.active{color:var(--accent);background:var(--bg-dark);border-color:var(--border)}.menu-btn{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(180deg,#333,#222);border:1px solid var(--border);color:#e0e0e0;padding:6px 14px;font-family:inherit;font-size:12px;cursor:pointer;border-radius:3px;transition:all .15s}.menu-btn:hover:not(:disabled){background:linear-gradient(180deg,#444,#333);border-color:var(--accent);box-shadow:0 0 5px var(--accent-dim)}.menu-btn:active:not(:disabled){background:linear-gradient(180deg,#222,#333)}.menu-btn:disabled{opacity:.5;cursor:not-allowed}.menu-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-btn:disabled:focus-visible{outline-color:var(--accent-dim)}.menu-btn.connect{background:linear-gradient(180deg,#040,#030);border-color:var(--accent)}.menu-btn.disconnect{background:linear-gradient(180deg,#400,#300);border-color:#f33;color:#f66}.connection-status{font-size:12px;padding:4px 10px;border-radius:3px;background:var(--bg-dark)}.connection-status.online{color:var(--accent);text-shadow:0 0 5px var(--accent)}.current-user{color:#ccc;font-size:12px}.menu-btn-danger{background:linear-gradient(180deg,#422,#311);border-color:#f44;color:#f66}.menu-btn-danger:hover:not(:disabled){background:linear-gradient(180deg,#533,#422);border-color:#f66;box-shadow:0 0 8px #ff444480}.hamburger-btn{display:none;background:none;border:none;color:var(--accent);font-size:24px;cursor:pointer;padding:8px;margin-left:auto;min-width:44px;min-height:44px;align-items:center;justify-content:center}.hamburger-icon{display:block;line-height:1}.mobile-menu-overlay{display:none}.logout-btn{background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;padding:4px 8px;transition:color .15s}.logout-btn:hover{color:var(--error)}.download-queue-badge{display:inline-flex;align-items:center;gap:4px;background:var(--bg-dark);border:1px solid var(--border);border-radius:12px;padding:3px 8px;font-size:11px;color:var(--text-dim);transition:all .2s}.download-queue-badge.active{background:linear-gradient(180deg,#030,#020);border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px var(--accent-dim)}.download-spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.download-count{font-weight:500;font-variant-numeric:tabular-nums}.queued-count{color:var(--text-dim);font-size:10px;margin-left:2px}.theme-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:4px 8px;transition:color .15s,transform .15s;display:flex;align-items:center;justify-content:center}.theme-btn:hover{color:var(--accent);transform:scale(1.1)}.menu-btn-logout{background:linear-gradient(180deg,#322,#211);border-color:#844;color:#f88}.menu-btn-logout:hover:not(:disabled){background:linear-gradient(180deg,#433,#322);border-color:#a66;box-shadow:0 0 8px #ff64644d}@media(max-width:1024px)and (min-width:769px){.menubar-center{gap:6px}.menu-btn{padding:6px 10px}.menu-btn .btn-label{display:none}.download-queue-badge{gap:4px;padding:3px 6px}.menubar-right{min-width:200px}}@media(max-width:768px){.hamburger-btn{display:flex;order:3;flex-shrink:0}.menubar{flex-wrap:wrap;padding:0 4px}.menubar-left{min-width:auto;flex:0 1 auto;gap:8px}.menubar-right{min-width:auto;gap:6px;flex:1 1 auto;justify-content:flex-end;margin-right:4px;overflow:hidden}.menubar-right .desktop-only{display:none}.menubar-center{display:none;position:absolute;top:40px;left:0;right:0;background:linear-gradient(180deg,#1a1a1a,#0a0a0a);border-bottom:2px solid var(--accent);flex-direction:column;padding:8px;z-index:100;gap:4px}.menubar-center.mobile-open{display:flex}.menubar-center .menu-btn{width:100%;text-align:left;padding:12px 16px}.download-queue-badge{align-self:center;margin:4px 0}.mobile-menu-overlay{display:block;position:fixed;inset:40px 0 0;background:#00000080;z-index:99}.app-title{font-size:14px}.app-version{display:none}.current-user{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1}.connection-status{font-size:11px;padding:3px 6px;flex-shrink:0}.nav-tabs{margin-left:8px;gap:2px}.nav-tab{padding:4px 8px;font-size:11px}}@media(max-width:400px){.menubar{padding:0 2px;height:44px}.menubar-left,.menubar-right{gap:4px}.app-title{font-size:12px}.connection-status{font-size:10px;padding:2px 4px}.current-user{max-width:50px;font-size:10px}.hamburger-btn{font-size:20px}.nav-tabs{margin-left:4px}.nav-tab{padding:3px 6px;font-size:10px}}.statusbar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#1a1a1a,#111);border-top:1px solid var(--border);padding:0 12px;height:28px;flex-shrink:0;font-size:11px;position:relative;z-index:1000}.statusbar-left,.statusbar-right{display:flex;align-items:center;gap:20px}.statusbar-left span,.statusbar-right span{color:var(--text-dim)}.statusbar .error{color:var(--error)}.network-tag{background:var(--bg-dark);padding:2px 8px;border-radius:3px;border:1px solid var(--border)}.peer-status{display:flex;align-items:center;gap:6px;cursor:pointer;transition:opacity .15s,transform .1s}.peer-status:hover{opacity:.85}.peer-status:active{transform:scale(.97)}.peer-status:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.peer-health-indicators{display:inline-flex;align-items:center;gap:4px;margin-left:4px}.health-dot{display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;font-size:9px;font-weight:600;border-radius:7px;padding:0 4px}.health-dot.health-good{background:#00c86433;color:#00c864;border:1px solid rgba(0,200,100,.4)}.health-dot.health-slow{background:#ffc80033;color:#ffc800;border:1px solid rgba(255,200,0,.4)}.health-dot.health-bad{background:#ff505033;color:#ff5050;border:1px solid rgba(255,80,80,.4)}.statusbar-center{display:flex;align-items:center;justify-content:center;gap:12px}.install-app-btn{display:flex;align-items:center;gap:6px;background:#00c86426;border:1px solid rgba(0,200,100,.4);border-radius:3px;padding:2px 10px;color:#00c864;font-size:11px;font-weight:500;cursor:pointer;transition:all .2s}.install-app-btn:hover{background:#00c86440;border-color:#00c864;transform:translateY(-1px)}.install-app-btn:active{transform:translateY(0)}.install-app-btn svg{flex-shrink:0}.storage-folder-control{display:flex;align-items:center;gap:6px;background:var(--bg-dark);border:1px solid var(--border);border-radius:3px;padding:2px 8px}.storage-folder-label{color:var(--text-secondary);font-size:11px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.storage-folder-btn{background:none;border:none;color:var(--text-dim);font-size:11px;cursor:pointer;padding:2px 6px;transition:color .15s}.storage-folder-btn:hover{color:var(--accent)}.system-log-btn{display:flex;align-items:center;gap:6px;background:var(--bg-dark);border:1px solid var(--border);border-radius:3px;padding:2px 8px;color:var(--text-dim);font-size:11px;cursor:pointer;transition:all .15s}.system-log-btn:hover{border-color:var(--accent);color:var(--accent)}.system-log-btn.active{background:#00ff001a;border-color:var(--accent);color:var(--accent)}.log-indicator{width:6px;height:6px;border-radius:50%;background:var(--text-dim)}.log-indicator.has-warnings{background:var(--warning)}.log-indicator.has-errors{background:var(--error);animation:pulse 1s ease-in-out infinite}.offline-indicator{display:flex;align-items:center;gap:4px;background:#ff646426;border:1px solid rgba(255,100,100,.4);border-radius:3px;padding:2px 8px;color:#ff6464;font-size:11px;font-weight:500;animation:offline-pulse 2s ease-in-out infinite}.offline-indicator svg{flex-shrink:0}@keyframes offline-pulse{0%,to{opacity:1}50%{opacity:.7}}.storage-status{display:flex;align-items:center;gap:4px;cursor:pointer;transition:opacity .15s,transform .1s}.storage-status:hover{opacity:.85}.storage-status:active{transform:scale(.97)}.storage-status:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.storage-quota-indicator{background:#00c86433;color:#00c864;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;border:1px solid rgba(0,200,100,.4)}.storage-status.storage-low .storage-quota-indicator{background:#ffc80033;color:#ffc800;border-color:#ffc80066;animation:storage-warning-pulse 2s ease-in-out infinite}.storage-status.storage-critical .storage-quota-indicator{background:#ff505033;color:#ff5050;border-color:#ff505066;animation:storage-critical-pulse 1s ease-in-out infinite}.storage-status.storage-low,.storage-status.storage-critical{color:inherit}.storage-status.storage-low svg,.storage-status.storage-critical svg{color:#ffc800}.storage-status.storage-critical svg{color:#ff5050}@keyframes storage-warning-pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes storage-critical-pulse{0%,to{opacity:1}50%{opacity:.5}}.ratio-status{display:flex;align-items:center;gap:3px;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;cursor:pointer;transition:opacity .15s,transform .1s}.ratio-status:hover{opacity:.85}.ratio-status:active{transform:scale(.97)}.ratio-status:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ratio-status.ratio-good{background:#00c86433;border:1px solid rgba(0,200,100,.4)}.ratio-status.ratio-good .ratio-value{color:#00c864}.ratio-status.ratio-low{background:#ffc80033;border:1px solid rgba(255,200,0,.4)}.ratio-status.ratio-low .ratio-value{color:#ffc800}.ratio-icon{flex-shrink:0}.ratio-icon.upload{color:#00c864}.ratio-icon.download{color:#ff7b5c}.ratio-value{min-width:30px;text-align:center}@media(max-width:768px){.statusbar{flex-wrap:wrap;height:auto;padding:6px 12px;gap:4px}.statusbar-left,.statusbar-right{gap:12px}.statusbar-center{width:100%;justify-content:center;order:3;margin-top:4px}}:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors:active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors:active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}.peers-tab{display:flex;flex-direction:column;gap:12px}.peers-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px;color:var(--text-dim);text-align:center;gap:8px}.peers-empty svg{opacity:.5}.peers-empty p{margin:0}.peers-empty-hint{font-size:12px;opacity:.7}.peers-summary{display:flex;flex-wrap:wrap;gap:12px;padding:8px 12px;background:var(--bg-dark);border-radius:6px;border:1px solid var(--border)}.peers-stat{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.peers-stat.health-good{color:#00c864}.peers-stat.health-slow{color:#ffc800}.peers-stat.health-bad{color:#ff5050}.peers-list{display:flex;flex-direction:column;gap:4px}.peer-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-elevated);border-radius:6px;border:1px solid var(--border);transition:border-color .15s}.peer-item:hover{border-color:var(--border-light)}.peer-health-indicator{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.peer-item.health-excellent .peer-health-indicator,.peer-item.health-good .peer-health-indicator{background:#00c86426;color:#00c864}.peer-item.health-slow .peer-health-indicator{background:#ffc80026;color:#ffc800}.peer-item.health-stalled .peer-health-indicator{background:#ff960026;color:#ff9600}.peer-item.health-failed .peer-health-indicator{background:#ff505026;color:#ff5050}.peer-item.health-unknown .peer-health-indicator{background:#80808026;color:var(--text-dim)}.peer-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.peer-key{font-size:13px}.peer-id{font-family:var(--font-mono);font-size:12px;color:var(--text-dim)}.peer-stats{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;color:var(--text-dim)}.peer-status{padding:1px 6px;border-radius:3px;font-size:10px;text-transform:uppercase;font-weight:500}.decrypt-header{display:flex;align-items:center;gap:.5rem}.decrypt-icon{font-size:1.25rem}.decrypt-info{text-align:center;margin-bottom:1.5rem}.decrypt-filename{font-weight:600;color:var(--text-primary);margin:0 0 .25rem;word-break:break-word}.decrypt-mode{font-size:.9rem;color:var(--text-secondary);margin:0}.decrypt-message{display:flex;gap:1rem;padding:1rem;border-radius:8px;margin-bottom:1rem}.decrypt-message .message-icon{font-size:1.5rem;flex-shrink:0}.decrypt-message .message-content{flex:1}.decrypt-message .message-content strong{display:block;margin-bottom:.25rem;color:var(--text-primary)}.decrypt-message .message-content p{margin:0;font-size:.9rem;color:var(--text-secondary)}.decrypt-login-required{background:color-mix(in srgb,var(--warning-color, #f59e0b) 15%,var(--bg-secondary));border:1px solid var(--warning-color, #f59e0b)}.decrypt-not-recipient,.decrypt-not-creator{background:color-mix(in srgb,var(--error-color, #ef4444) 15%,var(--bg-secondary));border:1px solid var(--error-color, #ef4444)}.decrypt-auto{background:color-mix(in srgb,var(--success-color, #22c55e) 15%,var(--bg-secondary));border:1px solid var(--success-color, #22c55e)}.decrypt-form .form-group{margin-bottom:1rem}.decrypt-form label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-primary)}.password-input-wrapper{display:flex;gap:.5rem}.password-input-wrapper .form-input{flex:1}.toggle-visibility{padding:.5rem .75rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:1rem;transition:background .15s}.toggle-visibility:hover{background:var(--bg-secondary)}.decrypt-error{display:flex;align-items:center;gap:.5rem;padding:.75rem;background:color-mix(in srgb,var(--error-color, #ef4444) 15%,var(--bg-secondary));border:1px solid var(--error-color, #ef4444);border-radius:6px;color:var(--error-color, #ef4444);font-size:.9rem}.error-icon{flex-shrink:0}.decrypt-progress{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem}.decrypt-progress .spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite}.decrypt-progress p{margin:0;color:var(--text-secondary)}@keyframes spin{to{transform:rotate(360deg)}}.details-panel{background:var(--bg-panel);border-top:2px solid var(--accent);flex-shrink:0;min-height:150px;max-height:70vh;display:flex;flex-direction:column;overflow:hidden;position:relative}.details-resize-handle{position:absolute;top:-4px;left:0;right:0;height:8px;cursor:ns-resize;z-index:10}.details-resize-handle:hover{background:linear-gradient(to bottom,rgba(0,255,0,.3),transparent)}.details-header{display:flex;align-items:center;gap:12px;padding:8px 16px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#1a1a1a,#111);flex-shrink:0}.details-cover{width:48px;height:48px;object-fit:cover;border-radius:4px;border:1px solid #333;flex-shrink:0}.details-title{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.details-title h2{font-size:16px;font-weight:700;color:var(--accent);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px}.details-close{background:none;border:none;color:var(--text-dim);font-size:24px;cursor:pointer;padding:0;line-height:1;transition:color .15s}.details-close:hover{color:var(--error)}.details-tabs{display:flex;border-bottom:1px solid var(--border);padding:0 20px}.tab{background:none;border:none;color:var(--text-dim);font-family:inherit;font-size:12px;padding:12px 16px;cursor:pointer;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s}.tab:hover{color:var(--text-secondary)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.details-content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px;display:flex;flex-direction:column}.files-tab{display:flex;flex-direction:column;gap:12px}.files-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:0 4px}.btn-download-zip{background:var(--bg-dark);border:1px solid var(--border);color:var(--text-dim);padding:6px 12px;border-radius:4px;cursor:pointer;font-size:12px;font-family:inherit;transition:all .15s}.btn-download-zip:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-download-zip:disabled{opacity:.5;cursor:not-allowed}.file-search-input{flex:1;min-width:120px;max-width:200px;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg-dark);color:var(--text);font-size:12px;font-family:inherit}.file-search-input::placeholder{color:var(--text-dim)}.file-search-input:focus{outline:none;border-color:var(--accent)}.file-sort-select{padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg-dark);color:var(--text);font-size:12px;font-family:inherit;cursor:pointer}.file-sort-select:focus{outline:none;border-color:var(--accent)}.files-list{display:flex;flex-direction:column;gap:2px}.file-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-dark);border-radius:4px;transition:background .15s}.file-item-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.file-item.playable .file-item-main{cursor:pointer}.file-item.playable:hover{background:var(--bg-hover)}.file-item.playing{background:#00ff001a;border:1px solid var(--accent-dim)}.file-actions{display:flex;gap:6px;align-items:center}.file-icon{font-size:16px;width:24px;text-align:center;color:var(--text-dim);display:flex;align-items:center;justify-content:center}.file-thumbnail{width:40px;height:40px;border-radius:4px;overflow:hidden;background:var(--bg-lighter);display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-thumbnail img{width:100%;height:100%;object-fit:cover}.file-thumbnail.loading{color:var(--text-dim);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.file-item.has-thumbnail{padding:6px 12px}.file-item.has-thumbnail .file-info{margin-left:4px}.file-info{flex:1;min-width:0}.file-name{display:block;color:var(--text-primary);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-meta{display:block;color:var(--text-dim);font-size:11px;margin-top:2px}.file-size{color:var(--text-dim);font-size:11px;white-space:nowrap}.file-action-btn{background:none;border:1px solid var(--border);color:var(--text-dim);width:26px;height:26px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;transition:all .15s}.file-action-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.file-action-btn:disabled{opacity:.5;cursor:not-allowed}.file-action-btn.play-btn{border-radius:50%}.file-action-btn.download-btn{font-size:12px}.file-tree{display:flex;flex-direction:column}.file-tree-empty{padding:24px 16px;text-align:center;color:var(--text-muted);font-style:italic}.folder-node{display:flex;flex-direction:column}.folder-header{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;border-radius:4px;transition:background .15s}.folder-header:hover{background:var(--hover)}.folder-toggle{font-size:10px;color:var(--text-dim);width:12px}.folder-icon{font-size:14px}.folder-name{flex:1;font-weight:500;color:var(--text)}.folder-meta{font-size:11px;color:var(--text-dim)}.folder-children{display:flex;flex-direction:column}.folder-children .file-item{padding-left:16px}.folder-children .folder-node .folder-children .file-item{padding-left:32px}.virtual-file-list{border-radius:var(--radius-md);scrollbar-width:thin;scrollbar-color:var(--accent-success-dark) var(--bg-secondary)}.virtual-file-list::-webkit-scrollbar{width:8px}.virtual-file-list::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:4px}.virtual-file-list::-webkit-scrollbar-thumb{background:var(--accent-success-dark);border-radius:4px}.virtual-file-list::-webkit-scrollbar-thumb:hover{background:var(--accent-success)}.file-tree.virtualized{border:1px solid var(--border-color);border-radius:var(--radius-md)}.metadata-view{display:flex;flex-direction:column;gap:20px}.meta-section{background:var(--bg-dark);border-radius:6px;padding:16px}.meta-section h3{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;margin:0 0 12px}.meta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.meta-item{display:flex;flex-direction:column;gap:4px}.meta-item.full-width{grid-column:1 / -1}.meta-item label{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.meta-item span{font-size:13px;color:var(--text-primary)}.meta-item .mono{font-family:monospace;font-size:11px;word-break:break-all}.infohash-value{display:flex;align-items:flex-start;gap:8px}.copy-hash-btn{display:inline-flex;align-items:center;justify-content:center;padding:4px;background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;color:var(--text-dim);cursor:pointer;transition:all .15s;flex-shrink:0}.copy-hash-btn:hover{color:var(--accent);border-color:var(--accent)}.copy-hash-btn svg{display:block}.magnet-value{display:flex;align-items:flex-start;gap:8px;min-width:0}.magnet-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.85em}.authors-list{display:flex;flex-direction:column;gap:8px}.author-item{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-panel);border-radius:4px}.author-key{color:var(--text-secondary);font-size:11px}.author-role{background:var(--accent-dim);color:var(--accent);font-size:10px;padding:2px 8px;border-radius:10px;text-transform:uppercase}.author-date{color:var(--text-dim);font-size:11px;margin-left:auto}.json-tree-explorer{font-family:SF Mono,Monaco,Consolas,monospace;font-size:12px;line-height:1.5;background:var(--bg-panel);border-radius:4px;padding:12px;overflow-x:auto}.json-node{position:relative}.json-node-header{display:flex;align-items:center;gap:4px;padding:2px 0}.json-node-header.expandable{cursor:pointer}.json-node-header.expandable:hover{background:var(--bg-hover)}.json-toggle{width:12px;font-size:8px;color:var(--text-dim);-webkit-user-select:none;user-select:none}.json-key{color:var(--accent)}.json-type{color:var(--text-dim);font-size:11px;margin-left:4px}.json-leaf{padding:2px 0}.json-string{color:#98c379}.json-number{color:#d19a66}.json-boolean{color:#56b6c2}.json-null,.json-undefined{color:#5c6370;font-style:italic}.json-children{border-left:1px solid var(--border);margin-left:6px}.player-view{display:flex;flex-direction:column;align-items:center;gap:12px;flex:1;min-height:0;overflow:hidden}.cover-image{width:100%;height:100%;object-fit:cover}.video-player{max-width:100%;max-height:40%;width:auto;height:auto;flex-shrink:0;border-radius:4px;background:#000;object-fit:contain;cursor:pointer}.control-buttons{display:flex;align-items:center;justify-content:center;gap:8px}.ctrl-btn{background:none;border:1px solid var(--border);color:var(--text-secondary);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:12px;transition:all .15s;display:flex;align-items:center;justify-content:center}.ctrl-btn:hover{border-color:var(--accent);color:var(--accent)}.ctrl-btn-play{width:40px;height:40px;font-size:16px;border-color:var(--accent);color:var(--accent)}.ctrl-btn-play:hover{background:#00ff001a}.volume-control{display:flex;align-items:center;gap:4px;margin-left:12px}.volume-slider{width:60px;height:4px;-webkit-appearance:none;appearance:none;background:var(--border);border-radius:2px;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;background:var(--accent);border-radius:50%;cursor:pointer}.volume-slider::-moz-range-thumb{width:10px;height:10px;background:var(--accent);border-radius:50%;cursor:pointer;border:none}.track-counter{color:var(--text-dim);font-size:11px;margin-left:12px}.player-playlist{width:100%;max-width:500px}.player-playlist h4{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin:0 0 12px}.playlist-items{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow-y:auto}.playlist-item{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-dark);border-radius:4px;cursor:pointer;transition:background .15s}.playlist-item:hover{background:var(--bg-hover)}.playlist-item.active{background:#00ff001a}.playlist-num{color:var(--text-dim);font-size:11px;width:24px}.playlist-title{flex:1;color:var(--text-primary);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-duration{color:var(--text-dim);font-size:10px;font-family:monospace}.playlist-playing{color:var(--accent);font-size:10px}.encryption-notice{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:color-mix(in srgb,var(--warning-color, #f59e0b) 15%,var(--bg-secondary));border:1px solid var(--warning-color, #f59e0b);border-radius:6px;margin:.5rem 1rem;color:var(--text-primary);font-size:.9rem}.encryption-notice .encryption-icon{font-size:1.25rem}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:200px;padding:24px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;margin:8px}.error-boundary-content{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:400px}.error-boundary-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;background:#ff646426;border:1px solid rgba(255,100,100,.3);border-radius:50%;color:#ff6464;margin-bottom:16px}.error-boundary-title{font-size:18px;font-weight:600;color:var(--text-primary);margin:0 0 8px}.error-boundary-message{font-size:14px;color:var(--text-dim);margin:0 0 20px;line-height:1.5}.error-boundary-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.error-boundary-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease}.error-boundary-btn-primary{background:var(--accent);color:var(--bg-primary);border:none}.error-boundary-btn-primary:hover{background:var(--accent-hover, #00dd00);transform:translateY(-1px)}.error-boundary-btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.error-boundary-btn-secondary:hover{background:var(--bg-hover);border-color:var(--text-dim)}.error-boundary-details{margin-top:20px;width:100%}.error-boundary-details-toggle{display:flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--text-dim);font-size:12px;cursor:pointer;transition:all .15s ease;width:100%;justify-content:center}.error-boundary-details-toggle:hover{background:var(--bg-hover);color:var(--text-secondary)}.error-boundary-details-content{margin-top:12px;padding:12px;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;text-align:left}.error-boundary-error-name{font-size:13px;font-weight:600;color:#ff6464;margin-bottom:8px;word-break:break-word}.error-boundary-stack{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:11px;color:var(--text-dim);background:var(--bg-primary);padding:12px;border-radius:4px;overflow-x:auto;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all;margin:0 0 12px}.error-boundary-stack:last-child{margin-bottom:0}@media(max-width:480px){.error-boundary{padding:16px;margin:4px}.error-boundary-icon{width:48px;height:48px}.error-boundary-icon svg{width:24px;height:24px}.error-boundary-title{font-size:16px}.error-boundary-message{font-size:13px}.error-boundary-actions{flex-direction:column;width:100%}.error-boundary-btn{width:100%;justify-content:center}}.step-encryption{display:flex;flex-direction:column;gap:1.5rem}.encryption-options{display:flex;flex-direction:column;gap:.75rem}.encryption-option{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left}.encryption-option:hover:not(.disabled){border-color:var(--accent-color);background:var(--bg-tertiary)}.encryption-option.selected{border-color:var(--accent-color);background:color-mix(in srgb,var(--accent-color) 10%,var(--bg-secondary))}.encryption-option.disabled{opacity:.5;cursor:not-allowed}.option-icon{font-size:1.5rem;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);border-radius:8px;flex-shrink:0}.option-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.option-label{font-weight:600;color:var(--text-primary)}.option-description{font-size:.85rem;color:var(--text-secondary)}.option-login-required{font-size:.75rem;color:var(--warning-color, #f59e0b);font-style:italic}.option-check{font-size:1.25rem;color:var(--accent-color);font-weight:700}.passphrase-section{padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.passphrase-section .form-group{margin-bottom:1rem}.passphrase-section .form-group:last-of-type{margin-bottom:.5rem}.passphrase-hint{font-size:.85rem;color:var(--text-secondary);margin:.5rem 0 0}.recipients-section{padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.recipients-section h3{margin:0 0 .75rem;font-size:.95rem;color:var(--text-primary)}.recipient-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.recipient-item{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background:var(--bg-tertiary);border-radius:20px;font-size:.9rem}.recipient-name{color:var(--text-primary)}.btn-remove-recipient{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.1rem;line-height:1;padding:0;transition:color .15s}.btn-remove-recipient:hover{color:var(--error-color, #ef4444)}.no-recipients{color:var(--text-secondary);font-size:.9rem;margin:0 0 1rem}.btn-add-recipient{padding:.5rem 1rem;background:var(--accent-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:opacity .15s}.btn-add-recipient:hover{opacity:.9}.contact-picker{margin-top:1rem;display:flex;flex-direction:column;gap:.5rem;max-height:200px;overflow-y:auto}.contact-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;transition:all .15s}.contact-item:hover{border-color:var(--accent-color);background:var(--bg-tertiary)}.contact-name{color:var(--text-primary)}.contact-add{color:var(--accent-color);font-size:1.2rem;font-weight:700}.no-contacts{color:var(--text-secondary);font-size:.9rem;text-align:center;padding:1rem}.self-section{padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.self-info{display:flex;gap:1rem;align-items:flex-start}.self-icon{font-size:2rem;flex-shrink:0}.self-content{flex:1}.self-content p{margin:0 0 .5rem;color:var(--text-primary)}.self-warning{color:var(--warning-color, #f59e0b);font-size:.9rem}.self-key{display:inline-block;margin-top:.5rem;padding:.25rem .5rem;background:var(--bg-primary);border-radius:4px;font-size:.8rem;color:var(--text-secondary)}@media(max-width:640px){.encryption-option{padding:.875rem}.option-icon{width:2rem;height:2rem;font-size:1.25rem}.option-label{font-size:.95rem}.option-description{font-size:.8rem}}.wizard-container{position:fixed;inset:0;background:var(--bg-dark);display:flex;flex-direction:column;z-index:1000;animation:wizard-fade-in .2s ease}@keyframes wizard-fade-in{0%{opacity:0}to{opacity:1}}.wizard-container.drag-over{outline:2px dashed var(--accent);outline-offset:-2px}.wizard-drop-overlay{position:absolute;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:100;pointer-events:none;animation:overlay-fade-in .15s ease}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.drop-overlay-content{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px;border:2px dashed var(--accent);border-radius:12px;background:#00c8ff0d}.drop-overlay-content .drop-icon{font-size:64px;animation:drop-bounce .5s ease infinite alternate}@keyframes drop-bounce{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.drop-overlay-content .drop-text{font-size:18px;color:var(--accent);font-weight:500}.wizard-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:linear-gradient(180deg,#1a1a1a,#111);border-bottom:2px solid var(--accent);flex-shrink:0}.wizard-title{font-size:20px;font-weight:700;color:var(--accent);text-shadow:0 0 10px var(--accent-dim);margin:0}.btn-cancel-header{background:transparent;border:1px solid var(--text-dim);color:var(--text-dim);padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-cancel-header:hover{border-color:var(--accent);color:var(--accent)}.wizard-progress{padding:20px 24px;background:var(--bg-panel);border-bottom:1px solid var(--border);flex-shrink:0}.progress-steps{display:flex;justify-content:center;align-items:flex-start;gap:0;max-width:600px;margin:0 auto}.progress-step{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;position:relative;cursor:pointer;transition:opacity .2s}.progress-step.disabled{cursor:not-allowed;opacity:.4}.progress-step.accessible:hover .step-circle{transform:scale(1.1)}.step-circle{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;border:2px solid var(--border);background:var(--bg-dark);color:var(--text-dim);z-index:1;transition:all .2s}.progress-step.current .step-circle{border-color:var(--accent);color:var(--accent);box-shadow:0 0 12px var(--accent-dim)}.progress-step.completed .step-circle{border-color:var(--accent);background:var(--accent);color:var(--bg-dark)}.step-line{position:absolute;top:18px;left:50%;width:100%;height:2px;background:var(--border);z-index:0}.progress-step.completed .step-line{background:var(--accent)}.step-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.progress-step.current .step-label{color:var(--accent);font-weight:700}.wizard-content{flex:1;overflow-y:auto;padding:24px}.wizard-content>*{max-width:800px;margin:0 auto}.wizard-footer{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:linear-gradient(180deg,#111,#0a0a0a);border-top:1px solid var(--border);flex-shrink:0}.wizard-footer-left,.wizard-footer-right{display:flex;gap:12px}.btn-back{background:transparent;border:1px solid var(--text-dim);color:var(--text-dim);padding:10px 20px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.btn-back:hover{border-color:var(--accent);color:var(--accent)}.btn-next{background:linear-gradient(180deg,#030,#020);border:1px solid var(--accent);color:var(--accent);padding:10px 24px;border-radius:4px;cursor:pointer;font-size:14px;font-weight:700;transition:all .2s}.btn-next:hover:not(:disabled){background:linear-gradient(180deg,#040,#030);box-shadow:0 0 10px var(--accent-dim)}.btn-next:disabled{opacity:.5;cursor:not-allowed}.step-header{margin-bottom:24px}.step-header h2{color:var(--accent);font-size:24px;margin:0 0 8px}.step-description{color:var(--text-dim);font-size:14px;margin:0}.files-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:12px}.files-info{display:flex;gap:16px;color:var(--text-dim);font-size:13px}.files-count{color:var(--accent);font-weight:700}.files-actions{display:flex;gap:12px;align-items:flex-end}.btn-add-files{background:linear-gradient(180deg,#030,#020);border:1px solid var(--accent);color:var(--accent);padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-add-files:hover:not(:disabled){background:linear-gradient(180deg,#040,#030)}.btn-add-files:disabled{opacity:.5;cursor:not-allowed}.btn-add-folder{background:linear-gradient(180deg,#222,#1a1a1a);border:1px solid var(--border);color:var(--text);padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.btn-add-folder:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-add-folder:disabled{opacity:.5;cursor:not-allowed}.empty-actions{display:flex;gap:12px;margin-top:16px}.file-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;color:var(--text-dim);text-align:center}.empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.file-list-empty p{margin:0 0 16px}.file-role-select{background:var(--bg-dark);border:1px solid var(--border);color:var(--accent);padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer}.track-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--border);border-radius:6px;overflow:hidden}.track-item{background:var(--bg-panel);transition:background .2s}.track-item:hover,.track-item.expanded{background:#1a1a1a}.track-row{display:flex;align-items:center;padding:10px 16px;gap:12px;cursor:pointer}.track-number{min-width:24px;font-size:12px;color:var(--text-dim);text-align:center}.track-icon{font-size:16px}.track-title{flex:1;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track-duration{font-size:12px;color:var(--text-dim);font-family:monospace}.track-size{font-size:12px;color:var(--text-dim);min-width:60px;text-align:right}.track-expand{font-size:10px;color:var(--text-dim)}.track-meta-form{padding:16px 16px 16px 52px;background:#0000004d;border-top:1px solid var(--border)}.review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.review-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:20px}.review-card h3{color:var(--accent);font-size:14px;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.review-item{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}.review-item:last-child{border-bottom:none}.review-item.description{flex-direction:column;gap:4px}.review-label{color:var(--text-dim);font-size:12px}.review-value{color:var(--accent);font-size:13px;text-align:right}.review-item.description .review-value{text-align:left;font-size:12px;color:var(--text)}.files-card{grid-column:1 / -1}.review-file-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.review-file-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg-dark);border-radius:4px}.review-file-icon{font-size:14px}.review-file-name{flex:1;font-size:13px;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.review-track-num{color:var(--text-dim);margin-right:4px}.review-file-size{font-size:12px;color:var(--text-dim)}.validation-errors,.validation-warnings{margin-bottom:16px;padding:12px 16px;border-radius:6px}.validation-errors{background:#ff00001a;border:1px solid #ff4444}.validation-warnings{background:#ffc8001a;border:1px solid #ffcc00}.validation-error{color:#f44;font-size:13px}.validation-warning{color:#fc0;font-size:13px}.form-section{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--border)}.form-section:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.form-section h3{color:var(--accent);font-size:14px;margin:0 0 16px;text-transform:uppercase;letter-spacing:.5px}.form-input.readonly{background:#1a1a1a;cursor:not-allowed}@media(max-width:768px){.wizard-header{padding:12px 16px}.wizard-title{font-size:16px}.wizard-progress{padding:16px}.step-label{font-size:9px}.step-circle{width:28px;height:28px;font-size:12px}.step-line{top:14px}.wizard-content{padding:16px}.wizard-footer{padding:12px 16px;flex-direction:column;gap:12px}.wizard-footer-left,.wizard-footer-right{width:100%;justify-content:center}.files-toolbar{flex-direction:column;align-items:stretch}.files-actions{flex-direction:column}.review-grid{grid-template-columns:1fr}.track-meta-form{padding-left:16px}}.table-pagination{display:flex;align-items:center;justify-content:flex-end;gap:16px;padding:6px 12px;background:var(--bg-secondary);border-top:1px solid var(--border-color);font-family:var(--font-mono);font-size:11px;color:var(--accent-success);min-height:28px}.pagination-label{color:var(--text-muted)}.pagination-rows-per-page{display:flex;align-items:center;gap:6px}.pagination-select{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:3px;color:var(--accent-success);font-family:var(--font-mono);font-size:11px;padding:2px 4px;cursor:pointer}.pagination-select:hover{border-color:var(--accent-success-dark)}.pagination-select:focus{outline:none;border-color:var(--accent-success)}.pagination-info{display:flex;align-items:center;gap:2px}.pagination-range{color:var(--accent-success)}.pagination-separator,.pagination-total{color:var(--text-muted)}.pagination-buttons{display:flex;align-items:center;gap:2px}.pagination-button{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--accent-success);cursor:pointer;transition:all .15s ease}.pagination-button:hover:not(:disabled){background:var(--accent-success-dark);border-color:var(--accent-success)}.pagination-button:disabled{opacity:.3;cursor:not-allowed}.pagination-page{padding:0 6px;color:var(--text-muted);font-size:10px}[data-theme=light] .pagination-select{background:var(--bg-secondary)}[data-theme=light] .pagination-button:hover:not(:disabled){background:#0088001a}.column-selector{position:relative;margin-left:auto}.column-selector-btn{background:var(--bg-dark);border:1px solid var(--border);border-radius:4px;padding:6px 12px;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s;white-space:nowrap}.column-selector-btn:hover,.column-selector-btn.active{background:var(--bg-hover);border-color:var(--accent);color:var(--text-primary)}.column-selector-dropdown{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-panel);border:1px solid var(--border);border-radius:4px;min-width:220px;max-height:400px;overflow-y:auto;z-index:1000;box-shadow:0 4px 12px #00000080}.column-selector-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);font-size:11px;text-transform:uppercase;color:var(--text-dim)}.column-selector-reset{background:none;border:none;color:var(--text-secondary);font-size:11px;cursor:pointer;padding:2px 6px;border-radius:3px}.column-selector-reset:hover{background:var(--bg-hover);color:var(--text-primary)}.column-selector-list{padding:4px 0}.column-selector-item{display:flex;align-items:flex-start;gap:8px;padding:6px 12px;cursor:pointer;transition:background .1s}.column-selector-item:hover{background:var(--bg-hover)}.column-selector-item input[type=checkbox]{margin-top:2px;accent-color:var(--accent)}.column-selector-name{color:var(--text-primary);font-size:12px}.column-selector-desc{display:block;color:var(--text-dim);font-size:10px;margin-top:2px}.type-badge{display:inline-block;padding:2px 6px;border-radius:3px;font-size:10px;text-transform:uppercase;font-weight:700}.type-badge.type-local{background:#00ff0026;color:var(--text-primary);border:1px solid var(--accent-dim)}.type-badge.type-remote{background:#0099ff26;color:var(--blue);border:1px solid rgba(0,153,255,.3)}.relative-time{color:var(--text-secondary);font-size:12px}.info-hash{font-family:monospace;font-size:11px;color:var(--text-dim);cursor:default}.info-hash:hover{color:var(--text-secondary)}.verified-cell{font-size:14px}.verified-cell.verified{color:var(--text-primary)}.verified-cell.failed{color:var(--warning)}.pull-to-refresh-indicator{position:fixed;top:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;z-index:1000;pointer-events:none;transition:opacity .15s ease}.pull-to-refresh-spinner{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--bg-panel);border:2px solid var(--accent);border-radius:50%;color:var(--accent);box-shadow:0 2px 12px #0000004d;transition:transform .1s ease}.pull-to-refresh-spinner.refreshing{animation:spin 1s linear infinite}.pull-to-refresh-text{font-size:12px;font-weight:500;color:var(--text-secondary);background:var(--bg-panel);padding:4px 12px;border-radius:12px;box-shadow:0 2px 8px #0003}@keyframes spin{0%{transform:rotate(0) scale(1)}to{transform:rotate(360deg) scale(1)}}@media(hover:hover)and (pointer:fine){.pull-to-refresh-indicator{display:none}}.swipeable-track-row{position:relative;overflow:hidden}.swipe-delete-action{position:absolute;top:0;right:0;bottom:0;width:100px;display:flex;align-items:center;justify-content:center;gap:6px;background:var(--accent-error);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background-color .15s ease}.swipe-delete-action:hover{background:var(--accent-error-hover, #dc2626)}.swipe-delete-action.active{background:#dc2626}.swipe-delete-action.active:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2));animation:swipe-delete-pulse .5s ease-in-out infinite alternate}@keyframes swipe-delete-pulse{0%{opacity:0}to{opacity:1}}.swipe-content{position:relative;background:inherit;z-index:1;will-change:transform}.swipe-content:not(.swiping){transition:transform .2s ease-out}@media(hover:none)and (pointer:coarse){.swipeable-track-row .track-row{user-select:none;-webkit-user-select:none;touch-action:pan-y}}@media(hover:hover)and (pointer:fine){.swipe-delete-action{display:none}.swipe-content{transform:none!important}}.tag-manager-modal{width:400px;max-width:90vw}.tag-manager-track-info{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #333}.tag-manager-track-title{font-size:16px;font-weight:500;margin-bottom:4px}.tag-manager-track-artist{font-size:14px;color:#888}.tag-manager-section{margin-bottom:16px}.tag-manager-label{font-size:12px;text-transform:uppercase;color:#888;margin-bottom:8px;letter-spacing:.05em}.tag-manager-list{display:flex;flex-wrap:wrap;gap:8px}.tag-manager-tag{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:16px;font-size:13px;cursor:pointer;border:2px solid #444;background:transparent;color:#ccc;transition:all .15s}.tag-manager-tag:hover:not(:disabled){border-color:#666;color:#fff}.tag-manager-tag.selected{color:#fff;border-color:transparent}.tag-manager-tag.loading{opacity:.6;cursor:wait}.tag-check{font-size:11px}.tag-manager-current{display:flex;flex-wrap:wrap;gap:8px}.tag-manager-current .tag-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px 4px 12px;border-radius:12px;font-size:12px;background:#333;color:#fff}.tag-remove{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:none;background:#0000004d;color:#fff;font-size:14px;cursor:pointer;transition:background .15s}.tag-remove:hover:not(:disabled){background:#00000080}.tag-remove:disabled{opacity:.5;cursor:wait}.library-page{background:var(--bg-primary);color:var(--text-primary)}.library-sidebar{width:240px;min-width:240px;background:var(--bg-secondary);border-right:1px solid var(--border-color);padding:16px;overflow-y:auto}.sidebar-section{margin-bottom:24px}.sidebar-section h3{font-size:12px;text-transform:uppercase;color:var(--text-muted);margin:0 0 12px;letter-spacing:.05em}.sidebar-item{display:block;width:100%;padding:8px 12px;margin-bottom:4px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);text-align:left;cursor:pointer;font-size:14px;transition:background var(--transition-fast)}.sidebar-item:hover{background:var(--bg-tertiary)}.sidebar-item.active{background:var(--accent-success-dim);color:var(--accent-success)}.sidebar-item.new-playlist{color:var(--text-muted)}.sidebar-item.new-playlist:hover{color:var(--accent-success)}.playlist-item-container{display:flex;align-items:center;gap:4px}.playlist-item-container .sidebar-item{flex:1;min-width:0}.playlist-edit-btn{flex-shrink:0;padding:4px 8px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;font-size:14px;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast)}.playlist-item-container:hover .playlist-edit-btn{opacity:1}.playlist-edit-btn:hover{color:var(--accent-success);background:var(--bg-tertiary)}.playlist-editor-modal{width:400px;max-width:90vw}.modal-footer-spacer{flex:1}.tag-chip{display:inline-block;padding:4px 10px;margin:2px 4px 2px 0;border-radius:var(--radius-xl);font-size:12px;background:var(--border-color);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform .1s ease,box-shadow .15s ease,opacity .15s ease;border:2px solid transparent}.tag-chip:hover{transform:scale(1.05);box-shadow:0 2px 8px #0000004d;opacity:.9}.tag-chip:active{transform:scale(.98)}.tag-chip.active{border-color:var(--accent);box-shadow:0 0 8px var(--accent-dim)}.tag-chip.small{padding:2px 6px;font-size:10px}.tag-chip.small:hover{transform:scale(1.08)}.clear-tag-filter{display:block;width:100%;padding:6px 12px;margin-bottom:8px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all var(--transition-fast)}.clear-tag-filter:hover{background:var(--bg-hover);color:var(--text-primary)}.add-tag-hint{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--bg-tertiary);color:var(--text-muted);font-size:12px;cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;margin-left:4px}.add-tag-hint:hover{background:var(--accent);color:var(--bg-primary);transform:scale(1.1)}.library-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.library-toolbar{display:flex;gap:12px;padding:16px;border-bottom:1px solid var(--border-color);align-items:center}.library-search{flex:1;max-width:400px;padding:8px 14px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px}.library-search:focus{outline:none;border-color:var(--accent-success)}.library-search::placeholder{color:var(--text-dim)}.view-toggle{display:flex;background:var(--bg-tertiary);border-radius:var(--radius-sm);overflow:hidden}.view-toggle button{padding:8px 16px;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;transition:all var(--transition-fast)}.view-toggle button:hover{color:var(--text-secondary)}.view-toggle button.active{background:var(--accent-success-dim);color:var(--accent-success)}.scan-btn{padding:8px 16px;background:var(--accent-success-dim);border:1px solid var(--accent-success);border-radius:var(--radius-sm);color:var(--accent-success);cursor:pointer;font-size:13px;transition:all var(--transition-fast)}.scan-btn:hover:not(:disabled){background:var(--accent-success-hover)}.scan-btn:disabled{opacity:.5;cursor:not-allowed}.track-list{flex:1;overflow-y:auto;padding:0 16px 16px}.track-header,.track-row{display:grid;grid-template-columns:32px 40px 2fr 1fr 1fr 80px 120px;gap:12px;align-items:center;padding:10px 12px;border-radius:var(--radius-sm)}.col-play{display:flex;align-items:center;justify-content:center}.play-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);opacity:0}.track-row:hover .play-btn{opacity:1}.play-btn:hover{background:#00ff0030;color:var(--accent-success)}.track-header{font-size:11px;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--border-color);position:sticky;top:0;background:var(--bg-primary);z-index:1}.track-row{cursor:pointer;transition:background var(--transition-fast)}.track-row:hover{background:var(--bg-tertiary)}.track-row:nth-child(2n){background:var(--bg-dark)}.track-row:nth-child(2n):hover{background:var(--bg-tertiary)}.track-row.now-playing{background:var(--now-playing-bg, rgba(0, 255, 255, .05));border-left:3px solid var(--now-playing-border, rgba(0, 255, 255, .6))}.track-row.now-playing:hover{background:var(--now-playing-bg-hover, rgba(0, 255, 255, .1))}.track-row.now-playing .col-title{color:var(--now-playing-text, #0ff)}.col-num{color:var(--text-dim);text-align:center}.col-title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-artist,.col-album{color:#999;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.col-duration{color:var(--text-dim);text-align:right;font-variant-numeric:tabular-nums}.col-tags{display:flex;flex-wrap:wrap;gap:4px}.col-tags.clickable{cursor:pointer;padding:4px 8px;margin:-4px -8px;border-radius:var(--radius-sm);min-height:24px;transition:background var(--transition-fast)}.col-tags.clickable:hover{background:var(--bg-elevated)}.add-tag-hint{color:#444;font-size:16px;font-weight:500;transition:color var(--transition-fast)}.col-tags.clickable:hover .add-tag-hint{color:var(--accent-success)}.track-context-menu{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:0 8px 24px #00000080;min-width:200px;max-width:280px;padding:8px 0;z-index:1000}.context-menu-header{padding:8px 12px;border-bottom:1px solid var(--border-color);margin-bottom:4px}.context-menu-track-title{font-size:13px;font-weight:500;color:#fff;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-menu-label{padding:6px 12px;font-size:11px;text-transform:uppercase;color:var(--text-dim);letter-spacing:.05em}.context-menu-item{display:block;width:100%;padding:8px 12px;background:transparent;border:none;color:var(--text-secondary);text-align:left;font-size:13px;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.context-menu-item:hover{background:var(--accent-success-dim);color:var(--accent-success)}.already-in-playlist{color:var(--text-dim);font-size:11px}.context-menu-empty{padding:12px;color:var(--text-dim);font-size:12px;text-align:center}.context-menu-divider{height:1px;background:var(--border-color);margin:4px 0}.empty-library{text-align:center;padding:60px 20px;color:var(--text-dim)}.empty-library p{margin:8px 0}.album-grid{flex:1;padding:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px;overflow-y:auto}.album-card{background:var(--bg-secondary);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.album-card:hover{transform:translateY(-4px);box-shadow:0 8px 20px #0006}.album-cover{aspect-ratio:1;background:var(--bg-elevated);display:flex;align-items:center;justify-content:center;font-size:48px;color:#444}.album-cover img{width:100%;height:100%;object-fit:cover}.album-info{padding:12px}.album-title{font-weight:500;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-artist{font-size:13px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-meta{font-size:11px;color:var(--text-dim);margin-top:4px}.album-detail{flex:1;display:flex;flex-direction:column;overflow:hidden}.album-detail-header{padding:20px;border-bottom:1px solid var(--border-color)}.back-btn{padding:8px 16px;background:transparent;border:1px solid #444;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:13px;margin-bottom:16px;transition:all var(--transition-fast)}.back-btn:hover{background:var(--bg-tertiary);border-color:var(--text-dim)}.album-detail-info{display:flex;gap:20px;align-items:flex-start}.album-detail-cover{width:160px;height:160px;background:var(--bg-elevated);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:64px;color:#444;flex-shrink:0;overflow:hidden}.album-detail-cover img{width:100%;height:100%;object-fit:cover}.album-detail-text h2{margin:0 0 8px;font-size:24px;font-weight:600}.album-detail-artist{margin:0 0 8px;font-size:16px;color:var(--text-muted)}.album-detail-meta{margin:0;font-size:13px;color:var(--text-dim)}.album-tracks{padding-top:16px}.album-tracks .track-header,.album-tracks .track-row{grid-template-columns:32px 50px 1fr 80px}@media(max-width:768px){.library-sidebar{display:none}.library-toolbar{flex-wrap:wrap;gap:8px;padding:12px}.library-search{flex:1 1 100%;max-width:none;order:1}.view-toggle{flex:1;min-width:0;order:2}.view-toggle button{flex:1;padding:8px 12px;font-size:12px}.scan-btn{flex-shrink:0;padding:8px 12px;font-size:12px;order:3}.track-header,.track-row{grid-template-columns:28px 30px 1fr 60px}.col-artist,.col-album,.col-tags{display:none}.play-btn{opacity:1;width:24px;height:24px}.track-list{padding:0 12px 12px}.track-header,.track-row{padding:8px;gap:8px}.album-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;padding:12px}.album-cover{font-size:36px}.album-info{padding:10px}.album-title{font-size:13px}.album-artist{font-size:12px}.album-meta{font-size:10px}.album-detail-header{padding:12px}.album-detail-info{flex-direction:column;align-items:center;text-align:center;gap:12px}.album-detail-cover{width:120px;height:120px;font-size:48px}.album-detail-text h2{font-size:18px}.album-detail-artist{font-size:14px}.album-tracks .track-header,.album-tracks .track-row{grid-template-columns:28px 40px 1fr 60px}}.history-view{flex:1;overflow-y:auto;padding:20px}.history-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.history-header h2{margin:0;font-size:24px;font-weight:600}.clear-history-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:13px;transition:all var(--transition-fast)}.clear-history-btn:hover{background:var(--error-dim);border-color:var(--error);color:var(--error)}.history-list{display:flex;flex-direction:column;gap:24px}.history-date-group{display:flex;flex-direction:column}.history-date-header{font-size:14px;font-weight:600;color:var(--text-muted);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.history-entry{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;margin-bottom:4px;background:var(--bg-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.history-entry:hover{background:var(--bg-tertiary)}.history-entry-info{display:flex;flex-direction:column;gap:4px;overflow:hidden}.history-entry-title{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-entry-artist{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-entry-time{font-size:12px;color:var(--text-muted);white-space:nowrap;margin-left:16px}@media(max-width:768px){.history-view{padding:16px}.history-header{flex-direction:column;align-items:flex-start;gap:12px}.history-header h2{font-size:20px}.history-entry{padding:10px 12px}.history-entry-title{font-size:13px}}.peers-page{display:flex;flex-direction:column;height:100%;overflow:hidden}.peers-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 24px;text-align:center;color:var(--text-dim);height:100%}.peers-page-empty svg{opacity:.4;margin-bottom:16px}.peers-page-empty h2{margin:0 0 8px;font-size:18px;font-weight:500;color:var(--text-secondary)}.peers-page-empty p{margin:0;font-size:14px;max-width:400px;line-height:1.5}.peers-page-header{padding:12px 16px;background:var(--bg-dark);border-bottom:1px solid var(--border)}.peers-page-stats{display:flex;flex-wrap:wrap;gap:16px}.peers-page-stat{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.peers-page-stat.health-good{color:#00c864}.peers-page-stat.health-slow{color:#ffc800}.peers-page-stat.health-bad{color:#ff5050}.peers-page-stat.blocked{color:var(--text-dim)}.peers-page-stat.multiplexed{color:#8b5cf6}.peers-page-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-elevated);border-bottom:1px solid var(--border)}.peers-search-wrapper{position:relative;flex:1;max-width:400px}.peers-search-wrapper svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-dim);pointer-events:none}.peers-search{width:100%;padding:8px 12px 8px 36px;border:1px solid var(--border);border-radius:6px;background:var(--bg-dark);color:var(--text);font-size:13px}.peers-search:focus{outline:none;border-color:var(--accent)}.peers-filters{display:flex;align-items:center;gap:12px}.peers-filter-select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-dark);color:var(--text);font-size:13px;cursor:pointer}.peers-filter-select:focus{outline:none;border-color:var(--accent)}.view-toggle{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.view-toggle button{padding:8px 14px;border:none;background:var(--bg-dark);color:var(--text-dim);font-size:12px;cursor:pointer;transition:all .15s}.view-toggle button:not(:last-child){border-right:1px solid var(--border)}.view-toggle button:hover{color:var(--text)}.view-toggle button.active{background:var(--accent);color:#fff}.peers-page-list{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px}.peers-page-no-results{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;color:var(--text-dim);text-align:center}.peers-page-no-results svg{opacity:.4;margin-bottom:12px}.peers-page-no-results p{margin:0;font-size:14px}.peer-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:12px 16px;transition:border-color .15s}.peer-card:hover{border-color:var(--border-light)}.peer-card.blocked{opacity:.6}.peer-card-header{display:flex;align-items:flex-start;gap:12px}.peer-card-identity{flex:1;min-width:0}.peer-card-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:4px;font-size:12px;color:var(--text-dim)}.peer-card-actions{flex-shrink:0}.peer-card-torrents{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.torrents-label{font-size:11px;color:var(--text-dim);margin-right:8px}.torrent-chips{display:inline-flex;flex-wrap:wrap;gap:6px}.torrent-chip{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;background:var(--bg-dark);color:var(--text-secondary);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.torrent-chip.health-excellent,.torrent-chip.health-good{border-left:3px solid #00c864}.torrent-chip.health-slow{border-left:3px solid #ffc800}.torrent-chip.health-stalled{border-left:3px solid #ff9600}.torrent-chip.health-failed{border-left:3px solid #ff5050}.peer-row{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;transition:border-color .15s}.peer-row:hover{border-color:var(--border-light)}.peer-row.blocked{opacity:.6}.peer-row-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.peer-row-torrent{font-size:11px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.peer-row-stats{display:flex;gap:12px;font-size:12px;color:var(--text-dim);flex-shrink:0}.peer-row-actions{flex-shrink:0}.peer-health-indicator{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.peer-card.health-excellent .peer-health-indicator,.peer-card.health-good .peer-health-indicator,.peer-row.health-excellent .peer-health-indicator,.peer-row.health-good .peer-health-indicator{background:#00c86426;color:#00c864}.peer-card.health-slow .peer-health-indicator,.peer-row.health-slow .peer-health-indicator{background:#ffc80026;color:#ffc800}.peer-card.health-stalled .peer-health-indicator,.peer-row.health-stalled .peer-health-indicator{background:#ff960026;color:#ff9600}.peer-card.health-failed .peer-health-indicator,.peer-row.health-failed .peer-health-indicator{background:#ff505026;color:#ff5050}.peer-action-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-dark);color:var(--text-dim);font-size:12px;cursor:pointer;transition:all .15s}.peer-action-btn:hover{border-color:var(--border-light);color:var(--text)}.peer-action-btn.block:hover{border-color:#ff5050;color:#ff5050;background:#ff50501a}.peer-action-btn.unblock{border-color:#00c864;color:#00c864}.peer-action-btn.unblock:hover{background:#00c8641a}.peer-speed{color:var(--text-secondary)}.peer-status{padding:2px 8px;border-radius:4px;font-size:10px;text-transform:uppercase;font-weight:500}.peer-status-excellent,.peer-status-good{background:#00c86426;color:#00c864}.peer-status-slow{background:#ffc80026;color:#ffc800}.peer-status-stalled{background:#ff960026;color:#ff9600}.peer-status-failed{background:#ff505026;color:#ff5050}@media(max-width:768px){.peers-page-toolbar{flex-direction:column;align-items:stretch;gap:10px}.peers-search-wrapper{max-width:none}.peers-filters{justify-content:space-between}.peer-card-header{flex-wrap:wrap}.peer-card-actions{width:100%;margin-top:8px}.peer-card-actions .peer-action-btn{width:100%;justify-content:center}.peer-row{flex-wrap:wrap}.peer-row-stats{width:100%;margin-top:8px}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{background-color:var(--bg-primary);color:var(--accent-success);font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.4}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;width:100vw;overflow:hidden;overflow-x:clip;position:fixed;top:0;left:0}.splash-screen{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw;background-color:var(--bg-primary)}.splash-content{display:flex;flex-direction:column;align-items:center;gap:1rem}.splash-logo{font-size:4rem;animation:pulse 1.5s ease-in-out infinite}.splash-title{font-size:1.5rem;font-weight:700;color:var(--accent-success)}.splash-loading{font-size:.9rem;color:var(--accent-success-dark)}.home-page,.library-page{flex:1;min-height:0;display:flex;overflow:hidden}.home-page{flex-direction:column}.library-page{flex-direction:row}.main-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.welcome-screen{flex:1;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.welcome-box{text-align:center;padding:60px;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;box-shadow:0 0 40px #00ff001a}.welcome-box h1{font-size:48px;margin-bottom:16px;text-shadow:0 0 20px var(--accent-success-darker);animation:glow 2s ease-in-out infinite alternate}@keyframes glow{0%{text-shadow:0 0 10px var(--accent-success-darker)}to{text-shadow:0 0 30px var(--accent-success),0 0 50px var(--accent-success-darker)}}.welcome-box p{font-size:18px;color:var(--accent-success-light);margin-bottom:8px}.welcome-box .subtitle{font-size:12px;color:var(--accent-success-dark);margin-bottom:24px}.welcome-box .connecting-text{font-size:14px;color:var(--accent-success);animation:pulse 1.5s infinite}.table-container{flex:1;min-height:0;overflow:auto;padding:0}.rdt_Table{background:var(--bg-primary)!important}.rdt_TableRow{border-bottom:1px solid var(--border-color)!important;min-height:36px!important}.rdt_TableRow:hover{background:var(--bg-tertiary)!important}.rdt_TableHeadRow{background:var(--bg-secondary)!important;border-bottom:2px solid var(--accent-success)!important;min-height:36px!important}.rdt_TableCol{color:var(--accent-success)!important;font-weight:700!important;font-size:11px!important;text-transform:uppercase!important;letter-spacing:.5px!important}.rdt_TableCell{color:var(--accent-success)!important;font-size:12px!important}.rdt_Pagination{background:var(--bg-secondary)!important;color:var(--accent-success)!important;border-top:1px solid var(--border-color)!important}.rdt_Pagination button{color:var(--accent-success)!important;fill:var(--accent-success)!important}.rdt_Pagination button:disabled{color:var(--accent-success-dark)!important;fill:var(--accent-success-dark)!important}[data-table-density=compact] .rdt_TableRow,[data-table-density=compact] .rdt_TableHeadRow{min-height:28px!important}[data-table-density=compact] .rdt_TableCell{font-size:11px!important;padding:4px 8px!important}[data-table-density=compact] .rdt_TableCol{font-size:10px!important;padding:4px 8px!important}[data-table-density=compact] .filename-cell{gap:6px}[data-table-density=compact] .filename-cover-thumb,[data-table-density=compact] .filename-cover-placeholder{width:24px;height:24px;min-width:24px}[data-table-density=compact] .filename-cover-placeholder{font-size:12px}[data-table-density=compact] .actions .btn-action{padding:2px 6px;font-size:11px}[data-table-density=compact] .actions svg{width:12px;height:12px}.status-icon{font-size:16px;width:24px;text-align:center;display:inline-block;pointer-events:none}.status-icon.status-seeding{color:var(--accent-success);animation:pulse 1.5s infinite}.status-icon.status-downloading{color:var(--accent-blue);animation:pulse .8s infinite}.status-icon.status-complete{color:var(--accent-success)}.status-icon.status-available{color:var(--accent-success-dark)}.status-icon.status-fetching-metadata{color:var(--accent-success-dark);animation:pulse .8s infinite}.now-playing-indicator{display:inline-flex;align-items:center;justify-content:center}.now-playing-indicator.playing{color:var(--accent-cyan, #0ff);animation:now-playing-pulse 1s ease-in-out infinite}.now-playing-indicator.paused{color:var(--accent-cyan-dim, #088);opacity:.6}@keyframes now-playing-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}.status-icon.now-playing{color:var(--accent-cyan, #0ff)}.filename-cell{display:flex;flex-direction:row;align-items:center;gap:8px;width:100%;padding:4px 0;pointer-events:none}.filename-cover-thumb{width:32px;height:32px;object-fit:cover;border-radius:2px;flex-shrink:0;border:1px solid var(--border-color)}.filename-cover-placeholder{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:2px;flex-shrink:0;background:var(--card-background);border:1px solid var(--border-color);color:var(--text-secondary);font-size:16px}.filename-content{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.filename{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.filename.loading{color:var(--accent-success-dark);font-style:italic}.search-highlight{background:var(--accent-success);color:var(--bg-primary);padding:0 .125rem;border-radius:2px;font-weight:600}.encryption-icon{margin-right:.375rem;font-size:.9em;vertical-align:middle}.loading-meta{font-size:10px;color:var(--accent-success-dark);font-style:italic}.progress-bar{position:relative;height:14px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:2px;overflow:hidden;width:100%;pointer-events:none}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-success-darker) 0%,var(--accent-success) 100%);transition:width .3s ease;box-shadow:0 0 10px var(--accent-success-darker)}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:9px;color:#fff;text-shadow:0 0 2px #000;font-weight:700}.status-text{font-size:11px;text-transform:uppercase;letter-spacing:.5px;pointer-events:none}.status-text.status-seeding{color:var(--accent-success)}.status-text.status-downloading{color:var(--accent-blue)}.status-text.status-complete{color:var(--accent-success)}.status-text.status-available{color:var(--accent-success-dark)}.status-text.status-fetching-metadata{color:var(--accent-success-dark);font-style:italic}.verified-badge{margin-left:4px;color:var(--accent-success);font-size:10px}.unverified-badge{margin-left:4px;color:var(--warning, #f59e0b);font-size:10px}.offer-count{font-size:12px;color:var(--accent-success-dark);font-weight:400}.offer-count.has-offers{color:var(--accent-success);font-weight:700}.peer-count{font-size:12px;color:var(--accent-success-dark);font-weight:400}.peer-count.has-peers{color:var(--accent-blue);font-weight:700}.health-indicator{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:500}.health-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.health-good{color:var(--accent-success)}.health-good .health-dot{background-color:var(--accent-success);box-shadow:0 0 4px var(--accent-success)}.health-medium{color:var(--accent-warning, #f59e0b)}.health-medium .health-dot{background-color:var(--accent-warning, #f59e0b);box-shadow:0 0 4px var(--accent-warning, #f59e0b)}.health-poor{color:var(--accent-danger)}.health-poor .health-dot{background-color:var(--accent-danger);box-shadow:0 0 4px var(--accent-danger)}.health-unknown{color:var(--text-secondary)}.health-unknown .health-dot{background-color:var(--text-secondary);opacity:.5}.eta-cell{font-size:12px;color:var(--accent-success-dark);font-family:var(--font-mono)}.eta-cell.eta-complete{color:var(--accent-success)}.authors-cell{display:flex;flex-direction:column;gap:2px;font-size:11px}.table-author-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.authors-more{color:var(--accent-success-dark);font-size:10px;font-style:italic}.username{color:var(--accent-success-light);font-size:11px;pointer-events:none}.actions{display:flex;gap:6px}.btn-action{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(180deg,var(--border-color) 0%,var(--bg-elevated) 100%);border:1px solid var(--border-color);color:var(--accent-success);padding:4px 12px;font-family:inherit;font-size:11px;cursor:pointer;border-radius:3px;transition:all .15s;white-space:nowrap}.btn-action:hover{background:linear-gradient(180deg,var(--bg-hover) 0%,var(--border-color) 100%);border-color:var(--accent-success)}.no-data{padding:60px;text-align:center;color:var(--accent-success-dark);font-size:14px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#444}::selection{background:var(--accent-success);color:var(--bg-primary)}input[type=checkbox]{accent-color:var(--accent-success)}.modal-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--bg-secondary);border:2px solid var(--accent-success);border-radius:8px;width:90%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 0 40px #00ff004d,0 0 100px #00ff001a}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-color);background:linear-gradient(180deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%)}.modal-header h2{font-size:18px;font-weight:700;color:var(--accent-success);text-shadow:0 0 10px var(--accent-success-darker);margin:0}.modal-close{background:none;border:none;color:var(--accent-success-dark);font-size:24px;cursor:pointer;padding:0;line-height:1;transition:color .15s}.modal-close:hover{color:var(--accent-error)}.modal-body{padding:20px;overflow-y:auto;flex:1}.form-group{margin-bottom:20px}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:12px;color:var(--accent-success-light);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.form-input{width:100%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--accent-success);padding:12px;font-family:inherit;font-size:14px;border-radius:4px;transition:border-color .15s,box-shadow .15s}.form-input:focus{outline:none;border-color:var(--accent-success);box-shadow:0 0 10px var(--accent-success-darker)}.form-input::placeholder{color:var(--accent-success-dark)}.modal-large{max-width:700px;max-height:85vh;display:flex;flex-direction:column}.modal-large .modal-body{flex:1;overflow-y:auto;padding:16px 20px}.modal-section{margin-bottom:20px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-header label{font-weight:700;color:var(--accent-success)}.btn-small{padding:4px 12px;font-size:12px;background:var(--bg-primary);border:1px solid var(--accent-success);color:var(--accent-success);border-radius:4px;cursor:pointer;font-family:inherit}.btn-small:hover{background:#00ff001a}.form-textarea{resize:vertical;min-height:50px}.form-row{display:flex;gap:12px;flex-wrap:wrap}.form-row .form-group{flex:1;min-width:100px}.form-group.flex-1{flex:1}.form-group.flex-2{flex:2}.extracting-notice{background:#00ff001a;border:1px solid var(--accent-success);border-radius:4px;padding:10px 15px;margin-bottom:15px;text-align:center;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;padding:8px 0}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-success);cursor:pointer}.checkbox-hint{color:var(--accent-success-light);font-size:12px;margin-left:4px}.meta-badge{margin-left:6px;font-size:12px;opacity:.8}.file-list{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;max-height:300px;overflow-y:auto}.file-item{border-bottom:1px solid var(--border-color)}.file-item:last-child{border-bottom:none}.file-item.has-role .file-row{background:#00ff0008}.file-row{display:flex;align-items:center;padding:8px 12px;gap:10px;cursor:pointer;transition:background .15s}.file-row:hover{background:#ffffff08}.file-icon{font-size:14px;flex-shrink:0}.file-thumbnail{width:40px;height:40px;object-fit:cover;border-radius:4px;flex-shrink:0;background:var(--bg-secondary)}.file-item.has-thumbnail .file-row{padding:6px 12px}.file-name{flex:1;font-size:13px;color:var(--accent-success);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px}.file-role-badge{font-size:9px;padding:2px 6px;background:var(--accent-success);color:#000;border-radius:3px;text-transform:uppercase;font-weight:700}.processing-badge{font-size:10px;padding:2px 6px;background:var(--accent-warning);color:#000;border-radius:3px;animation:pulse-processing 1s ease-in-out infinite}@keyframes pulse-processing{0%,to{opacity:1}50%{opacity:.6}}.file-item.processing{opacity:.7;pointer-events:none}.file-size{font-size:11px;color:var(--accent-success-dark);flex-shrink:0}.size-warning{color:var(--accent-warning);font-weight:700;margin-left:2px}.file-remove{background:none;border:none;color:var(--accent-success-dark);font-size:16px;cursor:pointer;padding:2px 6px;line-height:1;border-radius:3px}.file-remove:hover{color:var(--accent-error);background:#ff00001a}.file-expand{font-size:10px;color:var(--accent-success-dark);flex-shrink:0;width:16px;text-align:center}.file-drag-handle{cursor:grab;color:var(--accent-success-dark);font-size:14px;padding:0 4px;-webkit-user-select:none;user-select:none;opacity:.5;transition:opacity .15s}.file-item:hover .file-drag-handle{opacity:1}.file-item[draggable=true]{cursor:grab}.file-item.dragging{opacity:.5;background:#00c8ff0d;outline:1px dashed var(--accent)}.file-item.drop-target{background:#00c8ff1a;border-top:2px solid var(--accent)}.file-item.drop-target:last-child{border-bottom:2px solid var(--accent)}.file-item.expanded .file-row{background:#00ff000d;border-bottom:1px solid var(--border-color)}.file-meta-form{padding:12px 16px 16px;background:#0003}.file-meta-form .form-group{margin-bottom:10px}.file-meta-form .form-group:last-child{margin-bottom:0}.file-meta-form label{font-size:10px;text-transform:uppercase;color:var(--accent-success-dark);margin-bottom:4px}.file-meta-form .form-input{padding:6px 10px;font-size:12px}.metadata-section h3{font-size:12px;color:var(--accent-success);text-transform:uppercase;letter-spacing:.5px;margin:0 0 16px}.metadata-section .form-group{margin-bottom:12px}.metadata-section .form-group:last-child{margin-bottom:0}.metadata-section .form-input{padding:8px 10px;font-size:13px}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid var(--border-color);background:linear-gradient(180deg,var(--bg-secondary) 0%,var(--bg-primary) 100%)}.btn-cancel{background:linear-gradient(180deg,var(--border-color) 0%,var(--bg-elevated) 100%);border:1px solid var(--border-color);color:var(--accent-success);padding:10px 24px;font-family:inherit;font-size:13px;cursor:pointer;border-radius:4px;transition:all .15s}.btn-cancel:hover{background:linear-gradient(180deg,var(--bg-hover) 0%,var(--border-color) 100%);border-color:var(--accent-success-dark)}.btn-create{background:linear-gradient(180deg,#050,#030);border:1px solid var(--accent-success);color:var(--accent-success);padding:10px 24px;font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;border-radius:4px;transition:all .15s;text-transform:uppercase;letter-spacing:1px}.btn-create:hover:not(:disabled){background:linear-gradient(180deg,#060,#040);box-shadow:0 0 15px var(--accent-success-darker)}.btn-create:disabled{opacity:.5;cursor:not-allowed}.drag-overlay{position:fixed;inset:0;background:#001400e6;display:flex;align-items:center;justify-content:center;z-index:999;pointer-events:none}.drag-content{display:flex;flex-direction:column;align-items:center;gap:20px;padding:60px;border:3px dashed var(--accent-success);border-radius:16px;background:#00ff000d;animation:drag-pulse 1s ease-in-out infinite}@keyframes drag-pulse{0%,to{box-shadow:0 0 30px var(--accent-success-darker);transform:scale(1)}50%{box-shadow:0 0 60px var(--accent-success);transform:scale(1.02)}}.drag-icon{font-size:64px}.drag-text{font-size:24px;color:var(--accent-success);text-transform:uppercase;letter-spacing:3px;text-shadow:0 0 20px var(--accent-success)}.app.dragging *{pointer-events:none}.owned-badge{margin-right:2px;font-size:12px}.status-icon.owned{display:flex;align-items:center;gap:2px}.username-self{color:#0ff!important;font-weight:700}.btn-danger{background:linear-gradient(180deg,#422,#311)!important;border-color:#f44!important;color:#f66!important}.btn-danger:hover{background:linear-gradient(180deg,#533,#422)!important;border-color:#f66!important;box-shadow:0 0 8px #ff444480!important}.btn-star{background:transparent!important;border:none!important;color:var(--text-muted)!important;padding:4px!important;min-width:28px}.btn-star:hover{color:gold!important;background:transparent!important;box-shadow:none!important}.btn-star.active{color:gold!important}.btn-star.active:hover{color:#fa0!important}.toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:linear-gradient(180deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%);border-bottom:1px solid var(--border-color)}.search-input-wrapper{position:relative;flex:1;max-width:300px;display:flex;align-items:center}.search-input{flex:1;width:100%;background:var(--bg-primary);border:1px solid var(--border-color);color:var(--accent-success);padding:8px 32px 8px 12px;font-family:inherit;font-size:13px;border-radius:4px;transition:border-color .15s,box-shadow .15s}.search-input:focus{outline:none;border-color:var(--accent-success);box-shadow:0 0 8px var(--accent-success-darker)}.search-input::placeholder{color:var(--accent-success-dark)}.search-clear-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:color .15s,background-color .15s}.search-clear-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.filter-select{background:var(--bg-primary);border:1px solid var(--border-color);color:var(--accent-success);padding:8px 12px;font-family:inherit;font-size:13px;border-radius:4px;cursor:pointer;min-width:180px}.filter-select:focus{outline:none;border-color:var(--accent-success)}.filter-select option{background:var(--bg-primary);color:var(--accent-success)}.clear-filters-btn{background:linear-gradient(180deg,var(--border-color) 0%,var(--bg-elevated) 100%);border:1px solid var(--border-color);color:var(--accent-success-light);padding:8px 14px;font-family:inherit;font-size:12px;cursor:pointer;border-radius:4px;transition:all .15s}.clear-filters-btn:hover{background:linear-gradient(180deg,var(--bg-hover) 0%,var(--border-color) 100%);border-color:var(--accent-success);color:var(--accent-success)}.density-toggle-btn{background:linear-gradient(180deg,var(--border-color) 0%,var(--bg-elevated) 100%);border:1px solid var(--border-color);color:var(--accent-success);padding:6px 10px;cursor:pointer;border-radius:4px;transition:all .15s;display:flex;align-items:center;justify-content:center}.density-toggle-btn:hover{background:linear-gradient(180deg,var(--bg-hover) 0%,var(--border-color) 100%);border-color:var(--accent-success)}.media-filter-buttons{display:flex;gap:4px;padding:2px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px}.media-filter-btn{background:transparent;border:none;color:var(--accent-success-light);padding:6px 10px;font-family:inherit;font-size:12px;cursor:pointer;border-radius:4px;transition:all .15s;white-space:nowrap}.media-filter-btn:hover:not(:disabled){background:#00ff001a;color:var(--accent-success)}.media-filter-btn.active{background:var(--accent-success);color:#000;font-weight:600}.media-filter-btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:1024px){.btn-action .btn-label{display:none}}@media(max-width:768px){.app{height:100dvh;height:-webkit-fill-available}.toolbar{flex-wrap:wrap;gap:8px;padding:8px 12px}.search-input-wrapper{flex:1 1 100%;max-width:none;order:1}.filter-select{flex:1;min-width:120px;order:2}.clear-filters-btn{order:4}.media-filter-buttons{order:3;flex:1 1 100%;justify-content:flex-start;overflow-x:auto;padding:4px}.media-filter-btn{padding:6px 8px;font-size:11px}.rdt_TableCol:nth-child(5),.rdt_TableCol:nth-child(6),.rdt_TableCol:nth-child(7),.rdt_TableCell:nth-child(5),.rdt_TableCell:nth-child(6),.rdt_TableCell:nth-child(7){display:none!important}.table-container{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}}.file-viewer{display:flex;flex-direction:column;height:100%;background:var(--bg-primary)}.viewer-header{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.viewer-back-btn{background:none;border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;color:var(--accent-success);font-size:12px;cursor:pointer;transition:all .15s}.viewer-back-btn:hover{background:var(--bg-tertiary);border-color:var(--accent-success)}.viewer-filename{flex:1;font-size:13px;color:var(--accent-success);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewer-type{font-size:10px;color:var(--accent-success-dark);text-transform:uppercase;padding:2px 6px;background:var(--bg-primary);border-radius:3px}.viewer-content{flex:1;overflow:auto;position:relative}.viewer-loading,.viewer-error,.viewer-unsupported{display:flex;align-items:center;justify-content:center;height:100%;color:var(--accent-success-dark);font-size:13px}.viewer-error{color:var(--accent-error)}.text-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.text-viewer-content{flex:1;display:flex;overflow:auto;padding:12px}.text-viewer .line-numbers{flex-shrink:0;padding-right:12px;margin-right:12px;border-right:1px solid var(--border-color);text-align:right;-webkit-user-select:none;user-select:none}.text-viewer .line-number{color:var(--accent-success-dark);font-size:11px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;line-height:1.5}.text-viewer .text-content{flex:1;margin:0;padding:0;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--accent-success)}.text-viewer-truncated{margin-top:16px;padding:12px;background:var(--bg-secondary);border-radius:4px;color:var(--accent-success-dark);font-size:12px;text-align:center}.text-viewer-truncated button{margin-left:12px;background:var(--accent-success);border:none;border-radius:4px;padding:4px 12px;color:#000;font-size:12px;cursor:pointer}.code-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.code-viewer-header{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.code-language{font-size:11px;color:var(--accent-success);text-transform:uppercase;font-weight:600}.code-lines{font-size:10px;color:var(--accent-success-dark)}.code-viewer-content{flex:1;display:flex;overflow:auto;padding:12px}.code-viewer-content .line-numbers{flex-shrink:0;padding-right:12px;margin-right:12px;border-right:1px solid var(--border-color);text-align:right;-webkit-user-select:none;user-select:none}.code-viewer-content .line-number{color:var(--accent-success-dark);font-size:11px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;line-height:1.5}.code-viewer-content .code-content{flex:1;margin:0;padding:0;background:transparent!important;overflow-x:auto}.code-viewer pre{margin:0;padding:0;background:transparent!important}.code-viewer code{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5}.code-viewer .hljs{background:transparent;color:var(--accent-success)}.code-viewer .hljs-keyword,.code-viewer .hljs-selector-tag,.code-viewer .hljs-literal,.code-viewer .hljs-section,.code-viewer .hljs-link{color:#ff79c6}.code-viewer .hljs-string,.code-viewer .hljs-title,.code-viewer .hljs-name,.code-viewer .hljs-type,.code-viewer .hljs-attribute,.code-viewer .hljs-symbol,.code-viewer .hljs-bullet,.code-viewer .hljs-addition,.code-viewer .hljs-variable,.code-viewer .hljs-template-tag,.code-viewer .hljs-template-variable{color:#f1fa8c}.code-viewer .hljs-comment,.code-viewer .hljs-quote,.code-viewer .hljs-deletion,.code-viewer .hljs-meta{color:#6272a4}.code-viewer .hljs-number,.code-viewer .hljs-regexp,.code-viewer .hljs-built_in,.code-viewer .hljs-builtin-name{color:#bd93f9}.code-viewer .hljs-function{color:#50fa7b}.image-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.image-viewer-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.image-viewer-toolbar button{background:none;border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;color:var(--accent-success);font-size:12px;cursor:pointer;transition:all .15s}.image-viewer-toolbar button:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent-success)}.image-viewer-toolbar button:disabled{opacity:.4;cursor:not-allowed}.image-controls{display:flex;align-items:center;gap:8px}.zoom-level{font-size:11px;color:var(--accent-success-dark);min-width:40px;text-align:center}.image-counter{font-size:11px;color:var(--accent-success-dark);margin-left:auto}.image-nav{display:flex;gap:4px}.image-viewer-content{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;padding:12px}.image-viewer-content img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .15s}.image-viewer-error{display:flex;align-items:center;justify-content:center;height:100%}.image-viewer-error .error-message{color:var(--accent-error);font-size:13px}.pdf-viewer{display:flex;flex-direction:column;height:100%;overflow:hidden}.pdf-controls{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.pdf-controls button{background:none;border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;color:var(--accent-success);font-size:12px;cursor:pointer;transition:all .15s}.pdf-controls button:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent-success)}.pdf-controls button:disabled{opacity:.4;cursor:not-allowed}.pdf-nav{display:flex;align-items:center;gap:8px}.pdf-page-indicator{font-size:11px;color:var(--accent-success-dark);min-width:80px;text-align:center}.pdf-zoom{display:flex;align-items:center;gap:8px;margin-left:auto}.pdf-zoom span{font-size:11px;color:var(--accent-success-dark);min-width:40px;text-align:center}.pdf-canvas-container{flex:1;overflow:auto;display:flex;justify-content:center;padding:16px;background:#404040}.pdf-canvas-container .react-pdf__Document{display:flex;flex-direction:column;align-items:center;gap:16px}.pdf-canvas-container .react-pdf__Page{box-shadow:0 2px 8px #0000004d}.pdf-loading{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--accent-success-dark)}.pdf-viewer-error{display:flex;align-items:center;justify-content:center;height:100%}.pdf-viewer-error .error-message{color:var(--accent-error);font-size:13px}.markdown-viewer{padding:16px 24px;overflow:auto;height:100%}.markdown-content{color:var(--accent-success);font-size:14px;line-height:1.7}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--accent-success);margin-top:24px;margin-bottom:12px;font-weight:600}.markdown-content h1{font-size:24px;border-bottom:1px solid var(--border-color);padding-bottom:8px}.markdown-content h2{font-size:20px;border-bottom:1px solid var(--border-color);padding-bottom:6px}.markdown-content h3{font-size:16px}.markdown-content h4{font-size:14px}.markdown-content p{margin:12px 0}.markdown-content a{color:var(--accent-success);text-decoration:none}.markdown-content a:hover{text-decoration:underline}.markdown-content code{background:var(--bg-secondary);padding:2px 6px;border-radius:3px;font-family:Monaco,Menlo,monospace;font-size:12px}.markdown-content pre{background:var(--bg-secondary);padding:12px 16px;border-radius:6px;overflow-x:auto}.markdown-content pre code{background:none;padding:0}.markdown-content blockquote{border-left:3px solid var(--accent-success);margin:12px 0;padding-left:16px;color:var(--accent-success-dark)}.markdown-content ul,.markdown-content ol{margin:12px 0;padding-left:24px}.markdown-content li{margin:6px 0}.markdown-content img{max-width:100%;border-radius:4px}.markdown-content table{border-collapse:collapse;width:100%;margin:16px 0}.markdown-content th,.markdown-content td{border:1px solid var(--border-color);padding:8px 12px;text-align:left}.markdown-content th{background:var(--bg-secondary);font-weight:600}.markdown-content hr{border:none;border-top:1px solid var(--border-color);margin:24px 0}.html-viewer{display:flex;flex-direction:column;height:100%}.html-viewer-toolbar{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.html-viewer-toolbar button{background:none;border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;color:var(--accent-success);font-size:11px;cursor:pointer;transition:all .15s}.html-viewer-toolbar button:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent-success)}.html-viewer-toolbar button:disabled{opacity:.4;cursor:not-allowed}.html-current-file{margin-left:auto;font-size:11px;color:var(--accent-success-dark)}.html-iframe{flex:1;border:none;background:#fff}.html-viewer-error{display:flex;align-items:center;justify-content:center}.html-viewer-error .error-message{color:var(--accent-error);font-size:13px}.image-gallery{padding:12px;height:100%;overflow:auto}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.gallery-item{aspect-ratio:1;background:var(--bg-secondary);border-radius:6px;overflow:hidden;cursor:pointer;position:relative;transition:transform .15s,box-shadow .15s}.gallery-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.gallery-thumbnail{width:100%;height:100%;object-fit:cover}.gallery-placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-primary) 100%);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.gallery-item-name{position:absolute;bottom:0;left:0;right:0;padding:6px 8px;background:linear-gradient(transparent,#000c);font-size:10px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lightbox-overlay{position:fixed;inset:0;background:#000000f2;z-index:1000;display:flex;align-items:center;justify-content:center}.lightbox-close{position:absolute;top:16px;right:16px;background:none;border:none;color:#fff;font-size:32px;cursor:pointer;z-index:1001;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .15s}.lightbox-close:hover{background:#ffffff1a}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1a;border:none;color:#fff;font-size:24px;cursor:pointer;padding:16px;border-radius:4px;transition:background .15s}.lightbox-nav:hover:not(:disabled){background:#fff3}.lightbox-nav:disabled{opacity:.3;cursor:not-allowed}.lightbox-nav.prev{left:16px}.lightbox-nav.next{right:16px}.lightbox-content{max-width:90vw;max-height:85vh;object-fit:contain}.lightbox-counter{position:absolute;bottom:48px;left:50%;transform:translate(-50%);color:#fff;font-size:13px;background:#00000080;padding:6px 12px;border-radius:4px}.lightbox-filename{position:absolute;bottom:16px;left:50%;transform:translate(-50%);color:#ffffffb3;font-size:11px;max-width:80%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-mode{display:flex;flex-direction:column;height:100%}.btn-view-toggle{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:4px;padding:6px 12px;color:var(--accent-success);font-size:12px;cursor:pointer;transition:all .15s}.btn-view-toggle:hover{background:var(--bg-tertiary);border-color:var(--accent-success)}.file-action-btn.preview-btn{background:var(--bg-secondary)}.file-action-btn.preview-btn:hover{background:var(--accent-success);color:#000}
