:root{
  --ink:#eef0ff; --mute:#9aa0c3; --accent:#5b74ff; --accent2:#9fb0ff;
  --card:rgba(10,12,22,.55); --line:rgba(255,255,255,.08);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:#07080d;color:var(--ink);overflow:hidden;
  font:15px/1.4 "Segoe UI Variable","Segoe UI",ui-sans-serif,system-ui,sans-serif;
  display:grid;place-items:center;-webkit-font-smoothing:antialiased;
}
a{color:inherit}

/* background: blurred cover art + vignette */
.bg{position:fixed;inset:-40px;background:center/cover no-repeat;filter:blur(28px) brightness(.38) saturate(1.2);transform:scale(1.08);z-index:-3}
body::before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.75) 100%)}
.grain{position:fixed;inset:0;z-index:-1;opacity:.07;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* click to enter */
.enter{position:fixed;inset:0;z-index:10;border:0;cursor:pointer;color:var(--ink);
  background:rgba(4,5,10,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  display:none;place-items:center;font:inherit;font-size:18px;letter-spacing:.32em;text-transform:lowercase;
  transition:opacity .6s ease}
.enter.show{display:grid}
.enter.out{opacity:0;pointer-events:none}
.enter span{animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}

/* card */
.card{width:min(420px,calc(100vw - 32px));padding:34px 28px 22px;border-radius:18px;text-align:center;
  background:var(--card);border:1px solid var(--line);
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  box-shadow:0 30px 80px rgba(0,0,0,.55);
  opacity:0;transform:translateY(14px) scale(.98);transition:opacity .8s ease,transform .8s ease;
  will-change:transform}
body.in .card{opacity:1;transform:none}

.avatar{width:104px;height:104px;border-radius:50%;object-fit:cover;background:#fff;
  border:2px solid rgba(255,255,255,.9);box-shadow:0 0 0 4px rgba(91,116,255,.25),0 10px 30px rgba(0,0,0,.5)}
.name{margin-top:14px;font-size:34px;font-weight:700;letter-spacing:.02em;
  text-shadow:0 0 12px rgba(120,140,255,.85),0 0 30px rgba(91,116,255,.45)}
.bio{margin-top:4px;min-height:22px;color:var(--mute);font-size:15px}
.caret{margin-left:1px;color:var(--accent2);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* socials */
.links{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:20px 0 22px}
.ic{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;color:#e7e9ff;
  transition:transform .18s ease,color .18s ease,filter .18s ease}
.ic svg{width:24px;height:24px;filter:drop-shadow(0 0 6px rgba(140,160,255,.55))}
.ic:hover,.ic:focus-visible{transform:translateY(-3px);color:#fff;outline:none}
.ic:hover svg,.ic:focus-visible svg{filter:drop-shadow(0 0 10px rgba(140,160,255,.95))}
.ic .alt{position:absolute;right:5px;bottom:4px;font-size:10px;font-weight:700;color:var(--accent2)}
.ic::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);
  white-space:nowrap;font-size:12px;padding:4px 8px;border-radius:6px;background:rgba(0,0,0,.85);color:#fff;
  opacity:0;pointer-events:none;transition:.15s}
.ic:hover::after,.ic:focus-visible::after{opacity:1;transform:translateX(-50%)}

/* player */
.player{display:flex;align-items:center;gap:12px;padding:10px;border-radius:12px;text-align:left;
  background:rgba(255,255,255,.04);border:1px solid var(--line)}
.cv{width:52px;height:52px;border-radius:8px;object-fit:cover;flex:none}
.meta{flex:1;min-width:0}
.t{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a{font-size:12px;color:var(--mute)}
.a a{text-decoration:none;color:var(--accent2)}
.a a:hover{text-decoration:underline}
.bar{margin-top:7px;height:4px;border-radius:2px;background:rgba(255,255,255,.12);cursor:pointer;position:relative}
.bar::before{content:"";position:absolute;inset:-6px 0}
.fill{height:100%;width:0;border-radius:2px;background:var(--accent);box-shadow:0 0 8px var(--accent)}
.times{display:flex;justify-content:space-between;font-size:11px;color:var(--mute);margin-top:3px;font-variant-numeric:tabular-nums}
.ctl{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none}
.pp{width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;display:grid;place-items:center;
  background:#fff;color:#0b0d18;transition:transform .15s}
.pp:hover{transform:scale(1.07)}
.pp svg{width:18px;height:18px;fill:currentColor}
.i-pause{display:none}
.player.playing .i-play{display:none}
.player.playing .i-pause{display:block}
.vol{width:64px;accent-color:var(--accent);cursor:pointer}

@media (prefers-reduced-motion:reduce){
  .card{transition:none}.enter span,.caret{animation:none}
}
