*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--green:#1DB954;--green-hover:#1ed760;--bg:#121212;--surface:#1e1e1e;--surface-hover:#282828;--border:#333;--text:#ffffff;--muted:#b3b3b3;--danger:#e22134;--danger-hover:#f23244}body,html{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}.container{max-width:680px;margin:0 auto;padding:2rem 1.5rem}.container.centered{min-height:100vh;justify-content:center}.container.centered,.hero{display:flex;align-items:center}.hero{text-align:center;flex-direction:column;gap:1.5rem}.hero h1{font-size:2.25rem;font-weight:700;letter-spacing:-.02em}.hero p{font-size:1.125rem;color:var(--muted);max-width:420px}header{margin-bottom:2rem}header h1{font-size:1.75rem;font-weight:700}.card{background:var(--surface);border-radius:12px;padding:1.5rem;margin-bottom:1rem;border:1px solid var(--border)}.card h2{font-size:1.125rem;font-weight:600;margin-bottom:.5rem}.card p{color:var(--muted);margin-bottom:1rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.25rem;border-radius:500px;font-size:.9rem;font-weight:600;cursor:pointer;border:none;transition:background .15s,color .15s,transform .1s;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:not(:disabled):active{transform:scale(.97)}.btn-primary{background:var(--green);color:#000}.btn-primary:not(:disabled):hover{background:var(--green-hover)}.btn-primary.btn-large{padding:.875rem 2rem;font-size:1rem}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-secondary:not(:disabled):hover{background:var(--surface-hover);border-color:var(--text)}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btn-danger:not(:disabled):hover{background:var(--danger);color:#fff}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn-ghost:not(:disabled):hover{color:var(--text);border-color:var(--text)}.account-actions,.actions{display:flex;gap:.75rem;flex-wrap:wrap}.account-actions{justify-content:flex-end}.alert{padding:.875rem 1.125rem;border-radius:8px;margin-bottom:1rem;font-size:.9rem}.alert-success{background:rgba(29,185,84,.15);border:1px solid rgba(29,185,84,.4);color:var(--green-hover)}.alert-error{background:rgba(226,33,52,.15);border:1px solid rgba(226,33,52,.4);color:#f08090}.alert-info{background:rgba(255,255,255,.06);color:var(--muted)}.alert-info,.search-input{border:1px solid var(--border)}.search-input{width:100%;padding:.625rem .875rem;background:var(--bg);border-radius:8px;color:var(--text);font-size:.9rem;margin-bottom:.75rem;outline:none}.search-input:focus{border-color:var(--green)}.search-input::placeholder{color:var(--muted)}.artist-list{list-style:none;display:flex;flex-direction:column;gap:.25rem;max-height:60vh;overflow-y:auto}.artist-list li a{display:block;padding:.5rem .75rem;border-radius:6px;color:var(--text);text-decoration:none;font-size:.9rem;transition:background .1s}.artist-list li a:hover{background:var(--surface-hover);color:var(--green)}.artist-link{width:100%;border-radius:6px;justify-content:flex-start;padding:.5rem .75rem;font-size:.9rem;font-weight:400}.event-list{list-style:none;display:flex;flex-direction:column;gap:.25rem;max-height:60vh;overflow-y:auto}.event-item{width:100%;border-radius:6px;display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;font-weight:400;text-align:left}.event-label{font-size:.9rem;color:var(--text)}.event-date{font-size:.8rem;color:var(--muted);white-space:nowrap;flex-shrink:0}.muted{color:var(--muted);font-size:.9rem}.spotify-branding{color:var(--muted);font-size:.8rem;margin-top:.5rem}