body,html{margin:0;padding:0;height:100%;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(65deg,#7295e6,#1c3f81);overflow:auto!important}.app-container{display:flex;justify-content:center;align-items:center;height:100vh}.glass-card{background:#ffffff1a;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border-radius:20px;padding:50px 30px;text-align:center;color:#fff;border:1px solid rgba(255,255,255,.2);box-shadow:0 8px 32px #00000040;max-width:400px;width:90%;margin:20px auto}.glass-card h1{font-size:2.5rem;margin-bottom:15px}.glass-card p{margin-bottom:25px;font-size:1.1rem}.login-button{padding:12px 24px;background-color:#1db954;border:none;border-radius:30px;color:#fff;font-size:1rem;font-weight:700;cursor:pointer;transition:background .3s ease}.login-button:hover{background-color:#1aa34a}.main-container{display:flex;width:100vw;min-height:100vh}.content-area{position:relative;width:calc(100vw - 220px);min-height:100vh;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}.dashboard-content,.scrollable-dashboard{flex:1;min-height:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:2rem;padding:2rem;padding-top:90px}.dashboard-welcome{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-bottom:2.5rem}.profile-info-container{display:flex;align-items:center;gap:2rem;padding:1.5rem;background:#22283499;border-radius:24px;box-shadow:0 8px 32px #1f26875e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.18)}.dashboard-profile-photo{width:90px;height:90px;border-radius:50%;box-shadow:0 2px 12px #1f26872e;border:2px solid #232946;flex-shrink:0}.profile-text-info{display:flex;flex-direction:column;gap:.5rem}.profile-name{font-size:1.75rem;font-weight:600;color:#e0e6f7;letter-spacing:.5px}.profile-university{font-size:1.1rem;color:#b8c1ec;font-weight:500;letter-spacing:.3px}.welcome-text{font-size:2rem;font-weight:500;color:#e0e6f7;letter-spacing:.5px}.welcome-name{font-weight:700;color:#b8c1ec}.dashboard-row{display:flex;flex-direction:row;gap:2rem;width:100%;justify-content:center;margin-bottom:1.5rem;flex-wrap:wrap;animation:fadeIn .6s ease-out}.dashboard-box-small{flex:1;min-width:220px;max-width:320px}.dashboard-box-large{flex:2;min-width:320px;max-width:600px}.dashboard-section{background:#22283499;border-radius:24px;box-shadow:0 8px 32px #1f26875e;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.18);padding:2rem 1.5rem;color:#fff;margin-bottom:1.5rem}.dashboard-section:has(.recommendations-list){width:100%;max-width:100%;box-sizing:border-box}.top-track-card,.top-artist-card,.recommendation-card{display:flex;align-items:center;gap:1.5rem;background:#2c3650b3;border-radius:18px;box-shadow:0 4px 16px #1f26872b;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);padding:1.5rem;transition:all .3s ease}.top-genres-card{display:flex;flex-direction:column;gap:1rem}.genre-item{display:flex;align-items:center;gap:1rem;background:#2c3650b3;border-radius:12px;padding:1rem;transition:all .3s ease}.genre-item:hover{background:#2c3650e6;transform:translateY(-2px)}.genre-rank{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:700;font-size:.9rem;padding:.5rem .8rem;border-radius:8px;min-width:40px;text-align:center}.genre-info{flex:1}.genre-minutes{color:#b8c1ec;font-size:.9rem;font-weight:500}.artist-count{color:#b8c1ec;font-size:.8rem;font-weight:400}.top-artist-card{display:flex;flex-direction:column;gap:1rem}.artist-item{display:flex;align-items:center;gap:1rem;background:#2c3650b3;border-radius:12px;padding:1rem;margin-bottom:.8rem;transition:all .3s ease}.artist-item:last-child{margin-bottom:0}.artist-item:hover{background:#2c3650e6;transform:translateY(-2px)}.song-info{display:flex;flex-direction:column;gap:.3rem}.song-name{font-weight:600;color:#fff}.song-artists{font-size:.9rem;color:#b8c1ec}.song-count{font-size:.8rem;color:#667eea;font-weight:500}.top-track-card img,.top-artist-card img,.recommendation-card img{border-radius:12px;box-shadow:0 2px 8px #1f26871f}.recommendations-list{display:flex;gap:1.5rem;margin-top:1rem;width:100%;max-width:100%;box-sizing:border-box;justify-content:flex-start}.recommendation-card{display:flex;align-items:center;gap:1.5rem;background:#2c3650b3;border-radius:18px;box-shadow:0 4px 16px #1f26872b;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);padding:1.5rem;transition:all .3s ease;min-height:80px;width:100%;box-sizing:border-box}.dashboard-section h2{font-size:1.5rem;font-weight:600;margin-bottom:1rem;color:#e0e6f7}.dashboard-section em{color:#b0b8d1}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-out}.song-modal{background:#222834f2;border-radius:24px;box-shadow:0 16px 64px #1f268766;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.2);width:90%;max-width:600px;max-height:80vh;overflow:hidden;animation:slideUp .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;border-bottom:1px solid rgba(255,255,255,.1)}.modal-header h3{margin:0;color:#e0e6f7;font-size:1.5rem;font-weight:600}.close-modal-btn{background:none;border:none;color:#b8c1ec;font-size:1.5rem;cursor:pointer;padding:.5rem;border-radius:50%;transition:all .2s ease}.close-modal-btn:hover{background:#ffffff1a;color:#e0e6f7}.search-section{padding:1.5rem 2rem;border-bottom:1px solid rgba(255,255,255,.1)}.song-search-input{width:100%;padding:1rem 1.5rem;background:#2c3650cc;border:1px solid rgba(255,255,255,.2);border-radius:12px;color:#e0e6f7;font-size:1rem;transition:all .2s ease}.song-search-input:focus{outline:none;border-color:#b8c1ec;box-shadow:0 0 0 3px #b8c1ec33}.song-search-input::placeholder{color:#b8c1ec;opacity:.7}.search-loading{text-align:center;color:#b8c1ec;padding:1rem;font-style:italic}.search-results{max-height:400px;overflow-y:auto;padding:1rem 0}.search-result-item{display:flex;align-items:center;gap:1rem;padding:1rem 2rem;cursor:pointer;transition:all .2s ease;border-bottom:1px solid rgba(255,255,255,.05)}.search-result-item:hover{background:#2c365099}.search-result-image{width:50px;height:50px;border-radius:8px;object-fit:cover}.search-result-info{flex:1}.search-result-title{color:#e0e6f7;font-weight:600;margin-bottom:.25rem}.search-result-artist{color:#b8c1ec;font-size:.9rem}.no-results{text-align:center;color:#b8c1ec;padding:2rem;font-style:italic}.recommendations-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.recommendations-header p{color:#b8c1ec;margin:0;font-size:.95rem}.add-recommendation-btn{background:linear-gradient(135deg,#b8c1ec,#a5b4fc);border:none;color:#232946;width:40px;height:40px;border-radius:50%;font-size:1.5rem;font-weight:700;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.add-recommendation-btn:hover{transform:scale(1.1);box-shadow:0 4px 16px #b8c1ec66}.recommendation-info{flex:1;display:flex;flex-direction:column;gap:.25rem}.recommendation-title{color:#e0e6f7;font-weight:600;font-size:.95rem}.recommendation-artist{color:#b8c1ec;font-size:.85rem}.remove-recommendation-btn{background:#ff6b6b33;border:1px solid rgba(255,107,107,.4);color:#ff6b6b;width:24px;height:24px;border-radius:50%;font-size:1rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;position:absolute;top:-8px;right:-8px;z-index:10}.remove-recommendation-btn:hover{background:#ff6b6b4d;transform:scale(1.1)}.empty-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:#b8c1ec;opacity:.7;min-height:80px;width:100%;height:80px;transition:all .2s ease;border:2px dashed rgba(184,193,236,.3);border-radius:12px;background:#2c36504d;box-sizing:border-box}.empty-slot:hover{opacity:1;border-color:#b8c1ec99;background:#2c365080;transform:scale(1.02)}.empty-slot[style*="opacity: 0.5"]{opacity:.3!important;border-color:#b8c1ec1a!important;background:#2c36501a!important;cursor:not-allowed!important}.empty-slot[style*="opacity: 0.5"]:hover{opacity:.3!important;border-color:#b8c1ec1a!important;background:#2c36501a!important;transform:none!important}.empty-slot[style*="opacity: 0.5"] .empty-slot-icon{opacity:.2!important}.empty-slot[style*="opacity: 0.5"] .empty-slot-text{opacity:.5!important}.empty-slot-icon{font-size:1.5rem;font-weight:700;opacity:.5;transition:all .2s ease}.empty-slot:hover .empty-slot-icon{opacity:.8;transform:scale(1.1)}.empty-slot-text{font-size:.85rem;font-style:italic;transition:all .2s ease}.empty-slot:hover .empty-slot-text{color:#e0e6f7}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.search-results::-webkit-scrollbar{width:6px}.search-results::-webkit-scrollbar-track{background:#2c36504d;border-radius:3px}.search-results::-webkit-scrollbar-thumb{background:#b8c1ec4d;border-radius:3px}.search-results::-webkit-scrollbar-thumb:hover{background:#b8c1ec80}.profile-social-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.65rem}.profile-social-link{font-size:.88rem;color:#93c5fd;text-decoration:none;padding:.25rem .6rem;border-radius:999px;border:1px solid rgba(147,197,253,.35);background:#93c5fd14}.profile-social-link:hover{text-decoration:underline}.profile-social-empty{margin:.5rem 0 0;font-size:.88rem;opacity:.85}.profile-friend-action{margin-top:.65rem}.profile-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem;width:100%}.profile-media-card{display:flex;gap:.75rem;align-items:center;padding:.65rem;background:#ffffff0d;border-radius:8px;border:1px solid rgba(255,255,255,.1)}.profile-media-art{width:56px;height:56px;object-fit:cover;border-radius:6px;flex-shrink:0}.profile-media-art--round{border-radius:50%}.profile-media-art--ph{background:#3f3f46}.profile-media-card p{margin:.2rem 0 0;opacity:.85;font-size:.85rem}.profile-media-meta{color:#a7f3d0;font-size:.8rem!important}@media (max-width: 900px){.content-area,.dashboard-content,.scrollable-dashboard{margin-left:0;width:100vw;padding-left:0}.dashboard-row{flex-direction:column;gap:1.5rem;align-items:stretch}.dashboard-box-small,.dashboard-box-large{max-width:100vw;min-width:0}}.landing-page{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;overflow:hidden}.sparkle{position:fixed;pointer-events:none;z-index:1000;font-size:1.5rem;color:gold;text-shadow:0 0 10px rgba(255,215,0,.8);transition:all .3s ease;animation:sparkleFloat 1s ease-out forwards}@keyframes sparkleFloat{0%{opacity:1;transform:scale(1) rotate(0)}50%{opacity:.8;transform:scale(1.2) rotate(180deg)}to{opacity:0;transform:scale(.5) rotate(360deg)}}.landing-nav{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1)}.nav-brand h1{margin:0;font-size:1.8rem;font-weight:700;background:linear-gradient(135deg,#fff,#e0e6f7);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.nav-actions{display:flex;gap:1rem;align-items:center}.nav-btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease;font-size:.9rem}.nav-btn.secondary{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3)}.nav-btn.secondary:hover{background:#ffffff1a;border-color:#ffffff80}.nav-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px #667eea66}.nav-btn.primary:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea80}.nav-btn.spotify-btn,.cta-button.spotify-btn{background:linear-gradient(135deg,#1db954,#1ed760);color:#fff;box-shadow:0 4px 12px #1db95466;border:none}.nav-btn.spotify-btn:hover,.cta-button.spotify-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #1db95480;background:linear-gradient(135deg,#1ed760,#1db954)}.hero-section{padding:4rem 2rem;max-width:1200px;margin:0 auto}.hero-content{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.hero-title{font-size:3.5rem;font-weight:800;line-height:1.1;margin:0 0 1.5rem}.gradient-text{background:linear-gradient(135deg,gold,#ff6b6b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle{font-size:1.2rem;line-height:1.6;margin:0 0 2rem;opacity:.9}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}.cta-button{padding:1rem 2rem;border:none;border-radius:12px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.5rem}.cta-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px #667eea66}.cta-button.primary:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea80}.cta-button.secondary{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.3)}.cta-button.secondary:hover{background:#ffffff1a;border-color:#ffffff80}.cta-button.large{padding:1.25rem 2.5rem;font-size:1.1rem}.spotify-icon{font-size:1.2rem}.hero-visual{display:flex;justify-content:center;align-items:center}.mockup-container{position:relative;transform:perspective(1000px) rotateY(-15deg) rotateX(5deg)}.mockup-screen{width:300px;height:500px;background:#222834f2;border-radius:20px;padding:1.5rem;box-shadow:0 20px 40px #0000004d;border:1px solid rgba(255,255,255,.1)}.mockup-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem}.mockup-avatar{width:50px;height:50px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2)}.mockup-name{font-weight:600;font-size:1.1rem;color:#e0e6f7}.mockup-university{font-size:.9rem;color:#b8c1ec}.mockup-content{display:flex;flex-direction:column;gap:1rem}.mockup-card{background:#2c3650b3;border-radius:12px;padding:1rem;border:1px solid rgba(255,255,255,.1)}.mockup-song-title{font-weight:600;color:#e0e6f7;margin-bottom:.25rem}.mockup-song-artist{font-size:.9rem;color:#b8c1ec;margin-bottom:.5rem}.mockup-genre{font-size:.8rem;color:#b8c1ec;opacity:.8}.features-section{padding:6rem 2rem;background:#ffffff0d}.section-title{text-align:center;font-size:2.5rem;font-weight:700;margin:0 0 4rem}.features-grid{display:flex;flex-direction:row;gap:2rem;max-width:1200px;margin:0 auto;justify-content:center;flex-wrap:wrap}.feature-card{background:#ffffff1a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;padding:2rem;text-align:center;border:1px solid rgba(255,255,255,.1);transition:all .3s ease;flex:1;min-width:250px;max-width:280px}.feature-card:hover{transform:translateY(-5px);box-shadow:0 10px 30px #0003}.feature-icon{font-size:3rem;margin-bottom:1rem}.feature-card h3{font-size:1.5rem;font-weight:600;margin:0 0 1rem;color:#e0e6f7}.feature-card p{line-height:1.6;opacity:.9;margin:0}.stats-section{padding:4rem 2rem}.stats-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem;max-width:1000px;margin:0 auto}.stat-item{text-align:center}.stat-number{font-size:3rem;font-weight:800;background:linear-gradient(135deg,gold,#ff6b6b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.stat-label{font-size:1.1rem;color:#b8c1ec;font-weight:500}.cta-section{padding:6rem 2rem;text-align:center;background:#ffffff0d}.cta-content.center-bottom-cta{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:600px;margin:0 auto}.cta-content h2{font-size:2.5rem;font-weight:700;margin:0 0 1rem}.cta-content p{font-size:1.2rem;opacity:.9;margin:0 0 2rem}.landing-footer{background:#0003;padding:3rem 2rem 1rem}.footer-content{display:flex;justify-content:center;max-width:1200px;margin:0 auto}.footer-brand h3{font-size:1.5rem;font-weight:700;margin:0 0 .5rem;color:#e0e6f7}.footer-brand p{opacity:.8;margin:0}.footer-links{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.footer-column h4{font-size:1.1rem;font-weight:600;margin:0 0 1rem;color:#e0e6f7}.footer-column a{display:block;color:#b8c1ec;text-decoration:none;margin-bottom:.5rem;transition:color .2s ease}.footer-column a:hover{color:#e0e6f7}.footer-bottom{text-align:center;padding-top:2rem;margin-top:2rem;border-top:1px solid rgba(255,255,255,.1);opacity:.7}@media (max-width: 768px){.hero-content{grid-template-columns:1fr;gap:2rem}.hero-title{font-size:2.5rem}.hero-actions{justify-content:center}.features-grid{flex-direction:column;align-items:center}.stats-container{grid-template-columns:repeat(2,1fr)}.footer-content{grid-template-columns:1fr;gap:2rem}.footer-links{grid-template-columns:repeat(2,1fr)}}.email-auth-panel{max-width:420px;margin:0 auto 2rem;padding:0 1.5rem}.email-auth-panel--hero{margin:1.25rem 0 1.5rem;padding:0;max-width:440px;width:100%}.email-auth-google-btn{width:100%;padding:.7rem 1rem;border:none;border-radius:8px;background:linear-gradient(135deg,#fff,#e8e8f0);color:#1f2937;font-weight:600;font-size:.95rem;cursor:pointer;margin-bottom:.5rem}.email-auth-google-btn:disabled{opacity:.6;cursor:not-allowed}.email-auth-divider{text-align:center;margin:.75rem 0;font-size:.85rem;opacity:.85}.email-auth-card{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.75rem}.email-auth-title{margin:0;font-size:1.1rem;text-align:center}.email-mode-toggle{display:flex;gap:.5rem}.email-mode-btn{flex:1;padding:.5rem;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:transparent;color:#fff;cursor:pointer;font-size:.9rem}.email-mode-btn.active{background:#fff3;font-weight:600}.email-auth-label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem}.email-auth-input{padding:.55rem .65rem;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:#0003;color:#fff;font-size:1rem}.email-auth-input::placeholder{color:#ffffff73}.email-auth-error{margin:0;color:#fecaca;font-size:.85rem}.email-auth-submit{margin-top:.25rem;padding:.65rem 1rem;border:none;border-radius:8px;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;font-weight:600;cursor:pointer;font-size:.95rem}.email-auth-submit:disabled{opacity:.6;cursor:not-allowed}.loading-spinner{display:flex;align-items:center;justify-content:center;height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-size:1.1rem}.top-bar{position:fixed;top:0;left:220px;right:0;height:60px;background:#2c2c2c;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:0 20px;z-index:1000;box-shadow:0 2px 5px #0000001a;margin:0;box-sizing:border-box;width:calc(100% - 220px)}.top-bar-content{display:flex;width:100%;justify-content:space-between;align-items:center}.top-bar .logo{height:100%;display:flex;align-items:center}.top-bar-btn{background-color:#39d2f0;font-weight:700;padding:8px 16px;border-radius:20px;color:#fff;display:flex;align-items:center;gap:px;font-size:.9rem;cursor:pointer;transition:all .3s ease;transition:background-color .2s ease}.top-bar-btn:hover{background-color:#3cfff9;opacity:.9;transform:translateY(-1px)}.top-bar-btn.logout-btn{background-color:#f04b39;font-weight:700;transition:background-color .2s ease}.top-bar-btn.logout-btn:hover{background-color:#ff3b3b;opacity:.9;transform:translateY(-1px)}.sidebar{width:220px;background:linear-gradient(135deg,#1a1a1a,#2c2c2c);padding:20px 0;height:100vh;position:fixed;left:0;bottom:0;top:40px;box-shadow:4px 0 10px #0003;z-index:900}.nav-links{list-style:none;padding:0;margin:0}.nav-item{padding:15px 25px;margin:5px 0;color:#e2e2e2;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:12px;font-size:15px;position:relative}.nav-item:hover{background:#4582f234;color:#fff}.nav-item.active{background:#024e74!important;box-shadow:0 2px 8px #00f2fe4d!important}.nav-item.active:before{content:"";position:absolute;left:0;top:0;height:100%;width:4px;background:#00f2fe!important}.nav-item svg{font-size:18px;flex-shrink:0}.friend-requests-section{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:1rem}.friend-requests-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;cursor:pointer;border-radius:8px;transition:all .3s ease;color:#b0b8d1}.friend-requests-header:hover{background:#ffffff0d;color:#e0e6f7}.friend-requests-title{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600}.friend-requests-title svg{font-size:1rem;color:#00f2fe}.friend-requests-list{margin-top:.5rem;padding:0 .5rem;max-height:300px;overflow-y:auto}.friend-request-item{background:#2c365080;border-radius:8px;padding:.75rem;margin-bottom:.5rem;border:1px solid rgba(255,255,255,.08);transition:all .3s ease}.friend-request-item:hover{background:#2c3650cc;border-color:#00f2fe4d}.request-user-info{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.request-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1px solid rgba(0,242,254,.3)}.request-details{flex:1;min-width:0}.request-name{color:#e0e6f7;font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-campus{color:#8a8f9c;font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-actions{display:flex;gap:.5rem;justify-content:flex-end}.accept-btn,.reject-btn{width:24px;height:24px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.7rem;transition:all .3s ease}.accept-btn{background:#00f2fe;color:#000}.accept-btn:hover{background:#00d4e0;transform:scale(1.1)}.reject-btn{background:#ff4757;color:#fff}.reject-btn:hover{background:#ff3742;transform:scale(1.1)}.friend-requests-list::-webkit-scrollbar{width:4px}.friend-requests-list::-webkit-scrollbar-track{background:#ffffff0d;border-radius:2px}.friend-requests-list::-webkit-scrollbar-thumb{background:#00f2fe4d;border-radius:2px}.friend-requests-list::-webkit-scrollbar-thumb:hover{background:#00f2fe80}@media (max-width: 768px){.friend-requests-section{margin-top:1rem}.friend-request-item{padding:.5rem}.request-avatar{width:28px;height:28px}.request-name{font-size:.8rem}.request-campus{font-size:.7rem}}*{margin:0;padding:0;box-sizing:border-box}.app-root{display:flex;flex-direction:column;min-height:100vh}.main-container{margin-left:220px;padding-top:60px;width:calc(100% - 220px);min-height:100vh}.sidebar{position:fixed;top:0;left:0;width:220px;height:100vh;background:linear-gradient(135deg,#1a1a1a,#2c2c2c);z-index:900;padding-top:60px}.content-area{padding:20px}.map-container{width:100%;height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,#667eea,#764ba2)}.map-header{padding:2rem;text-align:center;color:#fff;background:#0000001a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.map-header h2{margin:0 0 .5rem;font-size:2rem;font-weight:600}.map-header p{margin:0;font-size:1.1rem;opacity:.9}.map-content{flex:1;display:flex;position:relative}.map{flex:1;height:100%;border-radius:12px;overflow:hidden}.leaflet-container{background:#242424!important}.leaflet-control-zoom{border:none!important;background:#222834e6!important;-webkit-backdrop-filter:blur(12px)!important;backdrop-filter:blur(12px)!important}.leaflet-control-zoom a{background:#2c3650cc!important;color:#e0e6f7!important;border:1px solid rgba(255,255,255,.1)!important}.leaflet-control-zoom a:hover{background:#2c3650!important;color:#fff!important}.leaflet-control-attribution{background:#222834cc!important;color:#b8c1ec!important;font-size:.8rem!important}.map-sidebar{width:300px;background:#222834f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-left:1px solid rgba(255,255,255,.1);padding:1.5rem;overflow-y:auto;color:#fff}.map-sidebar h3{margin:0 0 1rem;font-size:1.25rem;font-weight:600;color:#e0e6f7}.no-friends{text-align:center;padding:2rem 1rem;color:#b8c1ec}.no-friends p{margin:.5rem 0;font-size:.95rem}.friends-list{display:flex;flex-direction:column;gap:1rem}.friend-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:#2c3650b3;border-radius:12px;cursor:pointer;transition:all .2s ease;border:1px solid rgba(255,255,255,.1)}.friend-item:hover{background:#2c3650e6;transform:translateY(-2px);box-shadow:0 4px 12px #0003}.friend-avatar--placeholder{background:linear-gradient(135deg,#333,#555)}.friend-avatar{width:50px;height:50px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.2)}.friend-info{flex:1}.friend-name{font-weight:600;color:#e0e6f7;margin-bottom:.25rem}.friend-university{font-size:.9rem;color:#b8c1ec}.custom-marker{background:transparent!important;border:none!important}.friend-marker{position:relative;cursor:pointer;display:flex;flex-direction:column;align-items:center}.marker-content{position:relative;display:flex;flex-direction:column;align-items:center}.marker-profile-image{width:40px;height:40px;border-radius:50%;border:3px solid white;box-shadow:0 2px 8px #0000004d;object-fit:cover}.marker-default-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:20px;border:3px solid white;box-shadow:0 2px 8px #0000004d}.marker-preview{position:absolute;bottom:50px;left:50%;transform:translate(-50%);background:#222834f2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.75rem 1rem;white-space:nowrap;display:none;z-index:1000;box-shadow:0 4px 16px #0000004d}.marker-preview:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:#222834f2}.preview-name{font-weight:600;color:#e0e6f7;font-size:.9rem;margin-bottom:.25rem}.preview-university{color:#b8c1ec;font-size:.8rem}.map-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#b8c1ec}.loading-spinner{width:30px;height:30px;border:2px solid rgba(184,193,236,.3);border-top:2px solid #b8c1ec;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.loading-spinner+p{margin:0;font-size:.9rem;text-align:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.map-content{flex-direction:column}.map-sidebar{width:100%;height:200px;border-left:none;border-top:1px solid rgba(255,255,255,.1)}.map{height:calc(100vh - 200px)}}.map-sidebar::-webkit-scrollbar{width:6px}.map-sidebar::-webkit-scrollbar-track{background:#2c36504d;border-radius:3px}.map-sidebar::-webkit-scrollbar-thumb{background:#b8c1ec4d;border-radius:3px}.map-sidebar::-webkit-scrollbar-thumb:hover{background:#b8c1ec80}body{margin:0;padding:0;height:100vh;overflow:hidden}.h1{color:#e3e3e3}.page-container{display:flex;flex-direction:column;height:100vh;width:100vw}.top-bar{position:sticky;top:0;width:100%;z-index:1000;background:#2c2c2c;flex-shrink:0}.developer-page{flex:1;overflow-y:auto;display:flex;flex-direction:column}.developer-content{top:30px;display:flex;flex-direction:column;align-items:center;padding:20px;width:100%}.developer-message{background-color:#121212;color:#fff;padding:25px;border-radius:12px;margin:30px 0;box-shadow:0 4px 8px #0000004d;line-height:1.6;width:90%;max-width:800px;animation:fadeIn .6s ease-out}.developer-message h2{color:#1fc9d9;margin-bottom:15px}.developer-message p{margin-bottom:12px}.developer-message a{color:#1fc9d9;text-decoration:none;font-weight:700}.developer-message a:hover{text-decoration:underline}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.onboarding-wrapper{display:flex;justify-content:center;align-items:center;min-height:90vh}.onboarding-card{background:#222;color:#fff;padding:2rem;border-radius:1.5rem;max-width:1000px;width:70%}.onboarding-card h2{text-align:center;margin-bottom:1.5rem}.onboarding-columns{display:flex;gap:2rem;flex-wrap:wrap}.onboarding-left,.onboarding-right{flex:1;display:flex;flex-direction:column;gap:1rem}.onboarding-left input,.onboarding-right input{width:100%;padding:.5rem;border:none;border-radius:.3rem}.checkbox-container{display:flex;align-items:left;gap:.5rem}.submit-btn{margin-top:2rem;padding:.8rem 2rem;background:#00f2fe;color:#000;font-weight:700;border:none;border-radius:.5rem;cursor:pointer;display:block;margin-left:auto;margin-right:auto}.discover-scroll-section{margin-bottom:2rem}.discover-scroll-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.75rem}.discover-scroll-header h2{margin:0;font-size:1.2rem}.discover-scroll-subtitle{margin:.25rem 0 0;font-size:.9rem;opacity:.8}.discover-scroll-nav{display:flex;gap:.35rem;flex-shrink:0}.discover-scroll-btn{width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#fff;font-size:1.25rem;line-height:1;cursor:pointer}.discover-scroll-btn:hover{background:#ffffff26}.discover-scroll-track{display:flex;gap:.85rem;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.5rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.discover-scroll-track::-webkit-scrollbar{height:6px}.discover-scroll-track::-webkit-scrollbar-thumb{background:#ffffff40;border-radius:3px}.discover-song-card{flex:0 0 200px;scroll-snap-align:start;background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.discover-song-art{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}.discover-song-art--placeholder{background:#3f3f46}.discover-song-title{font-weight:600;font-size:.95rem;line-height:1.25}.discover-song-artist{font-size:.82rem;opacity:.85;line-height:1.3}.discover-song-badge{font-size:.75rem;color:#a7f3d0;margin-top:.15rem}.friend-request-wrap{display:flex;flex-direction:column;gap:.25rem}.friend-request-btn{padding:.4rem .85rem;border-radius:999px;border:1px solid rgba(167,243,208,.5);background:#10b98126;color:#a7f3d0;font-size:.85rem;font-weight:600;cursor:pointer}.friend-request-btn:hover:not(:disabled){background:#10b98147}.friend-request-btn:disabled{opacity:.6;cursor:wait}.friend-pill{display:inline-block;padding:.35rem .75rem;border-radius:999px;font-size:.82rem;font-weight:600}.friend-pill--friends{background:#a7f3d026;color:#a7f3d0;border:1px solid rgba(167,243,208,.35)}.friend-pill--pending{background:#ffffff14;color:#d4d4d8;border:1px solid rgba(255,255,255,.15)}.friend-request-error{font-size:.75rem;color:#fecaca}.discover-page{padding:1.5rem 1.25rem 3rem;max-width:1100px;margin:0 auto;color:#f4f4f5}.discover-page--scroll{overflow-x:hidden}.discover-loading{padding:3rem;text-align:center}.discover-header h1{margin:0 0 .5rem;font-size:1.75rem}.discover-subtitle{margin:0 0 2rem;opacity:.85;line-height:1.5;max-width:42rem}.discover-section h2{margin:0 0 1rem;font-size:1.2rem}.discover-section+.discover-section{margin-top:2.5rem}.discover-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.discover-card{background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.65rem}.discover-card-header{display:flex;gap:.75rem;align-items:flex-start}.discover-card-header h3{margin:0;font-size:1.05rem}.discover-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0}.discover-avatar-placeholder{background:#3f3f46}.discover-campus{margin:.15rem 0 0;font-size:.85rem;opacity:.85}.discover-score{margin:.25rem 0 0;font-weight:600;color:#a7f3d0}.discover-meta{margin:0;font-size:.9rem;opacity:.9}.discover-socials{display:flex;flex-wrap:wrap;gap:.5rem}.discover-socials a{font-size:.85rem;color:#93c5fd;text-decoration:none}.discover-socials a:hover{text-decoration:underline}.discover-profile-link{margin-top:auto;font-size:.9rem;color:#e9d5ff;text-decoration:none;font-weight:600}.discover-profile-link:hover{text-decoration:underline}.discover-empty{opacity:.8;margin:0}.connect-spotify-container{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;padding:20px;color:#fff}.connect-spotify-content{max-width:600px;width:100%;text-align:center;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;padding:40px;box-shadow:0 8px 32px #0000004d}.welcome-section{margin-bottom:40px}.welcome-section h1{font-size:2.5rem;margin-bottom:20px;background:linear-gradient(45deg,#fff,#f0f0f0);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.welcome-section p{font-size:1.2rem;opacity:.9;line-height:1.6}.spotify-connection-section{background:#ffffff0d;border-radius:15px;padding:30px;border:1px solid rgba(255,255,255,.2)}.spotify-logo{margin-bottom:20px}.spotify-icon{font-size:4rem;display:block;margin-bottom:10px}.spotify-connection-section h2{font-size:1.8rem;margin-bottom:20px;color:#1db954}.spotify-connection-section p{font-size:1.1rem;margin-bottom:20px;opacity:.9}.spotify-connection-section ul{text-align:left;max-width:400px;margin:0 auto 30px;padding-left:20px}.spotify-connection-section li{margin-bottom:10px;font-size:1rem;opacity:.9}.connect-spotify-btn{background:linear-gradient(45deg,#1db954,#1ed760);color:#fff;border:none;padding:15px 40px;font-size:1.2rem;border-radius:50px;cursor:pointer;transition:all .3s ease;font-weight:600;box-shadow:0 4px 15px #1db9544d}.connect-spotify-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #1db95466}.connect-spotify-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.error-message{background:#ff3b3033;border:1px solid rgba(255,59,48,.3);color:#ff6b6b;padding:15px;border-radius:10px;margin:20px 0;font-size:.9rem;text-align:left}.connect-step-hint,.connect-redirect-hint{font-size:.85rem;opacity:.85;margin-top:1rem;line-height:1.5}.connect-redirect-hint code{display:block;margin-top:.35rem;padding:.35rem .5rem;background:#00000040;border-radius:6px;font-size:.8rem;word-break:break-all}.skip-option{margin-top:30px;padding-top:20px;border-top:1px solid rgba(255,255,255,.2)}.skip-option p{font-size:.9rem;opacity:.7;margin-bottom:10px}.skip-option button{background:none;border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 16px;border-radius:20px;cursor:pointer;transition:all .3s ease;font-size:.9rem}.skip-option button:hover{background:#ffffff1a;border-color:#ffffff80}.loading-spinner{display:flex;align-items:center;justify-content:center;height:100vh;color:#fff;font-size:1.2rem}@media (max-width: 768px){.connect-spotify-content{padding:30px 20px}.welcome-section h1{font-size:2rem}.spotify-connection-section{padding:20px}}.friends-panel{margin-top:1.5rem}.friends-panel-muted{opacity:.85;margin:0 0 1rem;line-height:1.5}.friends-panel-block{margin-top:1.25rem}.friends-panel-block h3{margin:0 0 .65rem;font-size:1rem}.friends-request-list,.friends-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.friends-request-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;padding:.65rem .85rem;background:#ffffff0d;border-radius:8px}.friends-request-name{color:#e9d5ff;font-weight:600;text-decoration:none}.friends-request-actions{display:flex;gap:.5rem}.friends-request-actions button{padding:.35rem .75rem;border-radius:6px;border:none;cursor:pointer;font-size:.85rem;background:#10b981;color:#042f1a;font-weight:600}.friends-request-actions button.decline{background:#ffffff1f;color:#f4f4f5}.friends-list a{color:#93c5fd;text-decoration:none;font-weight:600}.friends-campus{margin-left:.5rem;opacity:.75;font-size:.85rem}body,html{margin:0;padding:0;width:100%;height:100%;overflow-x:hidden}.app-root{display:flex;min-height:100vh}.top-bar{position:fixed;top:0;left:0;right:0;height:60px;background:#2c2c2c;display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:1000;box-shadow:0 2px 5px #0000001a}.sidebar{position:fixed;width:220px;height:100vh;left:0;background:linear-gradient(135deg,#1a1a1a,#2c2c2c);z-index:900}.top-bar-buttons{display:flex;gap:10px;height:100%;align-items:center}
