.ui-row{display:flex}.ui-row--center{align-items:center}.ui-row--column{flex-direction:column}.ui-row--justify-center{justify-content:center}.ui-row--gap-sm{gap:8px}.ui-row--gap-md{gap:12px}.ui-row--gap-lg{gap:16px}.ui-clickable{cursor:pointer}.ui-text-left{text-align:left}.ui-text-center{text-align:center}.ui-margin-top-md{margin-top:16px}.ui-nowrap{white-space:nowrap}.ui-title-row{display:flex;align-items:center;gap:12px}.ui-panel-title{font-size:11px;letter-spacing:1px;text-transform:uppercase}.ui-panel-copy{font-size:11px;line-height:1.6}.ui-modal-body--compact{padding:16px 20px}.ui-empty-state--compact{padding:20px 16px}.ui-empty-state--short{min-height:48px}.ui-shortlink-state{display:flex;justify-content:center;align-items:center;min-height:100vh}.ui-shortlink-state--error{flex-direction:column;gap:1rem}.ui-shortlink-link{color:#7da2ff}.ui-compact-action{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-secondary);cursor:pointer;padding:2px 6px;font-family:inherit;line-height:1;text-decoration:none}@media (hover:hover){.ui-compact-action:hover{color:var(--color-text)}}.ui-compact-action--label{color:var(--color-text-secondary);font-size:11px;letter-spacing:1px}.ui-compact-action--plus{font-size:16px;font-weight:300}.ui-compact-action--queue{font-size:14px}.ui-compact-action--icon{display:inline-flex;align-items:center}.ui-compact-action-row{display:flex;gap:8px;align-items:center;position:relative;top:-1px}.editable-title-input{all:unset;display:block;cursor:text;box-sizing:border-box;color:var(--color-text);font-family:var(--font-mono);font-size:15px;font-weight:700;line-height:1.2;margin:.83em 0 16px;width:auto;min-width:200px;max-width:600px}.spotify-import-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:var(--color-text-secondary);font-size:14px}.spotify-import-status-text{text-align:center;max-width:300px}.stats-container{padding:16px 0 4px;display:flex;flex-direction:column;gap:0;max-height:calc(100vh - 250px)}.stats-empty-state{display:flex;align-items:center;justify-content:center;height:60vh}.stats-empty,.stats-empty-state,.stats-loading{color:var(--color-text-dim);font-size:11px;letter-spacing:.5px}.stats-empty,.stats-loading{padding:24px 0;text-align:center;width:100%}.stats-section-title{font-size:11px;margin:0 0 12px;font-weight:400;flex-shrink:0}.stats-aggregate-select,.stats-section-title{letter-spacing:1px;color:var(--color-text-secondary)}.stats-aggregate-select{background:none;border:none;font-size:inherit;font-family:inherit;cursor:pointer;outline:none;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}@supports (-webkit-touch-callout:none){.stats-day-section-title{font-size:16px;transform:scale(.6875);transform-origin:left center;margin-bottom:5px}}@media (hover:hover){.stats-aggregate-select:hover{color:var(--color-text)}}.stats-aggregate-select option{background:var(--color-surface);color:var(--color-text)}.stats-artist-list{display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:40vh;flex-shrink:1;min-height:0;padding-right:4px;scrollbar-width:none;-ms-overflow-style:none}.stats-artist-list::-webkit-scrollbar{display:none}.stats-artist-row{display:flex;align-items:center;gap:10px;height:22px;flex-shrink:0}.stats-artist-name{flex-shrink:0;width:140px;font-size:11px;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-bar-track{flex:1 1;height:14px;background:var(--color-subtle);border-radius:2px;overflow:hidden}.stats-bar-fill{height:100%;background:var(--color-text-secondary);border-radius:2px;min-width:2px;transition:width .3s ease}.stats-artist-time{flex-shrink:0;width:50px;text-align:right;font-size:10px;color:var(--color-text-dim)}.stats-day-section-title{margin-top:24px}.stats-day-scroll{overflow-x:auto;flex-shrink:0;padding-bottom:4px}.stats-day-chart{display:flex;align-items:flex-end;gap:3px;height:clamp(150px,25vh,350px);padding-top:20px;width:100%;min-width:min-content}.stats-day-chart--few{gap:16px}.stats-day-col{display:flex;flex-direction:column;align-items:center;height:100%;flex:1 0 28px}.stats-day-time{font-size:9px;color:var(--color-text-dim);margin-bottom:4px;flex-shrink:0;white-space:nowrap}.stats-day-bar-track{flex:1 1;width:100%;background:var(--color-subtle);border-radius:2px;display:flex;align-items:flex-end;overflow:hidden}.stats-day-bar-fill{width:100%;background:var(--color-text-secondary);border-radius:2px;min-height:2px;transition:height .3s ease}.stats-day-label{font-size:9px;color:var(--color-text-dim);margin-top:4px;flex-shrink:0;white-space:nowrap}@media (max-width:768px){.stats-container{max-height:calc(100dvh - var(--player-height) - 150px)}}@media (pointer:coarse){.stats-day-chart{height:120px}}body,html{overflow:hidden}body{background-color:var(--color-background);color:var(--color-text);font-family:var(--font-mono);margin:0;padding:0;line-height:1.2;font-size:13px;height:100vh;height:100dvh;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (max-width:768px) and (pointer:coarse){body{overflow:hidden;height:100dvh}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-active);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.text-primary{color:var(--color-text)}.text-disabled,.text-secondary{color:var(--color-text-secondary)}.surface{background-color:var(--color-surface);border-radius:var(--border-radius)}@media (hover:hover){.surface-hover:hover{background-color:var(--color-active)}}.flex-center{display:flex;align-items:center;justify-content:center}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}.outer-container{height:100vh;height:100dvh;padding:24px 48px;padding-bottom:calc(48px + var(--player-height) + 200px);display:flex;flex-direction:column;overflow-x:hidden}.app-container{display:grid;grid-template-columns:1fr 200px;grid-gap:48px;gap:48px;flex:1 1;min-height:0}.main-content{display:flex;flex-direction:column;gap:16px;min-height:0;min-width:0;overflow:hidden}.site-header{display:flex;justify-content:space-between;align-items:center;padding:16px 0;background-color:var(--color-background);border-bottom:1px solid var(--color-border);position:relative}.site-header h1{color:var(--color-text);margin:0;font-size:24px;font-weight:700}.page-title{margin-bottom:12px;font-size:16px;font-weight:700}.page-title-spacer{height:0;margin-bottom:0}.now-playing{position:absolute;left:50%;transform:translateX(-50%);color:var(--color-text-secondary);font-size:14px;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:400px;display:flex;gap:0}.now-playing-artist{cursor:pointer;flex-shrink:0}.now-playing-dot{color:var(--color-text-secondary);margin:0 .5em}.now-playing-title{overflow:hidden;text-overflow:ellipsis}.mobile-menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:4px;z-index:1001}.hamburger{width:24px;height:18px;position:relative;display:flex;flex-direction:column;justify-content:space-between}.hamburger span{display:block;height:2px;width:100%;background:var(--color-text);transition:all .3s ease;transform-origin:center}.hamburger.open span:first-child{transform:rotate(45deg) translate(6px,6px)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(6px,-6px)}.mobile-menu-overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);z-index:2000;display:flex}.mobile-menu-content{background:var(--color-background);width:280px;height:100%;display:flex;flex-direction:column;border-right:1px solid var(--color-border)}.mobile-menu-header{display:flex;justify-content:space-between;align-items:center;padding:28px 20px 20px 16px}.mobile-menu-title{font-size:18px;font-weight:700;margin:0;color:var(--color-text);font-family:var(--font-mono)}.mobile-menu-close{background:none;border:none;color:var(--color-text-secondary);font-size:28px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;line-height:1}.mobile-menu-body{padding:16px;overflow-y:auto}.main-content-wrapper,.mobile-menu-body{flex:1 1;display:flex;flex-direction:column}.main-content-wrapper{min-height:0;min-width:0;width:100%}.songs-container-full{flex:1 1;overflow:hidden;min-height:0;margin-bottom:0;padding-bottom:4px;display:flex;flex-direction:column}.action-area{flex-shrink:0;margin-top:auto;padding:16px 0;padding-bottom:calc(var(--player-height) + 44px);width:100%;min-width:0;box-sizing:border-box}.action-add-songs,.action-search{margin-bottom:0}@media (hover:hover){.now-playing-artist:hover{text-decoration:underline}.mobile-menu-close:hover{color:var(--color-text)}}@media (max-width:768px){.outer-container{padding:16px}.page-title{margin-bottom:16px;font-size:15px}.mobile-menu-toggle{display:block}.app-container{grid-template-columns:1fr;gap:16px;flex:1 1;min-height:0}.now-playing{max-width:200px;font-size:12px}.site-header{padding:16px;margin-bottom:8px}.site-header h1{font-size:20px}.main-content{display:flex;flex-direction:column;gap:8px;flex:1 1;min-height:0}}@media (max-width:768px) and (pointer:coarse){.outer-container{height:100dvh;overflow:hidden;padding-bottom:calc(16px + var(--player-height) + 170px)}}.input-container,.search-field-shell{border:1px solid var(--color-border-strong);display:flex;align-items:center;margin-top:0;position:relative;width:100%;min-width:0;box-sizing:border-box}.input-container:before,.search-field-shell:before{content:"\2315";position:absolute;left:12px;color:var(--color-text-secondary);font-size:20px;pointer-events:none}.search-field-input,.youtube-input{font-family:inherit;background-color:transparent;border:none;color:var(--color-text);padding:8px 12px 8px 38px;width:100%;outline:none;font-size:max(16px,1em);-webkit-appearance:none;border-radius:0}.search-field-input::placeholder,.youtube-input::placeholder{color:var(--color-text-secondary);font-size:14px}.arrow-button,.search-field-action{background:none;border:none;color:var(--color-text);padding:8px 12px;cursor:pointer;font-family:inherit;font-size:inherit;transition:opacity .2s}.arrow-button:disabled,.search-field-action:disabled{opacity:.5;cursor:not-allowed}.search-field-clear{padding:4px 8px;font-size:16px}.input-container span,.search-field-shell span{position:absolute;right:12px;color:var(--color-text)}.songs-container{flex:1 1;overflow-y:auto;overflow-x:hidden;min-height:0;max-height:40vh;display:flex;flex-direction:column;transition:max-height .3s ease;padding-right:8px}.songs-container.expanded{max-height:60vh}.song-list{display:flex;flex-direction:column;gap:1px;flex:1 1;min-height:0}.virtualized-song-list{width:100%;height:100%}.virtualized-song-list--fill{flex:1 1;min-height:0}.empty-state{justify-content:center;padding:32px 16px;text-align:center;min-height:120px}.empty-state,.song-row{display:flex;align-items:center}.song-row{padding:0 12px 0 0;cursor:pointer;position:relative;overflow:hidden;box-sizing:border-box}.song-row.active{color:var(--color-text);background-color:var(--color-active)}.song-row.selected,.song-row.selected.active{background-color:var(--color-selected)}.song-row.selected,.song-row.selected.active,.virtualized-song-list.has-selection{-moz-user-select:none;user-select:none;-webkit-user-select:none}.song-actions{display:flex;gap:2px;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:10;flex-shrink:0;margin-left:4px}.song-delete-btn,.song-queue-btn{background:none;color:var(--color-text-secondary);border:none;cursor:pointer;font-size:12px;line-height:1;padding:2px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:2px}.song-delete-btn:disabled,.song-queue-btn:disabled{opacity:.5;cursor:default}.song-title-artist{cursor:pointer;display:inline-block;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.song-title-dot{color:var(--color-text-secondary);margin:0 .5em}.song-title{flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.duration{font-size:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.duration,.listen-count{color:var(--color-text-secondary);margin-left:16px}.listen-count{font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.discover-container{display:flex;flex-direction:column;flex:1 1;min-height:0;max-height:calc(95dvh - 250px);padding-top:16px;gap:16px}.discover-header{flex-shrink:0}.discover-header .filter-input{margin-bottom:4px}.discover-scroll{flex:1 1;overflow-y:auto;overflow-x:hidden;min-height:0;padding-right:8px}.discover-sort-header{display:flex;justify-content:space-between;padding:0 0 4px;flex-shrink:0}.discover-sort-col{color:var(--color-text-secondary);font-size:11px;letter-spacing:1px;cursor:pointer;-moz-user-select:none;user-select:none;-webkit-user-select:none;transition:color .15s}.discover-sort-right{text-align:right}.discover-back-row{color:var(--color-text-secondary);padding-top:8px;padding-bottom:8px;margin-bottom:4px}.discover-artist-header{font-size:14px;font-weight:700;padding:4px 0 8px;color:var(--color-text);display:flex;align-items:center;gap:12px}.add-songs-button{border:1px solid hsla(0,0%,100%,.15);background-color:transparent;color:var(--color-text-secondary);padding:8px 12px;cursor:pointer;font-size:11px;font-family:inherit;letter-spacing:1px;text-transform:uppercase;margin-top:8px;width:100%;display:flex;align-items:center;justify-content:flex-start;transition:all .15s;text-align:left;min-width:0;box-sizing:border-box}.conversion-result{margin-top:12px;padding:12px;background-color:var(--color-subtle);border-radius:4px;color:var(--color-text-secondary);font-size:12px;line-height:1.4}.conversion-result.success{border-left:3px solid var(--color-success);color:rgba(39,201,63,.8)}.conversion-result.error{border-left:3px solid #ff5f56;color:rgba(255,95,86,.8)}.shared-playlist-info{padding:12px 0}.shared-playlist-info p{margin:0;font-size:13px}.library-sort-header{display:flex;gap:16px;padding:2px 0 4px}.library-sort-option{color:var(--color-text-secondary);font-size:11px;letter-spacing:1px;cursor:pointer;-moz-user-select:none;user-select:none;-webkit-user-select:none;transition:color .15s}.library-sort-option.active{color:var(--color-text)}.song-row-outer{overflow:hidden}.song-row-outer>.song-row{background-color:var(--color-background);height:100%}.song-row-outer .song-row.active{background:linear-gradient(var(--color-active),var(--color-active)),var(--color-background)}.song-row-outer .song-row.selected,.song-row-outer .song-row.selected.active{background:linear-gradient(var(--color-selected),var(--color-selected)),var(--color-background)}.song-row-outer.swiping-right:before{content:"\2192";left:2px;font-size:14px;animation:slide-in-right .15s ease-out both}.song-row-outer.swiping-left:after,.song-row-outer.swiping-right:before{position:absolute;top:50%;color:var(--color-text-secondary);pointer-events:none}.song-row-outer.swiping-left:after{content:"\00D7";right:8px;transform:translateY(-50%);font-size:16px;animation:fade-in .15s ease-out both}@keyframes slide-in-right{0%{transform:translateY(calc(-50% - 1px)) translateX(-12px);opacity:0}to{transform:translateY(calc(-50% - 1px)) translateX(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media (hover:hover){.song-row:hover{background-color:var(--color-active)}.song-row:hover .song-actions{opacity:1;pointer-events:auto}.song-delete-btn:hover,.song-queue-btn:hover{color:var(--color-text)}.song-title-artist:hover{text-decoration:underline}.discover-back-row:hover,.discover-sort-col:hover,.library-sort-option:hover{color:var(--color-text)}.add-songs-button:hover{color:var(--color-text);border-color:var(--color-border-strong)}.song-row-outer>.song-row:hover{background-color:var(--color-active)}}@media (min-width:769px){.search-field-input,.youtube-input{font-size:13px}}@media (max-width:768px){.input-container,.search-field-shell{margin-bottom:0!important;width:100%}.filter-input{margin-top:0!important;margin-bottom:0!important}.discover-container{padding-top:4px}.discover-scroll{padding-right:8px}.song-list{gap:4px}.search-field-input,.youtube-input,input[type=email],input[type=password],input[type=text],textarea{font-size:16px!important;-webkit-appearance:none;-moz-appearance:none;appearance:none}}@media (hover:none) and (pointer:coarse){.discover-container{padding-top:0}.song-title{line-height:1.4}.duration,.song-title{font-size:13px}}.playlists{display:flex;flex-direction:column;gap:6px;padding-top:16px;min-height:0}.playlists-scroll-container{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding-right:4px;padding-bottom:8px}.playlist-title{font-size:11px;font-weight:400;margin:8px 0 12px;color:var(--color-text-secondary);letter-spacing:1px;position:-webkit-sticky;position:sticky;top:0;background-color:var(--color-background);padding:0}.playlist-link{color:var(--color-text-secondary);font-size:14px;text-decoration:none;background:none;border:none;padding:0;font:inherit;cursor:pointer;text-align:left;display:block}.playlist-link,.playlist-row{margin-bottom:6px;position:relative;width:100%}.playlist-row-link{margin-bottom:0;padding-right:40px}.sidebar-nav{background-color:transparent;color:var(--color-text-secondary);padding:12px 16px;border-radius:8px;display:inline-block;transition:all .2s ease;font-size:11px;text-align:center;border:1px solid var(--color-border-strong)}.playlist-share-btn{right:24px;font-size:12px;display:flex;align-items:center}.playlist-delete-btn,.playlist-share-btn{position:absolute;top:50%;transform:translateY(-50%);background:none;color:var(--color-text-secondary);border:none;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:10;padding:2px}.playlist-delete-btn{right:4px;font-size:14px}.create-playlist{color:var(--color-text);background:none;border:none;padding:0;font:inherit;font-size:11px;letter-spacing:1px;cursor:pointer;text-align:left;margin-bottom:8px}.no-playlists{padding:12px 0}.no-playlists-text{color:var(--color-text-secondary);font-size:14px;font-style:italic}.sidebar-bottom{margin-top:auto;padding-bottom:calc(var(--player-height) + 44px)}.sidebar-bottom-row{display:flex;justify-content:center;align-items:center;gap:32px}.queue-button{background:none;border:none;color:#fff;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:1px;text-align:center;cursor:pointer;padding:8px 0;width:auto;flex:0 0 auto;transition:color .2s ease}.queue-button.ui-text-left{text-align:left}.queue-button.ui-text-center{text-align:center}@media (hover:hover){.playlist-delete-btn:hover,.playlist-link:hover,.playlist-share-btn:hover,.queue-button:hover,.sidebar-nav:hover{color:var(--color-text)}.sidebar-nav:hover{background-color:var(--color-subtle);border-color:var(--color-border-strong)}.playlist-row:hover .playlist-row-link{color:var(--color-text)}.playlist-row:hover .playlist-delete-btn,.playlist-row:hover .playlist-share-btn{opacity:1;pointer-events:auto}.create-playlist:hover{text-decoration:underline}}@media (max-width:768px){.playlists{display:none}.mobile-menu-body .sidebar-nav{padding:14px 16px;margin-bottom:12px}.mobile-menu-body .playlist-title{margin-top:16px}.mobile-menu-body .queue-button{margin-top:24px}.mobile-menu-body .no-playlists-text{font-style:italic}}.player{position:fixed;bottom:0;left:0;right:0;height:var(--player-height);padding:12px 48px;flex-direction:column;gap:8px;font-size:12px;z-index:100}.player,.player-controls{display:flex;align-items:center}.player-controls{gap:30px;margin-bottom:4px;flex-wrap:nowrap}.player-progress{display:flex;align-items:center;gap:16px;width:100%;max-width:720px}.time{font-size:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:40px;text-align:center}.icon-button,.time{color:var(--color-text-secondary)}.icon-button{background:none;border:none;padding:8px;font-size:14px;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .2s}.icon-button.active,.icon-button.large{color:var(--color-text)}.icon-button.large{padding:12px}.icon-button.large svg{width:32px;height:32px}.icon-button:disabled{opacity:.5;cursor:default}.slider-container{position:relative;flex:1 1;height:12px;display:flex;align-items:center;cursor:pointer}.slider-track{right:0;height:4px;background-color:var(--color-active);overflow:hidden}.slider-fill,.slider-track{position:absolute;left:0;border-radius:2px}.slider-fill{top:0;bottom:0;background-color:var(--color-text)}.slider-input{position:absolute;left:0;right:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;font-size:16px;-webkit-appearance:none}@media (hover:hover){.icon-button:hover{color:var(--color-text);background-color:var(--color-active)}}@media (min-width:769px){.volume-control{display:flex;align-items:center;gap:12px;background-color:transparent;padding:12px 20px 12px 14px;border-radius:8px;border:1px solid var(--color-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-width:140px;width:100%;box-sizing:border-box}.volume-icon-button{background:none;border:none;color:var(--color-text-secondary);padding:4px;border-radius:4px;justify-content:center;transition:all .2s ease;flex-shrink:0}.volume-icon-button,.volume-slider-container{cursor:pointer;display:flex;align-items:center}.volume-slider-container{position:relative;flex:1 1;height:20px}.volume-slider{position:absolute;left:0;right:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;z-index:2;font-size:16px;-webkit-appearance:none}.volume-slider-container:before{content:"";right:0;background-color:var(--color-active)}.volume-slider-container:before,.volume-slider-fill{position:absolute;left:0;top:50%;transform:translateY(-50%);height:3px;border-radius:2px}.volume-slider-fill{background-color:var(--color-text);transition:width .1s ease;z-index:1}.volume-slider-container:hover:before{background-color:var(--color-border-strong)}.volume-slider-container:hover .volume-slider-fill:after{content:"";position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px;height:12px;background-color:var(--color-text);border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.3)}.volume-icon-button:hover{color:var(--color-text);background-color:var(--color-active)}}@media (max-width:768px){.volume-control{display:none}}.user-profile{position:relative}.user-profile.loading{display:flex;align-items:center;padding:8px}.sign-in-btn{background:none;border:1px solid var(--color-text-secondary);color:var(--color-text);padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;font-family:var(--font-mono);transition:border-color .2s ease}.user-avatar-container{position:relative}.user-avatar{width:32px;height:32px;border-radius:50%;border:none;background:var(--color-text-secondary);color:var(--color-background);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;transition:background-color .2s ease}.user-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.user-initial{font-size:14px;font-weight:500}.user-dropdown{position:absolute;top:100%;right:0;margin-top:8px;background:var(--color-background);border:1px solid var(--color-text-secondary);border-radius:8px;padding:12px;min-width:200px;box-shadow:0 4px 12px rgba(0,0,0,.3);z-index:1000;font-size:11px}.user-info{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--color-text-secondary)}.user-email{font-size:11px;color:var(--color-text);margin-bottom:4px}.user-tier{font-size:14px;letter-spacing:.5px}.dropdown-link,.sign-out-btn,.user-tier{color:var(--color-text-secondary);text-transform:uppercase}.dropdown-link,.sign-out-btn{background:none;border:none;font-family:var(--font-mono);font-size:11px;letter-spacing:1px;cursor:pointer;width:100%;text-align:left;padding:4px 0}.dropdown-link{margin-bottom:8px;border-bottom:1px solid var(--color-border);padding-bottom:8px}.auth-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:2000}.auth-modal{background:var(--color-background);border:1px solid var(--color-text-secondary);border-radius:12px;padding:24px;width:100%;max-width:400px;margin:20px;box-shadow:0 8px 24px rgba(0,0,0,.4)}.auth-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.auth-header h3{margin:0;color:var(--color-text);font-size:11px;font-weight:400;font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase}.auth-close{background:none;border:none;color:var(--color-text-secondary);font-size:24px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.auth-form{gap:16px}.auth-field,.auth-form{display:flex;flex-direction:column}.auth-field{gap:6px}.auth-field label{font-size:11px;font-weight:400;letter-spacing:1px;text-transform:uppercase}.auth-field input,.auth-field label{color:var(--color-text);font-family:var(--font-mono)}.auth-field input{padding:12px;border:1px solid var(--color-text-secondary);border-radius:6px;background:var(--color-background);font-size:max(16px,14px);transition:border-color .2s ease;-webkit-appearance:none}.auth-field input:focus{outline:none;border-color:var(--color-text)}.auth-field input::placeholder{color:var(--color-text-secondary);font-size:14px}.auth-submit{background:var(--color-text);color:var(--color-background);border:none;padding:12px;border-radius:6px;font-size:11px;font-weight:400;font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:opacity .2s ease}.auth-submit.sign-up{font-weight:700}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-toggle{background:none;border:none;color:var(--color-text-secondary);font-size:14px;cursor:pointer;padding:8px 0}.auth-message,.auth-toggle{font-family:var(--font-mono);text-align:center}.auth-message{padding:12px;border-radius:6px;font-size:11px}.auth-message.error{background:rgba(255,67,67,.1);color:#ff4343;border:1px solid rgba(255,67,67,.3)}.auth-message.success{background:rgba(103,132,178,.1);color:rgba(148,162,185,.8);border:1px solid rgba(148,162,185,.8)}@media (hover:hover){.sign-in-btn:hover{border-color:var(--color-text)}.auth-close:hover,.dropdown-link:hover,.sign-out-btn:hover{color:var(--color-text)}.user-avatar:hover{background:var(--color-text);color:var(--color-background)}.auth-submit:hover:not(:disabled){opacity:.9}.auth-toggle:hover{color:var(--color-text);text-decoration:underline}}.copied-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:rgba(24,24,30,.94);color:var(--color-text);padding:12px 22px;border-radius:6px;font-size:11px;letter-spacing:.7px;text-transform:uppercase;z-index:10000;border:0;box-shadow:0 8px 22px rgba(0,0,0,.28);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade-in-out var(--popup-duration,2s) ease forwards;will-change:opacity,transform}.playlist-save-btn,.save-button,.share-button{background:none;border:0;cursor:pointer;font-family:inherit;transition:all .2s;display:inline-flex;align-items:center;justify-content:center}.share-button{color:var(--color-text-secondary);padding:2px}.share-button-small{width:24px;height:24px}.save-button,.share-button-large{width:40px;height:40px}.playlist-save-btn,.save-button{color:var(--color-text);border-radius:6px}.playlist-save-btn{min-width:32px;height:32px}.selection-action-bar{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--color-surface);border-radius:8px;padding:8px 12px;display:flex;align-items:center;gap:4px;z-index:200;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 4px 16px rgba(0,0,0,.4)}.selection-count{color:var(--color-text);padding:0 8px 0 4px}.selection-count,.ui-inline-button{font-size:11px;white-space:nowrap;text-transform:uppercase}.ui-inline-button{background:none;border:none;color:var(--color-text-secondary);padding:6px 10px;border-radius:4px;cursor:pointer;font-family:inherit;letter-spacing:.5px;transition:all .15s}.ui-inline-button--danger{color:var(--color-error)}.ui-inline-button--dismiss{padding:6px;font-size:16px;color:var(--color-text-secondary)}.ui-action-prompt,.ui-action-prompt__form{display:flex;align-items:center;gap:4px}.ui-action-prompt__input{background:none;border:none;border-bottom:1px solid var(--color-border);color:var(--color-text);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px;padding:4px 6px;width:240px;outline:none}.ui-action-prompt__input::placeholder{color:var(--color-text-faint)}.ui-action-prompt__input:disabled{opacity:.5}.ui-action-prompt--overlay{width:100%}.ui-action-prompt--overlay .ui-action-prompt__form{flex:1 1;min-width:0}.ui-action-prompt--overlay .ui-action-prompt__input{width:100%;min-width:0}@keyframes fade-in-out{0%{opacity:0;transform:translate(-50%,calc(-50% + 8px))}18%{opacity:1;transform:translate(-50%,-50%)}78%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,calc(-50% - 2px))}}@media (hover:hover){.share-button:hover{color:var(--color-text)}.playlist-save-btn:hover,.save-button:hover{background-color:var(--color-active);border-color:hsla(0,0%,100%,.5)}.ui-inline-button:hover{color:var(--color-text);background-color:var(--color-subtle)}.ui-inline-button--danger:hover{color:var(--color-error-bright);background-color:hsla(0,100%,70%,.08)}.ui-inline-button--dismiss:hover,.ui-inline-button--submit:hover{color:var(--color-text);background:none}}:root{--color-background:#141417;--color-surface:rgba(29,29,37,.92);--color-subtle:hsla(0,0%,100%,.05);--color-active:rgba(217,217,235,.404);--color-selected:rgba(46,46,56,.92);--color-text:#fff;--color-text-muted:#ccc;--color-text-dim:#888;--color-text-faint:#555;--color-text-secondary:hsla(0,0%,100%,.5);--color-border:hsla(0,0%,100%,.1);--color-border-strong:hsla(0,0%,100%,.2);--color-error:hsla(0,100%,70%,.6);--color-error-bright:#ff6464;--color-success:#27c93f;--font-mono:"SFMono-Regular",monospace;--border-radius:8px;--player-height:96px}@supports (-webkit-touch-callout:none){input,select,textarea{font-size:max(16px,1em)!important;-webkit-appearance:none!important}input:focus,textarea:focus{transform:translateZ(0)}}@media (max-width:768px){.mobile-menu-toggle{display:block!important;color:var(--color-text)!important}.now-playing{display:none!important}.site-header{padding:16px!important}.site-header h1{font-size:18px!important}.mobile-current-song{display:block!important;padding:6px 16px;margin-bottom:8px;background:hsla(0,0%,100%,.05);border-bottom:1px solid hsla(0,0%,100%,.1);font-size:12px;color:var(--color-text-secondary);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:clip}.input-container,.search-field-shell{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.filter-input{margin-bottom:0!important;margin-top:0}.discover-header{margin-top:6px!important}.song-title{font-size:13px!important}.songs-container{max-width:100vw!important;box-sizing:border-box;padding-bottom:0!important}.player{display:flex!important;position:fixed;bottom:0;left:0;right:0;z-index:100;height:auto!important;min-height:var(--player-height);padding:16px 16px var(--mobile-player-padding-bottom,20px) 16px;background-color:var(--color-background);box-sizing:content-box}.player-controls{gap:18px!important}.main-content{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important}.add-songs-button{position:relative!important;width:100%!important;margin:16px 0!important;z-index:1!important}.mobile-menu-overlay{opacity:0;animation:fadeIn .2s ease-out forwards}.mobile-menu-content{transform:translateX(-100%);animation:slideInFromLeft .3s ease-out forwards}.mobile-menu-title{color:var(--color-text)!important;font-size:18px!important;font-weight:700!important;margin:0!important;font-family:var(--font-mono)!important}.search-field-input,.youtube-input{width:100%!important;max-width:100%!important;box-sizing:border-box!important}.song-row{max-width:100vw!important;box-sizing:border-box!important}.song-title{max-width:calc(100vw - 60px)!important;overflow:hidden!important;text-overflow:clip!important;white-space:nowrap!important}}@media (pointer:coarse){.song-title-artist{pointer-events:none}}@media (max-width:768px) and (pointer:coarse){.main-content{padding-bottom:calc(var(--player-height) + env(safe-area-inset-bottom, 0px) + 28px)!important}.main-content-wrapper{max-height:calc(90vh - 250px)}.player{--mobile-player-padding-bottom:calc(16px + env(safe-area-inset-bottom, 0px))}.modal-overlay{padding:60px 16px 80px!important}.modal-content{max-height:calc(100vh - 140px)!important}.action-area{flex-shrink:0!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;min-width:0!important;padding:12px 0 32px!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInFromLeft{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@media (min-width:769px){.mobile-current-song{display:none!important}}.vis-spectrum{margin:14px 0;flex-shrink:0}.vis-spectrum-bars{display:flex;align-items:flex-end;gap:1px;height:72px;padding:0 2px}.vis-spectrum-col{flex:1 1;background:hsla(0,0%,100%,.2);border-radius:1px 1px 0 0;min-width:0}.vis-spectrum-highlight{background:hsla(0,0%,100%,.55)}.vis-spectrum-labels{display:flex;margin-top:4px;padding:0 2px}.vis-spectrum-labels span{font-size:9px;color:var(--color-text-dim);text-align:center;min-width:0;overflow:hidden}.vis-u{margin:14px 0;flex-shrink:0}.vis-u-each-band,.vis-u-labels{font-size:9px;color:var(--color-text-dim);margin-bottom:8px}.vis-u-labels{display:flex;justify-content:space-around;letter-spacing:1px}.vis-u-diagram{display:flex;align-items:stretch;gap:0}.vis-u-col{flex:1 1;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.vis-u-col-dec{align-items:flex-start}.vis-u-block{height:20px;border-radius:2px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--color-background)}.vis-u-enc{background:hsla(0,0%,100%,.45)}.vis-u-dec{background:hsla(0,0%,100%,.25)}.vis-u-bn{background:hsla(0,0%,100%,.55)}.vis-u-arrow{font-size:8px;color:var(--color-text-dim);text-align:center;padding:1px 0}.vis-u-skips{width:52px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;position:relative}.vis-u-skip-row{position:absolute;width:100%;display:flex;align-items:center;gap:2px}.vis-u-skip-row span{font-size:7px;color:var(--color-text-dim);flex-shrink:0}.vis-u-skip-line{flex:1 1;height:1px;background:var(--color-border)}.vis-u-bottleneck{display:flex;justify-content:center;margin-top:2px}.vis-u-bottleneck .vis-u-block{width:40%;height:22px}.vis-u-comp-labels{display:flex;justify-content:space-between;margin-top:8px;font-size:9px;color:var(--color-text-dim)}.vis-bn{margin:46px 0 10px;display:flex;flex-direction:column;align-items:center;gap:0}.vis-bn-dashes{display:flex;gap:8px;justify-content:center}.vis-bn-dash{width:24px;height:14px;background:hsla(0,0%,100%,.2);border-radius:2px}.vis-bn-label-bottom,.vis-bn-label-top{font-size:9px;color:var(--color-text-dim);margin-top:8px}.vis-bn-arrow{font-size:16px;color:var(--color-text-dim);margin:6px 0;line-height:1}.vis-bn-solid{display:flex;gap:1px;justify-content:center}.vis-bn-solid-block{width:24px;height:14px;background:hsla(0,0%,100%,.4);border-radius:2px}.vis-mask-container{display:flex;align-items:center;gap:6px;margin:14px 0;flex-shrink:0}.vis-mask-grid-group{flex:1 1;min-width:0}.vis-mask-grid-label{display:block;font-size:9px;letter-spacing:1px;color:var(--color-text-dim);text-align:center;margin-bottom:4px}.vis-heatmap{flex-direction:column}.vis-heatmap,.vis-heatmap-row{display:flex;gap:1px}.vis-heatmap-cell{flex:1 1;aspect-ratio:1;border-radius:1px;min-width:0}.vis-mask-op{font-size:10px;color:var(--color-text-dim);flex-shrink:0;align-self:center;margin-top:14px}@media (max-width:600px){.vis-bn-dashes{gap:5px}.vis-bn-dash,.vis-bn-solid-block{width:14px;height:10px}}