body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#1f2937;color:#fff}*{box-sizing:border-box}.min-h-screen{min-height:100vh}.bg-gray-900{background-color:#111827}.bg-gray-800{background-color:#1f2937}.bg-gray-700{background-color:#374151}.bg-gray-600{background-color:#4b5563}.bg-purple-600{background-color:#9333ea}.bg-red-900{background-color:#7f1d1d}.border-gray-700{border-color:#374151}.border-red-700{border-color:#b91c1c}.text-white{color:#fff}.text-gray-300{color:#d1d5db}.text-gray-400{color:#9ca3af}.text-gray-500{color:#6b7280}.text-red-200{color:#fecaca}.text-lg{font-size:1.125rem}.text-2xl{font-size:1.5rem}.text-5xl{font-size:3rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-medium{font-weight:500}.text-center{text-align:center}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.p-6{padding:1.5rem}.p-4{padding:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-12{margin-bottom:3rem}.mt-8{margin-top:2rem}.mt-1{margin-top:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.max-w-2xl{max-width:42rem}.w-full{width:100%}.w-16{width:4rem}.w-2{width:.5rem}.h-16{height:4rem}.h-2{height:.5rem}.border-4{border-width:4px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-purple-500{border-color:#a855f7}.border-gray-600{border-color:#4b5563}.border-transparent{border-color:transparent}.focus\:outline-none:focus{outline:none}.focus\:ring-2:focus{box-shadow:0 0 0 2px}.focus\:ring-purple-500:focus{box-shadow:0 0 0 2px #a855f7}.focus\:border-transparent:focus{border-color:transparent}.transition-all{transition:all .15s ease-in-out}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.transform{transform:translateZ(0)}.hover\:scale-105:hover{transform:scale(1.05)}.hover\:scale-95:active{transform:scale(.95)}.hover\:from-purple-700:hover,.hover\:to-pink-700:hover{background:linear-gradient(to right,#7c3aed,#ec4899)}.hover\:shadow-xl:hover{box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.shadow-lg{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.placeholder-gray-400::placeholder{color:#9ca3af}.bg-gradient-to-r,.from-purple-600,.to-pink-600{background:linear-gradient(to right,#9333ea,#ec4899)}.space-y-4>*+*{margin-top:1rem}.space-y-2>*+*{margin-top:.5rem}.space-y-1>*+*{margin-top:.25rem}.space-x-1>*+*{margin-left:.25rem}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.grid{display:grid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.gap-6{gap:1.5rem}.gap-2{gap:.5rem}.relative{position:relative}.absolute{position:absolute}.inset-0{inset:0}.animate-spin{animation:spin 1s linear infinite}.animate-bounce{animation:bounce 1s infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}@media(min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.App{display:flex;flex-direction:column;min-height:100vh;text-align:center;background-image:linear-gradient(#000000b3,#000000b3),url(https://images.unsplash.com/photo-1470225620780-dba8ba36b745?q=80&w=2070&auto=format&fit=crop);background-size:cover;background-position:center;background-attachment:fixed;color:#fff;font-family:sans-serif}.App-header{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem 2rem}.login-button,.logout-button{position:absolute;top:2rem;right:2rem;background-color:#1db954;color:#fff;border:none;padding:.8rem 1.5rem;border-radius:50px;font-weight:700;font-size:1rem;cursor:pointer;transition:transform .2s,background-color .2s;z-index:10}.login-button:hover,.logout-button:hover{background-color:#1ed760;transform:scale(1.05)}form{display:flex;width:100%;max-width:600px;margin-top:2rem}form input[type=text]{flex-grow:1;padding:1rem;font-size:1.2rem;border:2px solid #555;border-radius:8px 0 0 8px;background-color:#333;color:#fff;outline:none}form input[type=text]:focus{border-color:#1db954}form button{padding:1rem 1.5rem;font-size:1.2rem;border:2px solid #1DB954;border-left:none;border-radius:0 8px 8px 0;background-color:#1db954;color:#fff;cursor:pointer;transition:background-color .2s}form button:hover{background-color:#1ed760}.error{color:#ff4d4d;margin-top:1.5rem;font-weight:700;background-color:#ff4d4d1a;padding:.5rem 1rem;border-radius:4px;display:inline-block}main{flex-grow:1;padding:2rem 0}.search-result-container{display:flex;justify-content:center;align-items:flex-start;gap:4rem;margin:3rem auto 0;padding:0 2rem;flex-wrap:wrap;max-width:900px}.searched-artist{max-width:300px;display:flex;flex-direction:column;align-items:center}.searched-artist img{width:100%;max-width:250px;border-radius:50%;box-shadow:0 4px 20px #00000080;margin-bottom:1.5rem}.searched-artist h2{font-size:2.2rem;font-weight:700}.top-tracks{text-align:left;max-width:400px}.top-tracks h3{font-size:1.5rem;margin-bottom:1rem;border-bottom:2px solid #1DB954;padding-bottom:.5rem;color:#eee}.top-tracks ol{list-style-type:decimal;padding-left:1.5rem;margin:0}.top-tracks li{margin-bottom:.8rem;font-size:1.1rem}.top-tracks a{color:#fff;text-decoration:none;transition:color .2s}.top-tracks a:hover{color:#1db954;text-decoration:underline}.playlist-save-container{margin:4rem 0}.save-playlist-button{display:inline-flex;align-items:center;gap:.8rem;background-color:#1db954;color:#fff;border:none;padding:1rem 2rem;border-radius:50px;font-weight:700;font-size:1.1rem;cursor:pointer;transition:transform .2s,background-color .2s;box-shadow:0 4px 15px #0006}.save-playlist-button:hover{background-color:#1ed760;transform:scale(1.05)}.spotify-icon{width:24px;height:24px}.recommendations{width:100%;max-width:1200px;margin:0 auto;padding:0 2rem}.genre-card{display:flex;gap:2rem;background-color:#ffffff0d;border-radius:12px;padding:2.5rem;margin-bottom:2.5rem;border:1px solid rgba(255,255,255,.1);transition:transform .2s,box-shadow .2s}.genre-card:hover{transform:translateY(-5px);box-shadow:0 8px 30px #00000080}.genre-column{display:flex;flex-direction:column}.genre-identity{flex:1;align-items:center}.genre-identity h3{margin-bottom:1.5rem;font-size:1.8rem;color:#1db954;font-weight:700}.genre-image{width:100%;max-width:180px;border-radius:8px;object-fit:cover;box-shadow:0 4px 10px #0000004d}.genre-image-placeholder{width:180px;height:180px;border-radius:8px;background-color:#333;color:#888;display:flex;align-items:center;justify-content:center;font-style:italic}.genre-description{flex:2;justify-content:center;text-align:left;line-height:1.7;font-size:1.1rem;color:#ddd;border-left:1px solid #444;border-right:1px solid #444;padding:0 2rem}.genre-artists{flex:1;text-align:left}.genre-artists h4{font-size:1.2rem;margin-bottom:1.5rem;color:#ccc;border-bottom:1px solid #555;padding-bottom:.5rem}.genre-artists ul{list-style:none;padding:0;margin:0}.genre-artists li{margin-bottom:.8rem}.artist-link-button{background:none;border:none;padding:0;margin:0;color:#fff;text-decoration:none;cursor:pointer;font-size:1.1rem;font-family:inherit;text-align:left;transition:color .2s}.artist-link-button:hover{color:#1db954;text-decoration:underline}@media(max-width:768px){.genre-card{flex-direction:column;align-items:center}.genre-description,.genre-artists{text-align:center;align-items:center;border-left:none;border-right:none;padding:1rem 0}.search-result-container{gap:2rem}}.App-footer{padding:2rem 1rem;font-size:.8rem;color:#aaa;margin-top:auto;line-height:1.5}
