:root{color-scheme:light dark;--spacing-xs: .4rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius: .5rem;--transition: .2s cubic-bezier(.4, 0, .2, 1);--shadow-sm: 0 4px 12px rgba(0, 0, 0, .15);--shadow-md: 0 6px 16px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .8);--cover-filter: blur(50px) brightness(.4)}:root[data-theme=monochrome]{color-scheme:dark;--background: #000;--foreground: #fafafa;--card: #111;--card-foreground: #fafafa;--primary: #fafafa;--primary-foreground: #111;--secondary: #27272a;--secondary-foreground: #fafafa;--muted: #27272a;--muted-foreground: #a1a1aa;--border: #27272a;--input: #27272a;--ring: #fafafa;--highlight: #fff;--highlight-rgb: 255, 255, 255;--active-highlight: var(--highlight);--explicit-badge: #fafafa}:root[data-theme=dark]{color-scheme:dark;--background: #0a0a0a;--foreground: #ededed;--card: #1a1a1a;--card-foreground: #ededed;--primary: #3b82f6;--primary-foreground: #fff;--secondary: #2a2a2a;--secondary-foreground: #ededed;--muted: #2a2a2a;--muted-foreground: #a0a0a0;--border: #2a2a2a;--input: #2a2a2a;--ring: #3b82f6;--highlight: #3b82f6;--highlight-rgb: 59, 130, 246;--active-highlight: #3b82f6;--explicit-badge: #750a0a}:root[data-theme=ocean]{color-scheme:dark;--background: #0c1821;--foreground: #e0f4ff;--card: #1b2838;--card-foreground: #e0f4ff;--primary: #06b6d4;--primary-foreground: #0c1821;--secondary: #1e3a52;--secondary-foreground: #e0f4ff;--muted: #1e3a52;--muted-foreground: #94c5e0;--border: #1e3a52;--input: #1e3a52;--ring: #06b6d4;--highlight: #06b6d4;--highlight-rgb: 6, 182, 212;--active-highlight: #06b6d4;--explicit-badge: #f43f5e}:root[data-theme=purple]{color-scheme:dark;--background: #0f0514;--foreground: #f3e8ff;--card: #1e0a2e;--card-foreground: #f3e8ff;--primary: #a855f7;--primary-foreground: #fff;--secondary: #2d1545;--secondary-foreground: #f3e8ff;--muted: #2d1545;--muted-foreground: #c4b5fd;--border: #2d1545;--input: #2d1545;--ring: #a855f7;--highlight: #a855f7;--highlight-rgb: 168, 85, 247;--active-highlight: #a855f7;--explicit-badge: #ec4899}:root[data-theme=forest]{color-scheme:dark;--background: #0a1409;--foreground: #e8f5e9;--card: #1a2e1a;--card-foreground: #e8f5e9;--primary: #22c55e;--primary-foreground: #0a1409;--secondary: #2d4a2d;--secondary-foreground: #e8f5e9;--muted: #2d4a2d;--muted-foreground: #86efac;--border: #2d4a2d;--input: #2d4a2d;--ring: #22c55e;--highlight: #22c55e;--highlight-rgb: 34, 197, 94;--active-highlight: #22c55e;--explicit-badge: #f59e0b}:root[data-theme=mocha]{color-scheme:dark;--background: #1e1e2e;--foreground: #cdd6f4;--card: #313244;--card-foreground: #9399b2;--primary: #89b4fa;--primary-foreground: #313244;--secondary: #45475a;--secondary-foreground: #9399b2;--muted: #313244;--muted-foreground: #a6adc8;--border: #313244;--input: #45475a;--ring: #89b4fa;--highlight: #89b4fa;--highlight-rgb: #b4befe;--active-highlight: #b4befe;--explicit-badge: #f9e2af}:root[data-theme=machiatto]{color-scheme:dark;--background: #24273a;--foreground: #cad3f5;--card: #363a4f;--card-foreground: #939ab7;--primary: #8aadf4;--primary-foreground: #363a4f;--secondary: #494d64;--secondary-foreground: #6e738d;--muted: #363a4f;--muted-foreground: #a5adcb;--border: #363a4f;--input: #494d64;--ring: #8aadf4;--highlight: #8aadf4;--highlight-rgb: #b7bdf8;--active-highlight: #b7bdf8;--explicit-badge: #eed49f}:root[data-theme=frappe]{color-scheme:dark;--background: #303446;--foreground: #c6d0f5;--card: #414559;--card-foreground: #949cbb;--primary: #8caaee;--primary-foreground: #313244;--secondary: #51576d;--secondary-foreground: #a5adce;--muted: #414559;--muted-foreground: #a5adce;--border: #414559;--input: #45475a;--ring: #8caaee;--highlight: #8caaee;--highlight-rgb: #babbf1;--active-highlight: #babbf1;--explicit-badge: #e5c890}:root[data-theme=latte]{color-scheme:light;--background: #eff1f5;--foreground: #4c4f69;--card: #ccd0da;--card-foreground: #7c7f93;--primary: #1e66f5;--primary-foreground: #ccd0da;--secondary: #bcc0cc;--secondary-foreground: #9ca0b0;--muted: #ccd0da;--muted-foreground: #6c6f85;--border: #ccd0da;--input: #bcc0cc;--ring: #1e66f5;--highlight: #1e66f5;--highlight-rgb: #7287fd;--active-highlight: #7287fd;--explicit-badge: #df8e1d}:root[data-theme=light]{color-scheme:light;--background: #ffffff;--foreground: #000000;--card: #f4f4f5;--card-foreground: #000000;--primary: #2563eb;--primary-foreground: #ffffff;--secondary: #e4e4e7;--secondary-foreground: #000000;--muted: #e4e4e7;--muted-foreground: #71717a;--border: #e4e4e7;--input: #e4e4e7;--ring: #2563eb;--highlight: #2563eb;--highlight-rgb: 37, 99, 235;--active-highlight: var(--highlight);--explicit-badge: #f58a8a;--cover-filter: blur(50px) brightness(1.6) opacity(.35)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%;overflow:hidden}body{background-color:var(--background);color:var(--foreground);font-family:Inter,sans-serif;overflow:hidden;transition:background-color .3s ease,color .3s ease;height:100%;position:fixed;width:100%}img{max-width:100%;display:block;background-color:var(--muted);border:none}a{color:inherit;text-decoration:none}.text-link{color:var(--primary);text-decoration:underline;cursor:pointer}.text-link:hover{color:var(--highlight)}kbd{background-color:var(--secondary);border:1px solid var(--border);border-radius:4px;padding:.25rem .5rem;font-size:.85rem;font-family:Courier New,monospace;box-shadow:0 2px 4px #0000001a}.app-container{display:grid;height:100vh;height:100dvh;grid-template:"sidebar main" 1fr "player player" auto / 190px 1fr}.sidebar{grid-area:sidebar;background-color:var(--background);border-right:1px solid var(--border);padding:1.25rem;display:flex;flex-direction:column;gap:2rem;transition:transform .3s cubic-bezier(.4,0,.2,1)}.main-content{grid-area:main;overflow-y:auto;padding:var(--spacing-xl);scroll-behavior:smooth;position:relative}.main-header,.page{position:relative;z-index:1}#page-background{position:absolute;top:0;left:0;width:100%;height:60vh;min-height:400px;z-index:0;background-size:cover;background-position:center 20%;background-repeat:no-repeat;opacity:0;transition:opacity .5s ease-in-out;mask-image:linear-gradient(to bottom,#000,#000c 40%,#0000);-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,1) 0%,rgba(0,0,0,.8) 40%,rgba(0,0,0,0) 100%);filter:var(--cover-filter);pointer-events:none}#page-background.active{opacity:1}:root[data-theme=light] #page-background{mask-image:linear-gradient(to bottom,#000,#0000);-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,1) 0%,rgba(0,0,0,0) 100%)}.now-playing-bar{grid-area:player;background-color:var(--card);border-top:1px solid var(--border);padding:var(--spacing-md) var(--spacing-lg);display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;gap:var(--spacing-xl);position:relative;z-index:2100;height:var(--player-bar-height-desktop)}.sidebar-logo{display:flex;align-items:center;gap:.75rem;font-size:1.1rem;font-weight:600;margin-bottom:1rem}.sidebar-logo svg{width:15px;height:15px}.sidebar-nav ul{list-style:none}.sidebar-nav .nav-item a{display:flex;align-items:center;gap:.75rem;padding:.75rem;border-radius:var(--radius);color:var(--muted-foreground);font-weight:500;transition:all var(--transition);cursor:pointer}.sidebar-nav .nav-item a:hover{background-color:var(--secondary);color:var(--foreground)}.sidebar-nav .nav-item a.active{background-color:var(--primary);color:var(--primary-foreground)}.sidebar-nav .nav-item a svg{width:20px;height:20px}#sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:1999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.main-header{display:flex;justify-content:center;align-items:center;margin-bottom:var(--spacing-xl);gap:var(--spacing-md);position:relative}.navigation-controls{display:flex;gap:.5rem;align-items:center}.nav-btn{width:32px;height:32px;border-radius:50%;background-color:var(--card);border:none;color:var(--foreground);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.nav-btn:hover{background-color:var(--secondary);transform:scale(1.05)}.nav-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.hamburger-menu{display:none;background:transparent;border:none;color:var(--foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:background-color var(--transition)}.hamburger-menu:hover{background-color:var(--secondary)}.search-bar{position:relative;width:100%;max-width:400px}.search-bar svg{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--muted-foreground);width:20px;height:20px;pointer-events:none}.search-bar input{width:100%;padding:.75rem .75rem .75rem 2.5rem;background-color:var(--input);border:1px solid var(--border);border-radius:var(--radius);color:var(--foreground);font-size:1rem;transition:border-color var(--transition)}.search-bar input:focus{outline:none;border-color:var(--ring)}body.has-page-background .search-bar input{background-color:var(--background)}body.has-page-background .track-item:hover{background-color:var(--track-hover-bg, var(--secondary))}.page{display:none}.page.active{display:block;animation:fadeIn .25s cubic-bezier(.4,0,.2,1)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.animate-spin{animation:spin 1s linear infinite}.content-section{margin-bottom:var(--spacing-2xl)}.section-title{font-size:1.75rem;font-weight:700;margin-bottom:var(--spacing-lg)}.search-tabs{display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-lg);border-bottom:1px solid var(--border)}.search-tab{background:transparent;border:none;color:var(--muted-foreground);padding:var(--spacing-sm) var(--spacing-lg);cursor:pointer;font-size:1rem;font-weight:500;border-bottom:2px solid transparent;transition:all var(--transition)}.search-tab:hover{color:var(--foreground)}.search-tab.active{color:var(--foreground);border-bottom-color:var(--highlight)}.search-tab-content{display:none}.search-tab-content.active{display:block;animation:fadeIn .25s cubic-bezier(.4,0,.2,1)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--spacing-lg)}.card{display:block;background-color:var(--card);border-radius:var(--radius);padding:1rem;transition:all var(--transition)}.card:hover{background-color:var(--secondary);transform:translateY(-2px)}.card-image-wrapper{position:relative;width:100%;margin-bottom:1rem}.card-like-btn{position:absolute;top:2%;right:2%;background:#00000040!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:50%!important;width:32px!important;height:32px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;opacity:0;transform:scale(.8);transition:all .2s ease!important;z-index:10;color:#fff!important;border:none!important}.card:hover .card-like-btn,.card-like-btn.active{opacity:1;transform:scale(1)}.card-like-btn:hover{background:#000000b3!important;transform:scale(1.1)!important}.card-like-btn.active{color:#ef4444!important}.edit-playlist-btn,.delete-playlist-btn{position:absolute;top:2%;background:#00000080!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:50%!important;width:32px!important;height:32px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;opacity:0;transform:scale(.8);transition:all .2s ease!important;z-index:10;color:#fff!important;border:none!important;cursor:pointer}.edit-playlist-btn{right:2%}.delete-playlist-btn{left:2%}.card:hover .edit-playlist-btn,.card:hover .delete-playlist-btn{opacity:1;transform:scale(1)}.edit-playlist-btn:hover,.delete-playlist-btn:hover{background:#000c!important;transform:scale(1.1)!important}.delete-playlist-btn:hover{color:#ef4444!important}.card-image{width:100%;aspect-ratio:1/1;background-color:var(--muted);border-radius:calc(var(--radius) - 4px);object-fit:cover}.card-collage{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;overflow:hidden;padding:0}.card-collage img{width:100%;height:100%;object-fit:cover;border-radius:0;margin:0}.card-collage.items-3 img:first-child{grid-row:span 2;height:100%}.card-collage.items-2{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.card.artist .card-image{border-radius:50%}.card-image-wrapper .explicit-badge{position:absolute;top:.5rem;right:.5rem}.card-title{font-weight:600;margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-subtitle{font-size:.9rem;color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heart-icon{transition:transform .2s ease,color .2s ease}.like-btn:hover .heart-icon{color:#ef4444}.heart-icon.filled{color:#ef4444;fill:#ef4444}.track-item:hover .like-btn{opacity:1}.like-btn.active .heart-icon{color:#ef4444;fill:#ef4444}.explicit-badge{background-color:var(--secondary);color:var(--muted-foreground);font-size:.6rem;font-weight:700;padding:.15rem .3rem;border-radius:3px;margin-left:.5rem;vertical-align:middle;line-height:1}.track-list{display:flex;flex-direction:column;gap:2px}.track-list-header{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);color:var(--muted-foreground);font-size:.9rem;border-bottom:1px solid var(--border);margin-bottom:var(--spacing-xs)}.track-list-header .duration-header{justify-self:flex-end}.track-item{display:grid;grid-template-columns:40px 1fr auto auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);border-radius:var(--radius);cursor:pointer;transition:all var(--transition);position:relative}.track-item:hover{background-color:var(--secondary)}.track-item.playing{background-color:rgba(var(--highlight-rgb),.15);border-left:3px solid var(--highlight);padding-left:calc(var(--spacing-sm) - 3px)}.track-item.playing .track-number,.track-item.playing .track-item-details .title{color:var(--highlight);font-weight:600}.track-item.dragging{opacity:.5;z-index:1000}.track-number{color:var(--muted-foreground);text-align:center;font-size:.9rem;display:flex;align-items:center;justify-content:center}.track-item-info{display:flex;align-items:center;gap:var(--spacing-md);min-width:0}.track-item-cover{width:40px;height:40px;background-color:var(--muted);border-radius:4px;object-fit:cover;flex-shrink:0}.track-item-details{min-width:0}.track-item-details .title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center}.track-item-details .artist{font-size:.9rem;color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-item-duration{color:var(--muted-foreground);justify-self:flex-end;font-variant-numeric:tabular-nums}.track-item-actions{justify-self:flex-end;display:flex;align-items:center;min-width:40px;justify-content:flex-end}.track-menu-btn{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:all var(--transition);display:none;align-items:center;justify-content:center;opacity:0;z-index:10}[data-track-actions-mode=dropdown] .track-menu-btn{display:flex}.track-item:hover .track-menu-btn{opacity:1}.track-menu-btn:hover{background-color:rgba(var(--highlight-rgb),.2);color:var(--foreground)}.track-actions-inline{display:none;gap:.25rem;opacity:.2;transition:opacity var(--transition)}.track-action-btn.active{opacity:1}[data-track-actions-mode=inline] .track-actions-inline{display:flex}.track-item:hover .track-actions-inline{opacity:1}.track-action-btn{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:all var(--transition);display:flex;align-items:center;justify-content:center;flex-shrink:0}.track-action-btn:hover{background-color:rgba(var(--highlight-rgb),.2);color:var(--foreground)}.detail-header{display:flex;align-items:flex-start;gap:var(--spacing-xl);margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-md)}.detail-header-image{width:200px;height:200px;flex-shrink:0;background-color:var(--muted);border-radius:var(--radius);object-fit:cover;box-shadow:var(--shadow-lg);transition:opacity .3s ease-in-out}.detail-header-image.loading{opacity:.3}.detail-header-image.artist{border-radius:50%}.detail-header-info .type{font-weight:600;margin-bottom:.5rem}.detail-header-info .title{font-size:4rem;font-weight:800;line-height:1.1;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;word-break:break-word}.detail-header-info .title.long-title{font-size:2.5rem}.detail-header-info .title.very-long-title{font-size:1.75rem}.artist-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-left:1rem}.artist-tag{background-color:var(--secondary);color:var(--muted-foreground);padding:.15rem .6rem;border-radius:1rem;font-size:.75rem;font-weight:500;text-transform:capitalize}.detail-header-info .meta{color:var(--muted-foreground);margin-top:1rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.detail-header-info .meta a{color:var(--foreground);text-decoration:none;transition:color var(--transition)}.detail-header-info .meta a:hover{color:var(--highlight)}.detail-header-actions{display:flex;gap:1rem;margin-top:1.5rem;flex-wrap:wrap}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1.75rem;background-color:var(--primary);color:var(--primary-foreground);border:none;border-radius:2rem;font-weight:600;font-size:.95rem;cursor:pointer;transition:all var(--transition);box-shadow:var(--shadow-sm);-webkit-tap-highlight-color:transparent}.btn-primary:hover{transform:scale(1.05);box-shadow:var(--shadow-md)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary svg{flex-shrink:0}.btn-secondary{padding:.5rem 1rem;background-color:var(--secondary);color:var(--foreground);border:none;border-radius:var(--radius);cursor:pointer;font-weight:500;transition:all var(--transition)}.btn-secondary:hover{background-color:var(--muted)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary.danger{background:#ef4444;color:#fff}.btn-secondary.danger:hover{background:#dc2626}.detail-header-actions .btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1.75rem;border-radius:2rem;font-weight:600;font-size:.95rem}.detail-header-actions .btn-secondary:hover{transform:scale(1.05)}.modal-actions .btn-secondary{padding:.875rem 1.75rem;border-radius:2rem;font-weight:600;font-size:.95rem}.settings-list{max-width:800px}.settings-group{border-bottom:1px solid var(--border);padding:var(--spacing-lg) 0;display:flex;flex-direction:column;gap:var(--spacing-md)}.settings-group .setting-item{border-bottom:none;padding:0}.setting-item{display:flex;justify-content:space-between;padding:var(--spacing-lg) 0;border-bottom:1px solid var(--border);gap:var(--spacing-lg)}.setting-item .info{display:flex;flex-direction:column}.setting-item .label{font-weight:500}.setting-item .description{font-size:.9rem;color:var(--muted-foreground)}.setting-item select,.setting-item input[type=number]{background-color:var(--input);color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem}.setting-item input[type=number]{width:100px}.template-input{width:100%;max-width:400px;padding:.5rem;background-color:var(--input);border:1px solid var(--border);border-radius:var(--radius);color:var(--foreground);font-size:.9rem;font-family:Courier New,monospace}.template-input:focus{outline:none;border-color:var(--ring)}.toggle-switch{position:relative;display:inline-block;width:40px;height:24px}.toggle-switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:var(--secondary);transition:.3s cubic-bezier(.4,0,.2,1);border-radius:24px}.slider:before{position:absolute;content:"";height:16px;width:16px;left:4px;bottom:4px;background-color:var(--foreground);transition:.3s cubic-bezier(.4,0,.2,1);border-radius:50%}input:checked+.slider{background-color:var(--primary)}input:checked+.slider:before{transform:translate(16px);background-color:var(--primary-foreground)}.track-info{display:flex;align-items:center;gap:1rem;min-width:0}.track-info .cover{width:56px;height:56px;border-radius:4px;background-color:var(--muted);object-fit:cover;flex-shrink:0}.track-info .details{min-width:0}.track-info .details .title{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:color var(--transition)}.track-info .details .title:hover{color:var(--highlight)}.track-info .details .artist{font-size:.8rem;color:var(--muted-foreground);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:color var(--transition)}.track-info .details .artist:hover{color:var(--highlight)}.player-controls{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm)}.player-controls .buttons{display:flex;align-items:center;gap:var(--spacing-md)}.player-controls .buttons button{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;position:relative;-webkit-tap-highlight-color:transparent}.player-controls .buttons button:hover{color:var(--foreground);background-color:var(--secondary)}.player-controls .buttons button.active{color:var(--active-highlight)}.player-controls .buttons button#repeat-btn.repeat-one:after{content:"1";position:absolute;font-size:.5rem;font-weight:700}.player-controls .buttons .play-pause-btn{background-color:var(--primary);color:var(--primary-foreground);width:36px;height:36px}.player-controls .buttons .play-pause-btn:hover{transform:scale(1.05);background-color:var(--primary);color:var(--primary-foreground)}.player-controls .progress-container{width:100%;max-width:500px;display:flex;align-items:center;gap:.75rem;font-size:.8rem;color:var(--muted-foreground)}.player-controls .progress-container span{min-width:40px;font-variant-numeric:tabular-nums;flex-shrink:0}#current-time{text-align:right}.progress-bar,.volume-bar{position:relative;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none}.progress-bar{flex-grow:1;height:6px;background-color:var(--secondary);border-radius:3px}.progress-bar:hover{height:8px}.progress-bar .progress-fill{width:0;height:100%;background-color:var(--muted-foreground);border-radius:3px;transition:background-color .2s ease;position:relative;pointer-events:none}.progress-bar:hover .progress-fill{background-color:var(--highlight)}.progress-bar:hover .progress-fill:after,.progress-bar:active .progress-fill:after{content:"";position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px;height:12px;background-color:var(--highlight);border-radius:50%;box-shadow:0 2px 4px #0000004d}.volume-controls{display:flex;justify-content:flex-end;align-items:center;gap:.75rem}.volume-controls button{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;transition:all var(--transition);padding:.25rem;width:28px;height:28px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center}.volume-controls button:hover{color:var(--foreground);background-color:var(--secondary)}.volume-controls .volume-bar{width:100px;height:4px;background-color:var(--secondary);border-radius:2px}.volume-controls .volume-bar:hover{height:6px}.volume-controls .volume-bar .volume-fill{width:var(--volume-level, 70%);height:100%;background-color:var(--muted-foreground);border-radius:2px;transition:background-color .2s ease;position:relative;pointer-events:none}.volume-controls .volume-bar:hover .volume-fill{background-color:var(--highlight)}.volume-controls .volume-bar:hover .volume-fill:after,.volume-controls .volume-bar:active .volume-fill:after{content:"";position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px;height:12px;background-color:var(--highlight);border-radius:50%;box-shadow:0 2px 4px #0000004d}#sleep-timer-btn{position:relative;font-size:.8rem;font-weight:700;transition:all var(--transition)}#sleep-timer-btn:hover{color:var(--highlight)}#sleep-timer-btn.active{color:var(--primary);text-shadow:0 0 8px rgba(var(--highlight-rgb),.5)}#sleep-timer-btn svg{width:20px;height:20px}#sleep-timer-btn span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}#context-menu{display:none;position:fixed;background-color:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;box-shadow:var(--shadow-lg);z-index:3000;min-width:160px}#context-menu ul{list-style:none}#context-menu li{padding:.5rem .75rem;cursor:pointer;border-radius:4px;transition:background-color var(--transition);font-size:.9rem}#context-menu li:hover{background-color:var(--secondary)}#queue-modal-overlay{display:none;position:fixed;inset:0;background-color:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:3000;justify-content:center;align-items:center;animation:fadeIn .2s cubic-bezier(.4,0,.2,1)}#fullscreen-cover-overlay{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:fadeIn .3s ease;overflow:hidden;background-color:var(--background);--bg-image: none;padding-bottom:90px}#fullscreen-cover-overlay:before{content:"";position:absolute;inset:-20px;background-size:cover;background-position:center;background-repeat:no-repeat;filter:var(--cover-filter);z-index:-1;background-image:var(--bg-image);transition:background-image var(--transition)}.fullscreen-cover-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative}#close-fullscreen-cover-btn{position:absolute;top:1rem;right:1rem;background-color:var(--background);border:none;color:var(--foreground);font-size:2rem;width:48px;height:48px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .2s;z-index:10;opacity:.5}#close-fullscreen-cover-btn:hover{opacity:.8}#fullscreen-cover-image{max-width:80vw;max-height:60vh;border-radius:var(--radius);box-shadow:0 20px 50px #00000080;object-fit:contain;margin-bottom:2rem;z-index:1}.fullscreen-track-info{text-align:center;z-index:1;max-width:90%;background:color-mix(in srgb,var(--card),transparent 80%);padding:1rem 1.5rem;border-radius:var(--radius);border:1px solid color-mix(in srgb,var(--card),transparent 70%)}#fullscreen-track-title{font-size:2rem;font-weight:700;margin-bottom:.5rem;color:var(--foreground);word-break:break-word}#fullscreen-track-artist{font-size:1.25rem;color:color-mix(in srgb,var(--foreground),transparent 40%);font-weight:500}#fullscreen-next-track{margin-top:1.5rem;font-size:.9rem;color:color-mix(in srgb,var(--foreground),transparent 40%);display:flex;flex-direction:column;gap:.2rem;opacity:0}#fullscreen-next-track.animate-in{animation:fadeIn .5s ease .2s forwards}#fullscreen-next-track .label{text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;opacity:.8}#fullscreen-next-track .value{font-weight:500;color:var(--foreground)}#queue-modal{background-color:var(--card);width:90%;max-width:500px;max-height:80vh;border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:var(--shadow-xl);animation:scaleIn .2s cubic-bezier(.4,0,.2,1)}#queue-modal-header{padding:1rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border)}#queue-modal-header h3{margin:0}#queue-modal-header #close-queue-btn{background:transparent;border:none;color:var(--muted-foreground);font-size:1.5rem;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);transition:all var(--transition)}#queue-modal-header #clear-queue-btn{background-color:transparent}#queue-modal-header #clear-queue-btn:hover,#queue-modal-header #close-queue-btn:hover{background-color:var(--secondary);color:var(--foreground)}#queue-list{overflow-y:auto;padding:.5rem}.queue-track-item{display:grid;grid-template-columns:32px 1fr auto auto auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);border-radius:var(--radius);cursor:grab;transition:all var(--transition);margin-bottom:2px}.queue-track-item .queue-like-btn{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:all var(--transition);display:flex;align-items:center;justify-content:center;opacity:.2}.queue-track-item:hover .queue-like-btn{opacity:1}.queue-track-item .queue-like-btn:hover{background-color:rgba(var(--highlight-rgb),.2);color:var(--foreground)}.queue-track-item .queue-like-btn.active{color:#ef4444}.queue-track-item .queue-like-btn.active svg{fill:#ef4444;color:#ef4444}.queue-track-item:active{cursor:grabbing}.queue-track-item:hover{background-color:var(--secondary)}.queue-track-item.playing{background-color:rgba(var(--highlight-rgb),.15);border-left:3px solid var(--highlight);padding-left:calc(var(--spacing-sm) - 3px)}.queue-track-item .drag-handle{color:var(--muted-foreground);display:flex;align-items:center;justify-content:center;cursor:grab}.queue-track-item .queue-remove-btn{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:all var(--transition);display:flex;align-items:center;color:var(--foreground);justify-content:center;flex-shrink:0;opacity:.2}.queue-track-item:hover .queue-remove-btn{opacity:1}.queue-track-item .queue-remove-btn:hover{background-color:var(--background);color:var(--foreground)}.queue-track-item .queue-remove-btn svg{width:20px;height:20px}.placeholder-text{padding:2rem 1rem;color:var(--muted-foreground)}.placeholder-text.loading{animation:pulse 1.5s infinite ease-in-out}.skeleton{background:linear-gradient(90deg,var(--secondary) 0%,var(--muted) 50%,var(--secondary) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius)}.skeleton-track{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);margin-bottom:2px}.skeleton-track-number{width:24px;height:20px;margin:0 auto}.skeleton-track-info{display:flex;align-items:center;gap:var(--spacing-md);min-width:0}.skeleton-track-cover{width:40px;height:40px;flex-shrink:0;border-radius:4px}.skeleton-track-details{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.skeleton-track-title{height:16px;width:60%;max-width:200px}.skeleton-track-artist{height:14px;width:40%;max-width:150px}.skeleton-track-duration{width:40px;height:14px}.skeleton-card{background-color:var(--card);border-radius:var(--radius);padding:var(--spacing-md)}.skeleton-card-image{width:100%;aspect-ratio:1/1;margin-bottom:var(--spacing-md);border-radius:calc(var(--radius) - 4px)}.skeleton-card.artist .skeleton-card-image{border-radius:50%}.skeleton-card-title{height:18px;width:80%;margin-bottom:var(--spacing-xs)}.skeleton-card-subtitle{height:14px;width:60%}.skeleton-container{width:100%}#api-instance-list{list-style:none;margin-bottom:1rem}#api-instance-list li{display:flex;align-items:center;gap:.75rem;padding:.75rem;background-color:var(--secondary);border-radius:var(--radius);margin-bottom:.5rem}#api-instance-list li .instance-url{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}#api-instance-list li .controls{display:flex;gap:.5rem}#api-instance-list li button{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--transition)}#api-instance-list li button:hover{color:var(--foreground);background-color:var(--muted)}#api-instance-list li button:disabled{opacity:.3;cursor:not-allowed}.theme-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem;margin-top:1rem}.theme-option{padding:1rem;border:2px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:all var(--transition);text-align:center;font-weight:500}.theme-option:hover{border-color:var(--highlight);background-color:var(--secondary)}.theme-option.active{border-color:var(--primary);background-color:var(--primary);color:var(--primary-foreground)}.custom-theme-editor{margin-top:1rem;padding:1rem;background-color:var(--secondary);border-radius:var(--radius);display:none}.custom-theme-editor.show{display:block}.theme-color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-top:1rem}.theme-color-input{display:flex;flex-direction:column;gap:.5rem}.theme-color-input label{font-size:.9rem;color:var(--muted-foreground)}.theme-color-input input[type=color]{width:100%;height:40px;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.theme-actions{display:flex;gap:1rem;margin-top:1rem}.about-content{padding:1rem 0}.about-description{color:var(--foreground);line-height:1.6;margin-bottom:1.5rem}.about-features,.about-tech{margin-bottom:1.5rem}.about-features h4,.about-tech h4{font-size:1rem;font-weight:600;margin-bottom:.75rem;color:var(--foreground)}.about-features ul{list-style:none;padding:0}.about-features li{padding:.5rem 0 .5rem 1.5rem;position:relative;color:var(--foreground);line-height:1.5}.about-features li:before{content:"✓";position:absolute;left:0;color:var(--highlight);font-weight:700}.about-tech p{color:var(--muted-foreground);font-family:Courier New,monospace;font-size:.9rem}.about-links{display:flex;gap:1rem;margin:1.5rem 0;flex-wrap:wrap}.github-link{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background-color:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--foreground);font-weight:500;transition:all var(--transition)}.github-link:hover{background-color:var(--secondary);border-color:var(--highlight);transform:translateY(-2px)}.github-link svg{flex-shrink:0}.about-footer{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border)}.about-footer p{margin:.5rem 0;font-size:.9rem}.about-footer .version{color:var(--foreground);font-weight:600}.about-footer .license{color:var(--muted-foreground)}.about-footer .disclaimer{color:var(--muted-foreground);font-size:.8rem;font-style:italic;margin-top:1rem;padding:.75rem;background-color:var(--secondary);border-radius:var(--radius);border-left:3px solid var(--muted-foreground)}#download-notifications{position:fixed;bottom:120px;right:20px;z-index:9999;max-width:350px;display:flex;flex-direction:column;gap:.5rem}.download-task{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow-lg);animation:slideIn .3s ease;min-width:300px}.download-cancel:hover{background:var(--secondary)!important;color:var(--foreground)!important}#lastfm-controls{display:flex;align-items:center;gap:.5rem}.desktop-only{display:flex}#cast-btn{position:relative}#cast-btn.available{color:var(--highlight)}#cast-btn.available:before{content:"";position:absolute;top:6px;right:6px;width:6px;height:6px;background-color:var(--highlight);border-radius:50%;animation:pulse 2s infinite}#cast-btn.connected{color:#10b981}#cast-btn.connected:after{content:"";position:absolute;top:6px;right:6px;width:8px;height:8px;background-color:#10b981;border-radius:50%}#download-current-btn:disabled{opacity:.5;cursor:not-allowed}.template-guide{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.9rem}.template-guide th,.template-guide td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border)}.template-guide th{font-weight:600;background-color:var(--secondary)}.template-guide code{background-color:var(--secondary);padding:.2rem .4rem;border-radius:4px;font-family:Courier New,monospace;font-size:.85em}.offline-notification,.update-notification,.install-prompt{position:fixed;bottom:130px;right:20px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow-lg);z-index:10000;display:flex;align-items:center;gap:1rem;max-width:350px;animation:slideIn .3s ease}.offline-notification svg{flex-shrink:0;color:#f59e0b}.update-notification,.install-prompt{flex-direction:column;align-items:stretch}.shortcuts-modal-overlay{position:fixed;inset:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10000;display:flex;justify-content:center;align-items:center;animation:fadeIn .2s ease}.shortcuts-modal{background:var(--card);border-radius:var(--radius);width:90%;max-width:500px;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:scaleIn .2s ease}.shortcuts-header{padding:1rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.shortcuts-header h3{margin:0}.close-shortcuts{background:transparent;border:none;color:var(--muted-foreground);font-size:1.5rem;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);transition:all var(--transition)}.close-shortcuts:hover{background:var(--secondary);color:var(--foreground)}.shortcuts-content{padding:1rem}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid var(--border)}.shortcut-item:last-child{border-bottom:none}#playlist-detail-description,#mix-detail-description{color:var(--foreground);font-size:.9rem}#playlist-detail-tracklist{display:flex;flex-direction:column;gap:2px}#playlist-detail-tracklist .track-list-header{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm);color:var(--muted-foreground);font-size:.9rem;border-bottom:1px solid var(--border);margin-bottom:var(--spacing-xs)}#playlist-detail-tracklist .track-list-header .duration-header{justify-self:flex-end}@supports (padding-top: env(safe-area-inset-top)){.now-playing-bar{padding-bottom:max(var(--spacing-md),env(safe-area-inset-bottom))}.main-content,.sidebar{padding-top:max(var(--spacing-md),env(safe-area-inset-top))}}:root{--player-bar-height-desktop: 90px;--player-bar-height-mobile: 130px}.side-panel{position:fixed;right:0;top:0;bottom:var(--player-bar-height-desktop);width:600px;max-width:50vw;background:var(--card);border-left:1px solid var(--border);z-index:2050;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s ease;box-shadow:none}.side-panel.active{transform:translate(0);box-shadow:var(--shadow-xl)}.panel-header{padding:1rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.panel-header h3{margin:0;font-size:1.25rem;font-weight:600}.panel-controls{display:flex;gap:.5rem}.panel-content{flex:1;overflow-y:auto;padding:1rem;scroll-behavior:smooth}.btn-icon{background:transparent;border:none;color:var(--muted-foreground);cursor:pointer;padding:.5rem;border-radius:var(--radius);transition:all var(--transition);display:flex;align-items:center;justify-content:center}.btn-icon:hover{background:var(--secondary);color:var(--foreground)}.synced-line{padding:.5rem 0;font-size:1.125rem;line-height:1.8;color:var(--muted-foreground);opacity:.5;transform:scale(.95);filter:blur(.5px);transition:all .6s cubic-bezier(.4,0,.2,1)}.synced-line.active{color:var(--highlight);font-weight:600;font-size:1.25rem;opacity:1;transform:scale(1);filter:blur(0);text-shadow:0 0 20px rgba(var(--highlight-rgb),.3)}.synced-line.upcoming{opacity:.7;transform:scale(.98);filter:blur(.3px)}.synced-line.past{opacity:.3;transform:scale(.93);filter:blur(1px)}.lyrics-loading,.lyrics-error{text-align:center;padding:2rem;color:var(--muted-foreground)}.card.compact{display:flex;flex-direction:row;align-items:center;gap:.75rem;padding:.5rem;min-height:60px}.card.compact .card-image-wrapper{width:48px;height:48px;margin-bottom:0;flex-shrink:0}.card.artist.compact .card-image-wrapper{width:40px;height:40px}.card.compact .card-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.card.compact .card-title{margin:0;font-size:.9rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card.compact .card-subtitle{margin:0;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted-foreground)}.card.compact .card-play-btn{right:.5rem;top:25%;width:36px!important;height:36px!important;background-color:var(--primary)!important;color:var(--primary-foreground)!important;box-shadow:var(--shadow-md);transition:opacity .2s ease}.card.compact .card-like-btn{width:24px!important;height:24px!important;top:0;right:0}.card.compact:hover .card-like-btn{opacity:1}.card.compact.user-playlist .edit-playlist-btn,.card.compact.user-playlist .delete-playlist-btn{display:none!important}.now-playing-bar .cover{cursor:pointer;transition:all var(--transition);position:relative}.now-playing-bar .cover:hover{transform:scale(1.05)}.now-playing-bar .cover:after{content:"🎵";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#000000b3;opacity:0;transition:opacity var(--transition);font-size:1.5rem}.now-playing-bar .cover:hover:after{opacity:1}.now-playing-bar .artist .artist-link{cursor:pointer;transition:color var(--transition)}.now-playing-bar .artist .artist-link:hover{color:var(--highlight);text-decoration:underline}.volume-controls{flex-direction:column!important;align-items:flex-end!important;gap:.5rem!important;justify-content:center!important}.player-actions-row,.volume-slider-row{display:flex;align-items:center;gap:.75rem}.player-actions-row button,.volume-slider-row button{display:flex;align-items:center;justify-content:center}img:not([src]),img[src=""]{content:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);background-color:var(--muted)}.card-play-btn{position:absolute;bottom:2%;right:2%;background:var(--highlight)!important;border-radius:50%!important;width:42px!important;height:42px!important;padding:0!important;display:flex!important;align-items:center;justify-content:center;opacity:0;transform:translateY(10px);transition:all .2s cubic-bezier(.4,0,.2,1)!important;z-index:20;color:var(--background)!important;border:none!important;box-shadow:var(--shadow-md)}.card:hover .card-play-btn{opacity:1;transform:translateY(0)}.card-play-btn:hover{transform:scale(1.1) translateY(0)!important;box-shadow:var(--shadow-lg);filter:brightness(1.1)}.firebase-settings-wrapper{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:400px}.custom-firebase-config{display:none;flex-direction:column;gap:.5rem;margin-top:.5rem;width:100%}.custom-firebase-config.visible{display:flex}.config-help-text{font-size:.8rem;opacity:.7;margin-bottom:.25rem}.firebase-controls-container{display:flex;gap:.5rem;width:100%}#toggle-firebase-config-btn{width:fit-content}.account-content{padding:1rem 0}.search-bar{display:flex;align-items:center;width:80%;max-width:100%}.fullscreen-cover-content{display:flex;flex-direction:row;width:100%;height:100%;position:relative}.fullscreen-main-view{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;transition:flex .3s ease}.fullscreen-lyrics-toggle{position:absolute;top:1rem;right:4rem;background:#00000080;border:none;color:#fff;padding:.75rem;border-radius:50%;cursor:pointer;z-index:1001;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.fullscreen-lyrics-toggle:hover{background:#000000b3;transform:scale(1.1)}.fullscreen-lyrics-toggle.active{background:var(--primary)}#playlist-modal{opacity:1;animation-name:fadeInOpacity;animation-iteration-count:1;animation-timing-function:ease-in;animation-duration:.1s}@keyframes fadeInOpacity{0%{opacity:0}to{opacity:1}}.csv-import-progress{position:fixed;bottom:20px;right:20px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-xl);z-index:10001;max-width:400px;min-width:350px;animation:slideIn .3s ease}.csv-import-progress .progress-header{margin-bottom:1rem}.csv-import-progress .progress-header h4{margin:0 0 .5rem;font-size:1.1rem;font-weight:600;color:var(--foreground)}.csv-import-progress .progress-warning{font-size:.85rem;color:var(--muted-foreground);line-height:1.4}.csv-import-progress .progress-content{display:flex;flex-direction:column;gap:.75rem}.csv-import-progress .current-track{font-size:.9rem;color:var(--foreground);font-weight:500;min-height:1.2rem}.csv-import-progress .progress-bar{width:100%;height:8px;background:var(--secondary);border-radius:4px;overflow:hidden;position:relative}.csv-import-progress .progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--highlight));border-radius:4px;width:0%;transition:width .3s ease;position:relative}.csv-import-progress .progress-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.csv-import-progress .progress-text{font-size:.85rem;color:var(--muted-foreground);text-align:center}.csv-import-progress .progress-text span{font-weight:600;color:var(--foreground)}.missing-tracks-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease}.missing-tracks-modal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);max-width:600px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:scaleIn .2s ease}.missing-tracks-header{display:flex;justify-content:space-between;align-items:center;padding:2rem 2rem 1.5rem;border-bottom:1px solid var(--border)}.missing-tracks-header h3{margin:0;font-size:1.5rem;font-weight:700;color:var(--foreground);letter-spacing:-.025em}.close-missing-tracks{background:transparent;border:none;color:var(--muted-foreground);font-size:1.5rem;cursor:pointer;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);transition:all var(--transition)}.close-missing-tracks:hover{background:var(--secondary);color:var(--foreground)}.missing-tracks-content{padding:2rem}.missing-tracks-content p{margin-bottom:2rem;line-height:1.7;color:var(--foreground);font-size:1rem;font-weight:400}.missing-tracks-list h4{margin-bottom:1rem;font-size:1.1rem;font-weight:600;color:var(--foreground);letter-spacing:-.01em}.missing-tracks-list ul{list-style:none;padding:0;max-height:400px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--secondary)}.missing-tracks-list li{padding:.75rem 1.25rem;border-bottom:1px solid var(--border);color:var(--foreground);font-family:Inter,sans-serif;font-size:.95rem;font-weight:400;line-height:1.4}.missing-tracks-list li:last-child{border-bottom:none}.missing-tracks-list li:nth-child(2n){background:#ffffff05}.missing-tracks-actions{padding:1.5rem 2rem 2rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.missing-tracks-actions .btn-secondary{min-width:100px;padding:.75rem 1.5rem;font-size:.95rem;font-weight:500}.mobile-only{display:none!important}@media(max-width:768px){.mobile-only{display:flex!important}.desktop-only{display:none!important}#cast-btn{position:absolute!important;bottom:10px!important;right:10px!important;z-index:10!important;background:transparent!important;border:none!important;border-radius:0!important;width:24px!important;height:24px!important;display:flex!important;align-items:center!important;justify-content:center!important;box-shadow:none!important;padding:0!important}#cast-btn:hover{background:transparent!important;transform:none!important}#cast-btn svg{width:20px!important;height:20px!important}.now-playing-bar .player-controls{position:relative!important;padding-bottom:50px!important}}@media(min-width:1440px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media(min-width:1920px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}@media(min-width:769px)and (max-width:1024px){.now-playing-bar{grid-template-columns:1fr 2fr auto;padding:var(--spacing-md)}.volume-controls,.desktop-only{display:flex}}@media(max-width:1024px){.app-container{grid-template-columns:160px 1fr}.card-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--spacing-md)}.detail-header-info .title{font-size:3rem}.detail-header-info .title.long-title{font-size:2rem}.detail-header-info .title.very-long-title{font-size:1.35rem}.main-content{padding:var(--spacing-lg)}}@media(max-width:768px){.player-controls .progress-container{order:-1}#fullscreen-cover-overlay{padding-bottom:160px}#fullscreen-cover-image{max-height:45vh;margin-bottom:1.5rem}#fullscreen-track-title{font-size:1.5rem}#fullscreen-track-artist{font-size:1rem}.app-container{grid-template:"header" auto "main" 1fr "player" auto / 1fr;height:100vh;height:100dvh}.main-content{padding:var(--spacing-md);grid-area:main}.main-header{grid-area:header;margin-bottom:var(--spacing-md)}.sidebar{position:fixed;top:0;left:0;height:100%;transform:translate(-100%);z-index:2000;transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s ease}.sidebar.is-open{transform:translate(0);box-shadow:0 0 20px #00000080}.hamburger-menu,#sidebar-overlay.is-visible{display:block}.search-bar{max-width:none}.content-section{margin-bottom:var(--spacing-xl)}.section-title{font-size:1.5rem;margin-bottom:var(--spacing-md)}.card-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--spacing-md)}.detail-header{flex-direction:row;gap:var(--spacing-md);padding-bottom:var(--spacing-sm);margin-bottom:var(--spacing-lg)}.detail-header-image{width:120px;height:120px}.detail-header-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.detail-header-info .title{font-size:1.5rem;line-height:1.2}.detail-header-info .title.long-title{font-size:1.35rem}.detail-header-info .title.very-long-title{font-size:1.25rem}.detail-header-info .meta{font-size:.85rem;gap:.35rem;margin-top:.25em}.detail-header-actions{width:auto;margin-top:.5em;display:flex;align-items:center;gap:.5rem}.detail-header-actions .btn-primary,.detail-header-actions .btn-secondary{width:40px;height:40px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.detail-header-actions .btn-primary span,.detail-header-actions .btn-secondary span{display:none}.now-playing-bar{grid-template:"track controls" auto "progress progress" auto / 1fr auto;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);height:var(--player-bar-height-mobile)}.now-playing-bar .track-info{grid-area:track;min-width:0}.track-info{gap:var(--spacing-sm)}.track-info .cover{width:48px;height:48px}.track-info .details{min-width:0;flex:1}.track-info .details .title{font-size:.9rem}.track-info .details .artist{font-size:.75rem}.now-playing-bar .volume-controls{grid-area:controls;display:flex;gap:.25rem;justify-content:flex-end}.now-playing-bar .player-controls{grid-area:progress;width:100%}.player-controls .buttons{gap:var(--spacing-md)}.player-controls .buttons button{width:28px;height:28px}.player-controls .buttons .play-pause-btn{width:32px;height:32px}.player-controls .progress-container{max-width:none;font-size:.75rem;gap:.5rem}.volume-controls button:not(.desktop-only){display:flex}#download-notifications{bottom:10px;right:10px;left:10px;max-width:none}.track-menu-btn{opacity:1}.about-links{flex-direction:column}.github-link{width:100%;justify-content:center}.setting-item{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.setting-item .info{width:100%}.template-input{max-width:none;font-size:.85rem}.track-item{grid-template-columns:36px 1fr auto auto;gap:var(--spacing-sm);padding:var(--spacing-sm)}.track-item-info{gap:var(--spacing-sm);min-width:0;overflow:hidden}.track-item-cover{width:36px;height:36px}.track-item-details{min-width:0;overflow:hidden}.track-item-duration{text-align:right;white-space:nowrap}.track-menu-btn{padding:.5rem;margin:0}.track-menu-btn svg{width:18px;height:18px}.track-action-btn{padding:.25rem}.queue-track-item{grid-template-columns:24px 1fr 40px 32px 32px;gap:var(--spacing-sm);padding:var(--spacing-sm)}.queue-track-item .drag-handle{width:24px}.queue-track-item .drag-handle svg{width:14px;height:14px}.queue-track-item .track-item-cover{width:36px;height:36px}.queue-track-item .queue-like-btn,.queue-track-item .queue-remove-btn{padding:.5rem;width:32px;height:32px}.sidebar-nav .nav-item a{padding:1rem .75rem}.offline-notification,.update-notification,.install-prompt{left:10px;right:10px;max-width:none;bottom:10px}.side-panel{width:100vw;max-width:100vw;bottom:var(--player-bar-height-mobile)}.synced-line{font-size:1rem}.synced-line.active{font-size:1.125rem}.karaoke-title{font-size:1.5rem}.karaoke-artist{font-size:1rem}.karaoke-line{font-size:1.25rem}.karaoke-line.active{font-size:1.75rem}.fullscreen-cover-content{flex-direction:column}.fullscreen-lyrics-toggle{right:3.5rem}.csv-import-progress{bottom:10px;right:10px;left:10px;max-width:none;min-width:0}.missing-tracks-modal{width:95%;max-height:90vh;margin:1rem}.missing-tracks-header,.missing-tracks-content,.missing-tracks-actions{padding-left:1.5rem;padding-right:1.5rem}.missing-tracks-header{padding-top:1.5rem;padding-bottom:1rem}.missing-tracks-content{padding-top:1.5rem;padding-bottom:1.5rem}.missing-tracks-actions{padding-top:1rem;padding-bottom:1.5rem}.missing-tracks-list ul{max-height:250px}.missing-tracks-header h3{font-size:1.25rem}.missing-tracks-content p{font-size:.95rem}.missing-tracks-list li{padding:.625rem 1rem;font-size:.9rem}.mobile-only{display:flex!important}.desktop-only{display:none!important}}@media(max-width:480px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--spacing-sm)}.section-title,.detail-header-info .title{font-size:1.25rem}.detail-header-info .title.long-title{font-size:1.1rem}.detail-header-info .title.very-long-title{font-size:.9rem}.search-tab{padding:var(--spacing-sm) var(--spacing-md);font-size:.9rem}.player-controls .buttons{gap:.25rem}.player-controls .buttons button{width:24px;height:24px}.player-controls .buttons button svg{width:16px;height:16px}.player-controls .buttons .play-pause-btn{width:28px;height:28px}.player-controls .buttons .play-pause-btn svg{width:18px;height:18px}.volume-controls button{padding:.25rem;min-width:28px;min-height:28px}.volume-controls button svg{width:16px;height:16px}.track-item{grid-template-columns:32px 1fr 40px auto;gap:.375rem;padding:var(--spacing-xs)}.track-number{width:32px}.track-item-cover{width:32px;height:32px}.track-item-details .title{font-size:.85rem}.track-item-details .artist,.track-item-duration{font-size:.75rem}.track-menu-btn{padding:.25rem}.track-menu-btn svg{width:16px;height:16px}.queue-track-item{grid-template-columns:20px 1fr 36px 32px 32px;gap:.375rem;padding:.5rem}.queue-track-item .drag-handle{width:20px}.queue-track-item .track-item-cover,.queue-track-item .queue-like-btn,.queue-track-item .queue-remove-btn{width:32px;height:32px}[data-track-actions-mode=inline] .track-actions-inline .track-action-btn:not([data-action=play-next]){display:none}.player-actions-row{gap:.25rem}}@media(max-width:360px){.player-controls .buttons{justify-content:space-between;width:100%}#shuffle-btn,#repeat-btn{display:none}}@media(display-mode:window-controls-overlay){.app-container{margin-top:env(titlebar-area-height,0)}.main-header{-webkit-app-region:drag}.main-header *{-webkit-app-region:no-drag}.sidebar{padding-top:max(1.5rem,env(titlebar-area-height,0))}}@media(hover:hover){.card.compact .card-play-btn{opacity:0}.card.compact:hover .card-play-btn{opacity:1}}@media(hover:none){.track-menu-btn,.track-actions-inline,.queue-track-item .queue-remove-btn{opacity:1}.card.compact .card-like-btn{display:none!important}}@media(hover:none)and (pointer:coarse){.main-content{padding:var(--spacing-sm);grid-area:main}.progress-bar,.volume-bar{height:8px}.progress-bar .progress-fill:after,.volume-bar .volume-fill:after{content:"";position:absolute;right:-8px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-color:var(--highlight);border-radius:50%;box-shadow:0 2px 6px #0000004d}button{min-height:36px;min-width:36px}.track-item{grid-template-columns:32px 1fr 32px auto}.player-controls .buttons button{min-height:36px;min-width:36px}.card:hover{transform:none!important}.card-like-btn{opacity:1!important;top:-.25em!important;right:-.25em!important;transform:none!important}.card-play-btn{opacity:1!important;bottom:-.25em!important;right:-.25em!important;transform:none!important}}
