.homepage{min-height:100vh;background:#0a0a0a;color:#fff;display:flex;flex-direction:column}.homepage-header{padding:2rem;text-align:center}.homepage-logo{height:10rem;width:auto;margin-bottom:1rem}.homepage-tagline{font-size:1.2rem;color:#888;margin:0;font-weight:300}.homepage-main{flex:1;max-width:1200px;margin:0 auto;padding:2rem;width:100%}.welcome-section{text-align:center;margin-bottom:4rem}.welcome-title{font-size:3rem;font-weight:700;margin-bottom:1.5rem;background:linear-gradient(135deg,#dc2626,#ef4444);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.welcome-description{font-size:1.1rem;color:#ccc;margin:0 auto;line-height:1.6}.connect-section{text-align:center;margin-bottom:4rem;padding:3rem 2rem;background:#ffffff08;border-radius:16px;border:1px solid rgba(255,255,255,.1)}.connect-title{font-size:2rem;font-weight:600;margin-bottom:1rem;color:#fff}.connect-description{font-size:1rem;color:#aaa;margin-bottom:2rem;max-width:500px;margin-left:auto;margin-right:auto}.spotify-connect-button{display:inline-flex;align-items:center;gap:.75rem;background:#1db954;color:#fff;border:none;padding:1rem 2rem;border-radius:50px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:1.1rem;box-shadow:0 4px 20px #1db9544d}.spotify-connect-button:hover{background:#1ed760;transform:translateY(-2px);box-shadow:0 6px 25px #1db95466}.spotify-connect-button:disabled{background:#666;cursor:not-allowed;transform:none;box-shadow:none}.features-section{margin-bottom:2rem}.features-title{font-size:2rem;font-weight:600;text-align:center;margin-bottom:3rem;color:#fff}.features-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);gap:2rem;max-width:800px;margin:0 auto}.feature-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:2rem;text-align:center;transition:all .3s ease}.feature-card:hover{background:#ffffff14;border-color:#dc26264d;transform:translateY(-5px)}.feature-icon{display:flex;justify-content:center;margin-bottom:1.5rem;color:#dc2626}.feature-card h3{font-size:1.3rem;font-weight:600;margin-bottom:1rem;color:#fff}.feature-card p{color:#aaa;line-height:1.5}@media (max-width: 768px){.homepage-main{padding:1rem}.welcome-title{font-size:2rem}.features-grid{grid-template-columns:1fr}.connect-section{padding:2rem 1rem}}.dashboard{min-height:100vh;background:#0a0a0a;color:#fff;padding:2rem}.dashboard-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:1rem}.loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top:3px solid #dc2626;border-radius:50%;animation:spin 1s linear infinite}.welcome-message h1{font-size:2.5rem;font-weight:700;margin-bottom:.5rem;background:linear-gradient(135deg,#dc2626,#ef4444);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.welcome-message p{color:#888;font-size:1.1rem;margin:0}.dashboard-main{max-width:1200px;margin:0 auto}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:1.5rem}.dashboard-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;overflow:hidden;transition:all .3s ease}.dashboard-card:hover{background:#ffffff14;border-color:#dc26264d;transform:translateY(-2px)}.card-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.card-header h2{font-size:1.3rem;font-weight:600;margin:0;color:#fff}.card-header svg{color:#dc2626;opacity:.7}.card-content{padding:1.5rem}.service-item{display:flex;align-items:center;gap:1rem}.service-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.service-icon.spotify{background:#1db954;color:#fff}.service-info{display:flex;flex-direction:column;gap:.25rem}.service-name{font-weight:600;color:#fff}.service-status{font-size:.85rem}.activity-placeholder,.friends-placeholder,.recommendations-placeholder{text-align:center;padding:2rem 1rem;color:#888;font-style:italic}.activity-placeholder p,.friends-placeholder p,.recommendations-placeholder p{margin:0;line-height:1.5}@media (max-width: 768px){.dashboard{padding:1rem}.welcome-message h1{font-size:2rem}.dashboard-grid{grid-template-columns:1fr;gap:1rem}.card-header,.card-content{padding:1rem}}.recent-widget{display:block}.recent-widget.compact{max-height:calc(100vh - 270px);overflow:auto;padding-right:4px}.recent-header{display:flex;align-items:center;justify-content:space-between}.recent-title-click{margin:0;cursor:pointer;text-decoration:underline transparent;transition:text-decoration-color .15s ease}.recent-title-click:hover{text-decoration-color:#ffffffb3}.recent-list{list-style:none;margin:0;padding:0}.recent-list.large .recent-item{padding-top:.75rem;padding-bottom:.75rem}.recent-item{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.08);min-width:0}.recent-like-btn{margin-left:auto}.recent-item:last-child{border-bottom:0}.recent-left{flex:0 0 auto}.recent-avatar{width:60px;height:60px;object-fit:cover}.recent-avatar.placeholder{width:60px;height:60px;border-radius:50%;background:#ffffff14;display:flex;align-items:center;justify-content:center}.recent-avatar-wrap{position:relative;width:60px;height:60px}.play-overlay{position:absolute;top:0;left:0;width:60px;height:60px;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000059;border:none;outline:none;cursor:pointer;border-radius:2px;opacity:0;transform:scale(.96);transition:opacity .15s ease,transform .15s ease}.recent-avatar-wrap:hover .play-overlay{opacity:1;transform:scale(1)}.recent-main{flex:1 1 auto;min-width:0}.recent-track{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-title{font-weight:600}.recent-artists{color:#aaa}.recent-meta{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:#bbb}.recent-dot{opacity:.6}.recent-loading,.recent-empty{text-align:center;color:#aaa;padding:.5rem 0}.recent-empty.large{padding:1rem 0}.recent-load-more{height:1px}.recent-settings{position:relative}.recent-gear{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:#fff;cursor:pointer}.recent-menu{position:absolute;top:calc(100% + 6px);right:0;background:#141414f2;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.4rem .6rem;min-width:180px;z-index:1000}.recent-menu-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#fff;cursor:pointer}.recent-menu-item input,.recent-menu-item span{cursor:pointer}.recent-menu-item input:disabled{cursor:not-allowed}.recent-menu-item input:disabled+span{color:#9aa;opacity:.7;cursor:not-allowed}.recent-page,.likes-page{min-height:100vh;background:#0a0a0a;color:#fff;padding:2rem}.recent-page .page-header,.likes-page .page-header{max-width:1100px;margin:0 auto 1rem}.recent-page .title-row,.likes-page .title-row{display:flex;align-items:center;gap:.5rem}.recent-page .page-title,.likes-page .page-title{margin:.25rem 0 .5rem}.recent-page .actions,.likes-page .actions{margin-left:auto}.recent-page .filters,.likes-page .filters{margin-top:.25rem}.recent-page .search,.likes-page .search{margin-top:.5rem}.recent-page .search-input,.likes-page .search-input{width:100%;padding:.5rem .6rem;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:#fff}.recent-page .search-input::placeholder,.likes-page .search-input::placeholder{color:#aaa}.recent-page .page-content,.likes-page .page-content{max-width:1100px;margin:0 auto}.recent-row{display:grid;grid-template-columns:auto 1fr;gap:.75rem 1rem;align-items:center;padding:.3rem 0;border-bottom:1px solid rgba(255,255,255,.08);overflow:hidden}.user-pill{display:inline-flex;align-items:center;gap:.4rem;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#fff;padding:.2rem .5rem;border-radius:999px;cursor:pointer;max-width:200px;overflow:hidden}.user-pill span{display:none}.user-pill{position:relative}.user-pill:hover:after{content:attr(data-name);position:absolute;top:100%;left:50%;transform:translate(-50%,6px);white-space:nowrap;background:#141414f2;border:1px solid rgba(255,255,255,.1);color:#fff;font-size:.8rem;padding:4px 6px;border-radius:6px}.pill-avatar{width:20px;height:20px;border-radius:50%;object-fit:cover}.pill-avatar.placeholder{width:20px;height:20px;background:#ffffff14;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.link{color:#ff6b6b;cursor:pointer;text-decoration:underline transparent;transition:text-decoration-color .15s ease}.link:hover{text-decoration-color:#fff9}.initials-avatar{width:20px;height:20px;border-radius:50%;background:#ffffff1f;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:.8rem;font-weight:700}.recent-like-btn{appearance:none;border:none;background:transparent;padding:2px;cursor:pointer;line-height:0;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease,transform .1s ease}.recent-item:hover .recent-like-btn,.recent-like-btn:focus,.recent-like-btn:focus-visible{opacity:1}.recent-like-btn.liked{opacity:1}.recent-like-btn:active{transform:scale(.95)}.recent-like-btn svg{width:28px;height:28px}.friend-header-row{display:grid;grid-template-columns:60px 1.5fr 1fr 1fr 1.5fr 2fr;align-items:center;font-weight:600;font-size:1rem;color:#bbb;background:#ffffff08;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.friend-row{display:grid;grid-template-columns:60px 1.5fr 1fr 1fr 1.5fr 2fr;align-items:center;min-height:60px;border-bottom:1px solid rgba(255,255,255,.08)}.friend-cell{display:flex;align-items:center;min-width:0;padding:.25rem .5rem}.friend-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;background:#ffffff14;font-size:1.5rem;justify-content:center;align-items:center;display:flex}.friend-username{font-weight:600;color:#bbb;font-size:.95rem;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.friend-stats-link{color:#fff;text-decoration:none;font-size:.95rem;font-weight:500;transition:color .15s,text-decoration .15s}.friend-stats-link:hover{color:#4fa3ff;text-decoration:underline}.friend-actions-cell{justify-content:flex-end;gap:.5rem}.underline-btn .underline{text-decoration:none;font-size:.95rem;font-weight:500;color:#bbb;transition:color .15s,text-decoration .15s}.underline-btn:hover .underline{color:#fff;text-decoration:underline}.friend-likes{font-size:1.1rem;font-weight:500;color:#e74c3c}.friend-date{font-size:.95rem;color:#27ae60;font-weight:500}.friend-header{padding:0 .5rem;font-size:.95rem;color:#bbb}.friend-header-actions{text-align:right}.friend-row:last-child{border-bottom:none}.friend-likes-link{cursor:pointer;text-decoration:none;transition:text-decoration .15s}.friend-likes-link:hover{text-decoration:underline}.demo .recent-user{filter:blur(.35em);pointer-events:none;-webkit-user-select:none;user-select:none}.App{min-height:100vh;display:flex;flex-direction:column}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:#0a0a0a;color:#fff;gap:1rem}.app-loading .loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top:3px solid #dc2626;border-radius:50%;animation:spin 1s linear infinite}.user-header{background:#00000080;border-bottom:1px solid rgba(255,255,255,.1);padding:.75rem 1rem}.user-header-content{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto}.header-logo{display:flex;align-items:center}.logo{height:48px;cursor:pointer;transition:opacity .2s ease}.logo:hover{opacity:.8}.user-info{display:flex;align-items:center;gap:.75rem;max-width:1200px;margin:0 auto}.user-avatar{width:40px;height:40px;border-radius:50%;border:2px solid rgba(255,255,255,.2)}.user-details{display:flex;flex-direction:column;gap:.25rem}.user-name{color:#fff;font-weight:600;font-size:.9rem}.user-email{color:#888;font-size:.8rem}.header{padding:2rem 1rem 1rem;text-align:center}.header .logo{height:4rem;width:auto;margin-bottom:.5rem}.tagline{font-size:1.1rem;color:#888;margin:0;font-weight:300}.main-content{flex:1;display:flex;justify-content:center;align-items:center;padding:2rem 1rem}.services-section{text-align:center;background:#ffffff0d;padding:2rem;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.services-title{color:#fff;margin-bottom:1.5rem;font-size:1.5rem;font-weight:500}.spotify-button{display:inline-flex;align-items:center;gap:.5rem;background:#1db954;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:50px;font-weight:600;cursor:pointer;transition:all .2s ease;font-size:1rem}.spotify-button:hover{background:#1ed760;transform:translateY(-1px)}.spotify-button:disabled{background:#666;cursor:not-allowed;transform:none}.spotify-connected{display:inline-flex;align-items:center;gap:.5rem;background:#1db95433;color:#1db954;border:1px solid #1db954;padding:.75rem 1.5rem;border-radius:50px;font-weight:600;font-size:1rem}.footer{padding:1rem;border-top:1px solid rgba(255,255,255,.1);background:#0003}.footer-content{display:flex;justify-content:center;align-items:center;gap:1rem;font-size:.9rem;color:#888}.status-dot{width:8px;height:8px;background:#1db954;border-radius:50%}.status-indicator.loading .status-dot{background:orange;animation:pulse 1.5s ease-in-out infinite}.status-indicator.error .status-dot{background:#f44}.error-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;background:linear-gradient(135deg,#0f0f23,#1a1a2e,#16213e)}.error-container{max-width:600px;width:100%;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:3rem;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000004d}.error-icon{color:#ef4444;margin-bottom:1.5rem;display:flex;justify-content:center}.error-title{font-size:2rem;font-weight:700;color:#f4f4f5;margin-bottom:1.5rem}.error-message{margin-bottom:2rem}.error-message p{color:#a1a1aa;font-size:1.1rem;margin-bottom:1rem}.error-detail{background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:8px;padding:1rem;color:#fca5a5;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.9rem;word-break:break-word;max-height:200px;overflow-y:auto}.error-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.retry-button,.home-button{padding:.75rem 1.5rem;font-size:1rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;transition:all .3s ease;min-width:120px}.retry-button{background:linear-gradient(135deg,#1db954,#1ed760);color:#fff;box-shadow:0 4px 20px #1db9544d}.retry-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px #1db95466}.home-button{background:#ffffff1a;color:#e4e4e7;border:1px solid rgba(255,255,255,.2)}.home-button:hover{background:#fff3;transform:translateY(-2px)}.error-help{text-align:left;color:#71717a;font-size:.9rem;margin-bottom:3rem}.error-help p{margin-bottom:.5rem;font-weight:600}.error-help ul{margin:0;padding-left:1.5rem}.error-help li{margin-bottom:.25rem}@media (max-width: 768px){.error-container{padding:2rem}.error-title{font-size:1.5rem}.error-actions{flex-direction:column;align-items:center}.retry-button,.home-button{width:100%;max-width:200px}}.services-page{min-height:100vh;background:#0a0a0a;color:#fff;padding:2rem}.services-header{max-width:1200px;margin:0 auto;margin-bottom:2rem}.services-header h1{color:#fff;font-size:2rem;margin:0;font-weight:600}.services-content{max-width:1200px;margin:0 auto}.service-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.service-card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.service-card-left{display:flex;align-items:center;gap:1rem}.service-icon{width:60px;height:60px;background:#1db954;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.service-info{flex:1}.service-info h3{margin:0 0 .5rem;font-size:1.2rem;color:#fff}.service-status{font-size:.9rem;margin:0 0 .25rem}.service-status.connected{color:#1db954}.service-email{color:#888;font-size:.8rem;margin:0}.service-actions{display:flex;align-items:center;gap:1rem}.status-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:20px;font-size:.8rem;font-weight:500}.status-badge.connected{background:#1db95433;color:#1db954;border:1px solid rgba(29,185,84,.3)}.status-badge.neutral{background:#ffffff1a;color:#ccc;border:1px solid rgba(255,255,255,.2)}.status-badge.disconnected{background:#f43f5e26;color:#ff6b6b;border:1px solid rgba(244,63,94,.35)}.status-dot{width:8px;height:8px;background:currentColor;border-radius:50%}.loading,.no-user{text-align:center;color:#888;padding:2rem}.settings-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;margin-bottom:1rem}.settings-form{display:flex;flex-direction:column;gap:1rem}.settings-form-row{display:flex;flex-direction:column;gap:.5rem}.settings-label{font-size:.95rem;color:#ddd}.settings-input{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:.6rem .8rem;color:#fff;outline:none}.settings-input:focus{border-color:#ffffff4d}.settings-actions{display:flex;align-items:center;gap:.75rem}.settings-save{background:#fff;color:#000;border:none;border-radius:8px;padding:.6rem 1rem;cursor:pointer;font-weight:600}.settings-save:disabled{opacity:.7;cursor:default}.settings-success{color:#1db954;font-size:.9rem}.settings-error{color:#ff6b6b;font-size:.9rem}.input-row{display:flex;align-items:center;gap:.5rem}.input-prefix{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:.6rem .7rem;color:#bbb;font-weight:600}.input-with-prefix{flex:1}.settings-hint{color:#bbb;font-size:.9rem;margin-top:.5rem}.settings-url{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.35rem}.btn-ghost{background:transparent;color:#ddd;border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:.45rem .75rem;cursor:pointer}.btn-ghost:disabled{opacity:.6;cursor:default}.btn-secondary{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.45rem .75rem;text-decoration:none}.btn-secondary:hover{background:#ffffff26}.spotify-stats{margin-top:1rem;padding:.75rem 0;border-top:1px solid rgba(255,255,255,.1)}.stat-item{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.stat-item:last-child{margin-bottom:0}.stat-label{color:#888;font-size:.85rem}.stat-value{color:#fff;font-weight:500;font-size:.85rem}.stats-loading,.stats-error{color:#888;font-size:.85rem;margin:0;font-style:italic}.spotify-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.stat-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.75rem 1rem}.stat-card-label{color:#aaa;font-size:.8rem;margin-bottom:.25rem}.stat-card-value{color:#fff;font-weight:600;font-size:1rem}.stat-icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;margin-right:.25rem}.stat-card.green{border-left:3px solid #1db954;box-shadow:inset 0 0 0 1px #1db95426}.stat-card.green .stat-card-value{color:#1db954}.stat-card.plays{border-left:3px solid #1db954;box-shadow:inset 0 0 0 1px #1db95426}.stat-card.plays .stat-card-value{color:#1db954}.stat-card.red{border-left:3px solid #ff6b6b;box-shadow:inset 0 0 0 1px #ff6b6b26}.stat-card.red .stat-card-value{color:#ddd}.service-actions .spotify-connect-button{display:inline-flex;align-items:center;gap:.5rem;background:#1db954;color:#fff;border:none;padding:.6rem 1rem;border-radius:999px;font-weight:600;cursor:pointer;transition:all .2s ease;font-size:.95rem;box-shadow:0 3px 14px #1db95440}.service-actions .spotify-connect-button:hover{background:#1ed760;transform:translateY(-1px);box-shadow:0 4px 18px #1db95459}.service-actions .spotify-connect-button:disabled{background:#666;cursor:not-allowed;transform:none;box-shadow:none}.service-footer{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:flex-end}.import-link{color:#ff6b6b;text-decoration:none;font-weight:600}.import-link:hover{text-decoration:underline}.full-width{width:100%;display:block;box-sizing:border-box}button.ignore-btn{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:6px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;line-height:1;transition:background .2s ease,border-color .2s ease,transform .1s ease,opacity .2s ease;opacity:.85}button.ignore-btn:hover:not(:disabled){background:#ffffff24;border-color:#ffffff59;opacity:1;transform:translateY(-1px)}button.ignore-btn:disabled{opacity:.5;cursor:not-allowed}.public-profile-page{min-height:100vh;background:#0a0a0a;color:#fff;padding:2rem}.public-profile-header{max-width:1200px;margin:0 auto 2rem}.profile-hero{display:flex;align-items:center;gap:1rem}.profile-avatar{width:64px;height:64px;border-radius:50%;object-fit:cover}.profile-meta h1{margin:0;font-size:1.8rem}.username{color:#aaa;font-size:.95rem}.public-profile-content{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.2rem 1.4rem}.card h2{margin:0 0 .8rem}.highlights-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.highlight-title{font-weight:600;margin-bottom:.5rem}.list{list-style:none;margin:0;padding:0}.list-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.list-item:last-child{border-bottom:0}.list-main{display:flex;flex-direction:column}.list-title{font-weight:500}.list-sub{color:#aaa;font-size:.9rem}.list-meta{display:flex;align-items:center;gap:.5rem;color:#bbb;font-size:.85rem;white-space:nowrap}.list-empty{color:#aaa;font-style:italic}.decade{font-size:1.3rem;font-weight:600}.loading-small{color:#bbb;font-size:.95rem;margin-top:.25rem}.snackbar{position:fixed;top:16px;right:16px;display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;border:1px solid rgba(255,255,255,.18);box-shadow:0 4px 20px #0006;z-index:1000}.snackbar.error{background:#dc2626f2;color:#fff}.snackbar-close{background:transparent;color:#fff;border:none;font-size:18px;line-height:1;cursor:pointer}.error-box{text-align:center;border-color:#ff636359;background:#ff636314}.error-title{color:#ff7a7a;font-weight:700;margin-bottom:.35rem}.error-message{color:#ddd;margin-bottom:.75rem}.error-actions{display:flex;justify-content:center}.btn-primary{background:#fff;color:#000;border:none;border-radius:8px;padding:.6rem 1rem;cursor:pointer;font-weight:600}.btn-primary:disabled{opacity:.7;cursor:default}.empty-state{text-align:center;padding:2rem 1.5rem}.empty-icon{font-size:3rem;margin-bottom:.5rem}.empty-title{font-size:1.2rem;font-weight:700;color:#eee}.profile-ignore-btn{margin-left:.5rem;opacity:.6}@media (hover: hover) and (pointer: fine){.list-item .profile-ignore-btn{opacity:0;pointer-events:none;transition:opacity .15s ease}.list-item:hover .profile-ignore-btn{opacity:1;pointer-events:auto}}@media (hover: none),(pointer: coarse){.list-item .profile-ignore-btn{opacity:1;pointer-events:auto}}.profile-ignore-btn:hover{opacity:1}@media (max-width: 800px){.stat-grid,.highlights-grid{grid-template-columns:1fr}}.track-cell{flex:1 1 720px;max-width:100%;min-width:0}.track-cell .recent-item{border-bottom:0;padding-top:0;padding-bottom:0}@media (max-width: 1100px){.track-cell{flex-basis:600px}}@media (max-width: 900px){.track-cell{flex-basis:520px}}@media (max-width: 700px){.track-cell{flex-basis:100%}}.import-page{min-height:100vh;background:#0a0a0a;color:#fff;padding:2rem}.import-header{max-width:900px;margin:0 auto 1.5rem}.import-header h1{margin:0 0 .5rem;font-size:2rem;font-weight:700}.subtitle{color:#aaa}.import-content{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.import-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.25rem 1.5rem}.import-card h2{margin:.75rem 0;font-size:1.2rem;border-top:1px solid rgba(255,255,255,.08);padding-top:.75rem}.import-card p{color:#ccc;line-height:1.6}.link{color:#ff6b6b;text-decoration:none}.link:hover{text-decoration:underline}.upload-form{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.upload-button{background:#fff;color:#000;border:none;border-radius:999px;padding:.6rem 1rem;cursor:pointer;font-weight:700}.upload-button:disabled{opacity:.7;cursor:default}.success{color:#1db954;margin:0}.error{color:#ff6b6b;margin:0}.import-card .info-line{display:flex;align-items:center;gap:.5rem;color:#cfead8}.icon{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem}.icon.plays{color:#1db954}.ignored-page{max-width:1200px;margin:0 auto;padding:2rem}.ignored-page-header{margin-bottom:2rem}.ignored-page-header h1{margin:1rem 0 .5rem;color:var(--text-primary);font-size:2rem;font-weight:600}.ignored-description{color:var(--text-secondary);margin:.5rem 0 0;line-height:1.5}.loading-section,.error-section{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;text-align:center}.loading-spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top:3px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-section .error-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem}.error-section .error-message{color:var(--text-secondary)}.ignored-content{display:flex;flex-direction:column;gap:2rem}.ignored-section{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem}.ignored-section h2{margin:0 0 1rem;color:var(--text-primary);font-size:1.25rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.empty-state{text-align:center;padding:2rem;color:var(--text-secondary)}.ignored-list{list-style:none;padding:0;margin:0}.ignored-item{display:flex;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border-color)}.ignored-item:last-child{border-bottom:none}.ignored-left{flex-shrink:0}.ignored-avatar{width:48px;height:48px;border-radius:8px;object-fit:cover}.ignored-avatar.placeholder{display:flex;align-items:center;justify-content:center;background:var(--border-color);font-size:1.25rem}.ignored-main{flex:1;min-width:0}.ignored-title{font-weight:600;color:var(--text-primary);margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ignored-subtitle{color:var(--text-secondary);font-size:.875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ignored-actions{flex-shrink:0;display:flex;align-items:center;gap:.5rem}.unignore-btn{background:var(--success-color, #10b981);color:#fff;border:none;border-radius:6px;padding:.35rem .6rem;min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;cursor:pointer;font-size:14px;transition:all .2s ease}.unignore-btn:hover:not(:disabled){background:var(--success-hover, #059669);transform:translateY(-1px)}.unignore-btn:disabled{opacity:.6;cursor:not-allowed}.report-btn{background:var(--danger-color, #ef4444);color:#fff;border:none;border-radius:6px;padding:.35rem .6rem;min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:.35rem;cursor:pointer;font-size:14px;transition:all .2s ease;opacity:.9}.report-btn:hover:not(:disabled){opacity:1;background:var(--danger-hover, #dc2626);transform:translateY(-1px)}.report-btn:disabled{opacity:.5;cursor:not-allowed}.mr-2{margin-right:.5rem}@media (max-width: 768px){.ignored-page{padding:1rem}.ignored-content{gap:1.5rem}.ignored-section{padding:1rem}.ignored-item{gap:.75rem}.ignored-avatar{width:40px;height:40px}}body,.layout{overflow-x:hidden}.layout{min-height:100vh;display:flex;flex-direction:column}.user-header{background:#0000004d;border-bottom:1px solid rgba(255,255,255,.1);padding:1rem 1rem 0;position:sticky;top:0;z-index:1000;-webkit-backdrop-filter:saturate(150%) blur(6px);backdrop-filter:saturate(150%) blur(6px)}.user-header-content{display:flex;justify-content:space-between;align-items:flex-end;max-width:1200px;margin:0 auto}.header-center{flex:1 1 auto;display:flex;justify-content:center}.main-tabs{display:flex;gap:2rem;align-items:flex-end}.main-tab{appearance:none;background:transparent;border:none;color:#ffffffd9;padding:.6rem .25rem;cursor:pointer;font-weight:700;font-size:.98rem;min-width:90px;transition:color .2s ease;position:relative;display:inline-flex;align-items:center;justify-content:center;line-height:1.1}.main-tab:hover{color:#fff}.main-tab:after{content:"";position:absolute;left:6px;right:6px;height:3px;bottom:-1px;background:transparent;border-radius:3px 3px 0 0;transform:scaleX(0);transform-origin:left;transition:transform .2s ease,background-color .2s ease}.main-tab:hover:after{background:#ffffff40;transform:scaleX(1)}.main-tab.active{color:#fff}.main-tab.active.recent:after{background:#1db954;transform:scaleX(1)}.main-tab.active.likes:after{background:#dc2626;transform:scaleX(1)}.header-logo{display:flex;align-items:center;gap:.5rem;color:#fff;font-size:1.2rem;font-weight:600;cursor:pointer;transition:opacity .2s ease;margin:auto 50px auto 0}.header-logo:hover{opacity:.8}.header-logo .logo{width:32px;height:32px;margin-bottom:10px}.header-actions{display:flex;align-items:center;gap:1rem}.public-profile-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:50%;color:#fff;cursor:pointer;transition:all .2s ease;font-size:1.2rem}.public-profile-button:hover{background:#ffffff1a;border-color:#fff3;transform:scale(1.05)}.notif-dropdown-container{position:relative}.notif-button{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:50%;color:#fff;cursor:pointer;transition:all .2s ease;font-size:1.1rem}.notif-button:hover{background:#ffffff1a;border-color:#fff3}.notif-badge{position:absolute;top:-4px;right:-4px;background:#ff6b6b;color:#fff;border-radius:999px;font-size:.7rem;padding:0 6px;height:18px;display:flex;align-items:center;justify-content:center;border:2px solid #0a0a0a}.notif-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#141414f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:.5rem 0;min-width:300px;box-shadow:0 10px 30px #0000004d;z-index:1000}.notif-title{font-weight:600;padding:.5rem 1rem}.notif-list{list-style:none;margin:0;padding:.25rem .5rem .5rem;max-height:320px;overflow:auto}.notif-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem;border-radius:10px}.notif-item:hover{background:#ffffff0f}.notif-user{display:flex;align-items:center;gap:.6rem}.notif-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.notif-avatar.placeholder{width:32px;height:32px;border-radius:50%;background:#ffffff14;display:flex;align-items:center;justify-content:center}.notif-user-meta{display:flex;flex-direction:column}.notif-name{font-size:.9rem}.notif-username{font-size:.8rem;color:#aaa}.notif-actions{display:flex;gap:.4rem}.btn-accept,.btn-decline{border:none;border-radius:8px;padding:.4rem .6rem;cursor:pointer;font-weight:600}.btn-accept{background:#22c55ee6;color:#fff}.btn-accept:disabled,.btn-decline:disabled{opacity:.7;cursor:default}.btn-decline{background:#ef4444e6;color:#fff}.user-dropdown-container{position:relative}.user-button{display:flex;align-items:center;gap:.5rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:0;padding:.5rem 1rem;color:#fff;cursor:pointer;transition:all .2s ease}.user-button:hover{background:#ffffff1a;border-color:#fff3}.user-avatar-small{width:32px;height:32px;border-radius:50%;border:2px solid rgba(255,255,255,.2)}.user-name-header{font-weight:500;font-size:.9rem}.dropdown-arrow{transition:transform .2s ease;color:#888}.dropdown-arrow.open{transform:rotate(180deg)}.user-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:#141414f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:0;padding:.5rem 0;min-width:200px;box-shadow:0 10px 30px #0000004d;z-index:1000}.dropdown-user-info{padding:.75rem 1rem}.dropdown-email{color:#888;font-size:.8rem}.dropdown-divider{height:1px;background:#ffffff1a;margin:.5rem 0}.dropdown-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;background:none;border:none;color:#fff;cursor:pointer;transition:background-color .2s ease;font-size:.9rem}.dropdown-item:hover{background:#ffffff1a}.dropdown-item.logout{color:#ff6b6b}.dropdown-item.logout:hover{background:#ff6b6b1a}.dropdown-item:disabled{opacity:.6;cursor:not-allowed}.dropdown-item svg{flex-shrink:0}@media (max-width: 600px){.user-header{padding:.5rem .5rem 0}.user-header-content{flex-direction:row;align-items:center;gap:.5rem;max-width:100vw;margin:0}.header-logo{font-size:1rem;padding:0;margin:0}.main-tabs{gap:1rem}.main-tab{font-size:.9rem;min-width:70px;padding:.4rem .1rem}.header-actions{gap:.3rem}.public-profile-button{display:none!important}}.mini-player{position:fixed;right:16px;bottom:16px;z-index:1000;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:#141414eb;border:1px solid rgba(255,255,255,.12);color:#fff;box-shadow:0 8px 24px #00000059;max-width:min(520px,calc(100vw - 32px));transition:box-shadow .12s ease,transform .12s ease,border-color .12s ease}.mini-player.mp-flash{box-shadow:0 10px 28px #00000073,0 0 0 2px #ffffff14 inset}.mini-player.mp-play{border-color:#1db95499}.mini-player.mp-pause{border-color:#ffffff4d}.mini-player.mp-next{border-color:#ffb36b99}.mp-left{flex:0 0 auto}.mp-cover{width:48px;height:48px;object-fit:cover;border-radius:4px}.mp-cover.placeholder{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#ffffff14}.mp-main{min-width:0;flex:1 1 auto}.mp-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mp-sub{display:flex;align-items:center;gap:6px;color:#bbb;font-size:.9rem;white-space:nowrap;overflow:visible}.mp-artists{max-width:40vw;overflow:hidden;text-overflow:ellipsis}.mp-dot{opacity:.6}.mp-progress{position:relative;height:3px;background:#ffffff1f;border-radius:999px;margin-top:6px;overflow:hidden}.mp-bar{height:100%;background:linear-gradient(90deg,#ff7a7a,#ffb36b)}.mp-actions{display:flex;gap:6px}.mp-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:#fff;cursor:pointer;transition:background .12s ease,transform .12s ease,border-color .12s ease}.mp-btn:hover{background:#ffffff1f}.mp-btn:active{transform:scale(.95)}.mp-btn.mp-btn-flash{border-color:#ffffff59;background:#ffffff24}.mp-idle{color:#bbb;font-size:.9rem}.mp-error{margin-left:6px;color:#ff8080;cursor:help}.mp-device-wrap{position:relative}.mp-device-btn{border:none;background:transparent;color:#bbb;font-size:.9rem;cursor:pointer;padding:2px 4px;border-radius:6px}.mp-device-ico{margin-right:6px}.mp-device-btn:hover{color:#fff;background:#ffffff14}.mp-devices-dropdown{position:absolute;bottom:120%;top:auto;right:0;min-width:220px;max-width:60vw;max-height:50vh;overflow-y:auto;background:#191919fa;border:1px solid rgba(255,255,255,.15);border-radius:10px;box-shadow:0 10px 28px #00000059;padding:6px;z-index:1001}.mp-device-item{width:100%;text-align:left;border:none;background:transparent;color:#fff;padding:8px 10px;border-radius:8px;cursor:pointer}.mp-device-item:hover{background:#ffffff14}.mp-device-item.active{background:#1db95426;border:1px solid rgba(29,185,84,.4)}.mp-device-item.strong{font-weight:600}.mp-device-sep{height:1px;background:#ffffff1f;margin:6px 0}.mp-device-loading,.mp-device-empty{color:#bbb;padding:6px 8px}:root{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#e4e4e7;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;min-height:100vh;background:inherit}#root{min-height:100vh;display:flex;flex-direction:column}h1{background:linear-gradient(135deg,#ef4444,#dc2626,#b91c1c);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-size:2.5rem;font-weight:700;line-height:1.1;margin:0;text-align:center}.tagline{font-size:1.2rem;font-weight:300;color:#a1a1aa;text-align:center;margin:.5rem 0 0;letter-spacing:.05em}.main-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;max-width:800px;margin:0 auto;width:100%}.services-section{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:3rem;margin:2rem 0;text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 8px 32px #0000004d;width:100%;max-width:500px}.services-title{font-size:1.5rem;font-weight:600;color:#f4f4f5;margin-bottom:2rem;text-transform:uppercase;letter-spacing:.1em}.spotify-button{background:linear-gradient(135deg,#1db954,#1ed760);color:#fff;border:none;border-radius:50px;padding:1rem 2rem;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:.5rem;margin:0 auto;text-decoration:none;box-shadow:0 4px 20px #1db9544d}.spotify-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px #1db95466;background:linear-gradient(135deg,#1ed760,#1db954)}.spotify-button:active{transform:translateY(0)}.footer{padding:1.5rem;text-align:center;color:#71717a;font-size:.9rem;border-top:1px solid rgba(255,255,255,.1);background:#0003}.footer-content{display:flex;justify-content:center;align-items:center;gap:1rem;flex-wrap:wrap}.status-indicator{display:flex;align-items:center;gap:.5rem}.status-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.error{color:#ef4444}.loading{color:#f59e0b}@media (max-width: 768px){h1{font-size:2.5rem}.services-section{padding:2rem;margin:1rem 0}.main-content{padding:1rem}.footer-content{flex-direction:column;gap:.5rem}}h2{margin:0 0 2rem}.back-link{color:#888;text-decoration:none;font-size:.9rem;margin-bottom:1rem;display:inline-block;transition:color .2s ease}.back-link:hover{color:#fff}.stat-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.75rem 1rem}.stat-left{display:flex;align-items:center;gap:.5rem}.stat-icon{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem}.stat-label{color:#aaa;font-size:.9rem}.stat-value{color:#fff;font-weight:700;font-size:1rem}.stat-item.green{border-left:3px solid #1db954;box-shadow:inset 0 0 0 1px #1db9541f}.stat-item.green .stat-value{color:#1ed760}.stat-item.red{border-left:3px solid #ff6b6b;box-shadow:inset 0 0 0 1px #ff6b6b1f}.stat-item.red .stat-value{color:#ff9a9a}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.stat-row{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:.75rem;margin-bottom:.75rem}@media (max-width: 800px){.stat-row{grid-template-columns:1fr}}[title]{position:relative}[title]:after{content:attr(title);font-size:.7rem;position:absolute;right:0;top:150%;background-color:#000;width:max-content;opacity:0;-webkit-transition:opacity .75s ease-in-out}[title]:hover:after{opacity:1}.primary-button{background:linear-gradient(90deg,#ff4b4b,#d62828);color:#fff;font-weight:600;border:none;border-radius:6px;padding:.6em 1.6em;font-size:1rem;box-shadow:0 2px 8px #ff4b4b26;cursor:pointer;transition:background .2s,box-shadow .2s}.primary-button:hover:not(:disabled){background:linear-gradient(90deg,#d62828,#ff4b4b);box-shadow:0 4px 12px #ff4b4b40}.primary-button:disabled{background:#ffb3b3;color:#eee;cursor:not-allowed;box-shadow:none}.import-link-row{display:flex;justify-content:flex-end;align-items:center;margin-top:.5em}.import-link{color:#d62828;text-decoration:underline;font-weight:600;font-size:1rem;transition:color .2s}.import-link:hover{color:#ff4b4b;text-decoration:underline}.service-card-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.service-actions{margin-left:auto;display:flex;align-items:center}.action-button{cursor:pointer}.friends-list{display:block;width:100%;margin:0;padding:0}.friend-row{display:grid;grid-template-columns:40px minmax(80px,1fr) 110px 90px minmax(120px,2.5fr) 44px;align-items:center;gap:.5em;padding:.4em .2em;border-bottom:1px solid #222}.friend-header-row{display:grid;grid-template-columns:40px minmax(80px,1fr) 110px 90px minmax(120px,2.5fr) 44px;align-items:center;gap:.5em;font-weight:600;color:#bbb;font-size:1rem;padding:.4em .2em;border-bottom:2px solid #333}.friend-username-cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-lastplay-cell{min-width:0;overflow:hidden;flex-grow:2}.friend-actions-cell{display:flex;justify-content:flex-end;align-items:center;position:relative}.friend-actions-dropdown-container{position:relative;display:flex;align-items:center}.friend-actions-dropdown-trigger{background:none;border:none;cursor:pointer;padding:0 6px;font-size:1.5em;color:#bbb;transition:color .2s}.friend-actions-dropdown-trigger:hover{color:#fff}.friend-actions-dropdown{position:absolute;right:0;top:120%;min-width:140px;background:#222;border:1px solid #444;border-radius:8px;box-shadow:0 4px 16px #0000002e;z-index:10;padding:.4em 0;display:flex;flex-direction:column;gap:2px}.dropdown-action-btn{background:none;border:none;color:#eee;text-align:left;font-size:1em;padding:.5em 1em;cursor:pointer;transition:background .18s,color .18s;border-radius:6px}.dropdown-action-btn:hover:not(:disabled){background:#333;color:#ff4b4b}
