:root{
  --void:#08070d;
  --card-bg: rgba(18, 16, 28, 0.55);
  --card-border: rgba(255,255,255,0.08);
  --violet:#8b5cf6;
  --cyan:#22d3ee;
  --pink:#f472b6;
  --text:#f3f1f8;
  --text-dim:#a49fc2;
  --text-dimmer:#6f6a8c;
  --mono: 'JetBrains Mono', monospace;
  --display: 'Space Grotesk', sans-serif;
  --body-font: 'Inter', sans-serif;
  --radius: 20px;
}

*{box-sizing:border-box;}

/* hidden must always win, no matter what other CSS rules say elsewhere —
   this is what broke the login screens earlier, so it's pinned here globally */
[hidden]{ display:none !important; }

html,body{
  margin:0;
  padding:0;
  min-height:100vh;
  background:var(--void);
  color:var(--text);
  font-family:var(--body-font);
  overflow-x:hidden;
}

::selection{ background: var(--violet); color:#fff; }

/* custom cursor support: JS toggles a class + CSS var --cursor-url on <html> */
html.custom-cursor, html.custom-cursor *{
  cursor: var(--cursor-url) 4 4, auto !important;
}

/* ---------- aurora animated background (default) ---------- */
#aurora{
  position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none;
}
#aurora::before, #aurora::after{
  content:"";
  position:absolute;
  width:60vmax; height:60vmax;
  border-radius:50%;
  filter: blur(90px);
  opacity:0.35;
  animation: drift 22s ease-in-out infinite alternate;
}
#aurora::before{
  background: radial-gradient(circle at 30% 30%, var(--violet), transparent 60%);
  top:-20%; left:-15%;
}
#aurora::after{
  background: radial-gradient(circle at 70% 70%, var(--cyan), transparent 60%);
  bottom:-25%; right:-15%;
  animation-delay: -11s;
}
@keyframes drift{
  0%{ transform: translate(0,0) scale(1); }
  100%{ transform: translate(6%, 8%) scale(1.15); }
}
body::after{
  /* subtle grain to keep the glow from looking flat/plastic */
  content:"";
  position:fixed; inset:0; z-index:1; pointer-events:none;
  opacity:0.035;
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

#bg-media{ position:fixed; inset:0; z-index:0; background-size:cover; background-position:center; overflow:hidden; }
#bg-media video, #bg-media img{ width:100%; height:100%; object-fit:cover; }
.yt-bg-iframe{
  position:absolute; top:50%; left:50%;
  width:100vw; height:56.25vw;      /* 16:9 */
  min-height:100vh; min-width:177.78vh; /* 16:9 flipped, guarantees full cover */
  transform:translate(-50%,-50%);
  pointer-events:none;
  border:0;
}

#particles{ position:fixed; inset:0; z-index:1; pointer-events:none; }

/* ---------- enter screen ---------- */
#enter-screen{
  position:fixed; inset:0; z-index:50;
  display:flex; align-items:center; justify-content:center;
  background: var(--void);
  transition: opacity .5s ease, visibility .5s ease;
}
#enter-screen.hidden{ opacity:0; visibility:hidden; }
.enter-inner{ text-align:center; }
.enter-avatar{
  width:72px; height:72px; border-radius:50%; margin:0 auto 18px;
  background: linear-gradient(135deg, var(--violet), var(--cyan));
  background-size: cover; background-position:center;
  box-shadow: 0 0 40px rgba(139,92,246,0.5);
}
.enter-name{
  font-family:var(--display); font-size:1.4rem; letter-spacing:.02em; margin-bottom:22px; color:var(--text-dim);
}
.enter-btn{
  font-family:var(--mono); font-size:.85rem; letter-spacing:.08em; text-transform:uppercase;
  background:transparent; color:var(--text); border:1px solid var(--card-border);
  padding:14px 30px; border-radius:999px; cursor:pointer;
  transition: all .25s ease;
}
.enter-btn:hover{ border-color:var(--violet); box-shadow:0 0 24px rgba(139,92,246,.35); transform:translateY(-1px); }

/* ---------- main layout ---------- */
main{
  position:relative; z-index:2;
  min-height:100vh;
  display:flex; align-items:center; justify-content:center;
  padding: 40px 16px;
}

.card{
  width:100%; max-width:420px;
  background: var(--card-bg);
  border:1px solid var(--card-border);
  border-radius: var(--radius);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  padding: 34px 28px 24px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.45);
  animation: cardIn .6s cubic-bezier(.16,1,.3,1) both;
}
@keyframes cardIn{
  from{ opacity:0; transform: translateY(18px) scale(.98); }
  to{ opacity:1; transform:none; }
}

.avatar-wrap{ display:flex; justify-content:center; margin-bottom:16px; }
.avatar{
  width:88px; height:88px; border-radius:50%;
  object-fit:cover;
  border:2px solid rgba(255,255,255,0.12);
  box-shadow: 0 0 0 6px rgba(139,92,246,0.08), 0 0 30px rgba(139,92,246,.25);
}

.username{
  font-family: var(--display);
  font-weight:600;
  font-size:1.5rem;
  text-align:center;
  margin: 0 0 14px;
  background: linear-gradient(90deg, var(--text) 0%, var(--violet) 45%, var(--cyan) 100%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
  letter-spacing:.01em;
}
.username .cursor-blink{
  display:inline-block; width:2px; margin-left:2px;
  background: var(--cyan);
  animation: blink 1s step-end infinite;
}
@keyframes blink{ 50%{ opacity:0; } }

/* discord presence */
.discord-strip{
  display:flex; align-items:center; gap:10px;
  background: rgba(0,0,0,0.25);
  border:1px solid var(--card-border);
  border-radius:14px;
  padding:9px 12px;
  margin-bottom:16px;
}
.discord-left{ position:relative; flex-shrink:0; }
.discord-avatar{ width:34px; height:34px; border-radius:50%; display:block; background:#1e1c2b; }
.status-dot{
  position:absolute; bottom:-2px; right:-2px;
  width:16px; height:16px;
  filter: drop-shadow(0 0 3px rgba(0,0,0,.5));
}
.status-dot svg{ width:100%; height:100%; display:block; }
.status-dot.online svg{ animation:pulse-badge 2s ease-in-out infinite; }
@keyframes pulse-badge{
  0%,100%{ filter: drop-shadow(0 0 2px rgba(59,165,92,.5)); }
  50%{ filter: drop-shadow(0 0 6px rgba(59,165,92,.9)); }
}

.discord-mid{ min-width:0; flex:1; }
.discord-tag{
  font-family:var(--mono); font-size:.72rem; color:var(--text-dimmer);
  text-transform:uppercase; letter-spacing:.06em;
}
.discord-activity{
  font-size:.82rem; color:var(--text-dim);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.activity-art{ width:34px; height:34px; border-radius:6px; object-fit:cover; flex-shrink:0; }

.bio{
  text-align:center;
  color: var(--text-dim);
  font-size:.92rem;
  line-height:1.55;
  margin: 0 0 20px;
  white-space:pre-wrap;
  word-break:break-word;
}

/* music player */
.player{
  display:flex; align-items:center; gap:10px;
  background: rgba(0,0,0,0.28);
  border:1px solid var(--card-border);
  border-radius:14px;
  padding:10px;
  margin-bottom:18px;
}
.player-cover{ width:44px; height:44px; border-radius:8px; object-fit:cover; background:#1e1c2b; flex-shrink:0; }
.player-info{ min-width:0; flex:1; }
.player-title{ font-size:.82rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.player-artist{ font-size:.72rem; color:var(--text-dimmer); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-bottom:5px;}
.player-bar{ height:3px; background:rgba(255,255,255,.1); border-radius:2px; overflow:hidden; }
.player-bar-fill{ height:100%; width:0%; background:linear-gradient(90deg,var(--violet),var(--cyan)); }
.player-controls{ display:flex; align-items:center; gap:3px; flex-shrink:0; }
.player-btn{
  background:transparent; border:none; color:var(--text-dim); font-size:.85rem;
  cursor:pointer; padding:4px 5px; border-radius:6px; transition: color .2s, background .2s;
}
.player-btn:hover{ color:var(--text); background:rgba(255,255,255,.06); }
.player-btn-main{ font-size:1rem; }
.player-volume{
  width:52px; accent-color: var(--violet);
}

/* socials */
.socials{
  display:flex; flex-wrap:wrap; justify-content:center; gap:12px;
  margin-bottom: 6px;
}
.social-link{
  width:46px; height:46px; border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  background: color-mix(in srgb, var(--brand-color, var(--violet)) 12%, rgba(255,255,255,0.04));
  border:1px solid color-mix(in srgb, var(--brand-color, var(--violet)) 30%, var(--card-border));
  color: var(--brand-color, var(--text));
  transition: all .22s cubic-bezier(.2,.8,.3,1.3);
  text-decoration:none;
  box-shadow: 0 2px 10px -4px rgba(0,0,0,.4);
}
.social-link svg{ width:20px; height:20px; fill: currentColor; }
.social-link:hover{
  transform: translateY(-4px) scale(1.06);
  background: var(--brand-color, var(--violet));
  border-color: transparent;
  color: #fff;
  box-shadow: 0 10px 24px -6px var(--brand-color, var(--violet));
}

/* when there's exactly one social link, present it as a wide, confident pill instead of a small icon tile */
.socials.single .social-link{
  width:auto; height:48px;
  padding: 0 22px 0 16px;
  border-radius: 999px;
  gap:10px;
}
.socials.single .social-link span{
  font-size:.86rem; font-weight:600; font-family: var(--body-font);
}

.footer{ text-align:center; margin-top:14px; }
.views{
  font-family: var(--mono);
  font-size:.68rem;
  color: var(--text-dimmer);
  letter-spacing:.04em;
}

@media (max-width: 480px){
  .card{ padding:28px 20px 20px; }
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

