:root{
  --bg:#000;
  --fg:#fff;
  --dim: rgba(255, 255, 255, 0.757);
  --dimmer: rgb(255, 255, 255);
  --line: rgba(255,255,255,0.16);
}

* { box-sizing: border-box; }

html, body {
  margin:0;
  padding:0;
  background:var(--bg);
  color:var(--fg);
  height:100%;
  font-family: 'JetBrains Mono', 'Courier New', monospace;
  overflow-x:hidden;
}

#snow-canvas{
  position:fixed;
  top:0; left:0;
  width:100%; height:100%;
  pointer-events:none;
  z-index:2;
}

.page{
  position:relative;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:64px 20px;
  text-align:center;
}

/* avatar*/
.avatar {
  display: inline-block;
  padding: 2px; /* border thickness */
  border-radius: 50%;
  z-index: 3;
  background: linear-gradient(
    270deg,
    #5a5a5a,
    #cdcdcd,
    #ff9d00,
    #000000,
    #ff9d00,
    #5a5a5a
  ); /* Repeat start and end colors for seamlessness */
  background-size: 600% 600%;
  animation: gradientBorder 8s linear infinite;
}

@keyframes gradientBorder {
  0% {
    background-position: 0% 50%;
  }
  100% {
    background-position: -600% 50%; /* shift by the background size to loop seamlessly */
  }
}

.avatar img {
  width: 112px;
  height: 112px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}
/* avatar*/

.handle{
  font-size:15px;
  letter-spacing:0.08em;
  margin: 10px 0 5px 0;
  color:var(--fg);
}

.bio{
  max-width:380px;
  font-size:13px;
  line-height:1.7;
  color:var(--dim);
  margin:0 0 10px 0;
}

/* ---------- socials ---------- */
.socials{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  flex-wrap:wrap;
  margin-bottom:5px;
}

.social-btn{
  position:relative;
  width:42px;
  height:42px;
  border-radius:50%;
  border:1px solid var(--line);
  background:rgba(255,255,255,0.02);
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--fg);
  text-decoration:none;
  cursor:pointer;
  transition:border-color .15s ease, background .15s ease, transform .15s ease;
}
.social-btn svg{ width:18px; height:18px; fill:var(--fg); }
.social-btn:hover{
  border-color:rgba(255,255,255,0.55);
  background:rgba(255,255,255,0.07);
  transform:translateY(-2px);
}

.social-btn .tip{
  position:absolute;
  bottom:calc(100% + 8px);
  left:50%;
  transform:translateX(-50%) translateY(4px);
  background:#fff;
  color:#000;
  font-size:10px;
  letter-spacing:0.03em;
  padding:4px 8px;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
  transition:opacity .15s ease, transform .15s ease;
  font-family: 'JetBrains Mono', monospace;
}
.social-btn:hover .tip{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
.social-btn.copied .tip{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}

.addr-label{
  font-size:9px;
  font-weight:700;
  letter-spacing:0.02em;
}

/* ---------- music player ---------- */
.player{
  margin-top:5px;
  width:280px;
  max-width:100%;
  border:1px solid var(--line);
  background:rgba(255,255,255,0.02);
  padding:14px 16px;
}

/* ---------- entry overlay ---------- */
#entry-overlay{
  position:fixed;
  inset:0;
  z-index:999;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  background:rgba(0,0,0,0.35);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  opacity:1;
  transition:opacity 1.4s ease;
}
#entry-overlay .enter-text{
  position:relative;
  z-index:1;
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  letter-spacing:0.15em;
  text-transform:uppercase;
  color:#fff;
  opacity:0.85;
  animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{
  0%,100%{ opacity:0.5; }
  50%{ opacity:1; }
}
#entry-overlay.fade-out{
  opacity:0;
  pointer-events:none;
}

/* track info  */
.track-info{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  margin-bottom:10px;
  text-align:left;
}
.track-title{
  font-size:12px;
  font-weight:700;
  letter-spacing:0.02em;
}
.track-artist{
  font-size:10px;
  color:var(--dim);
  margin-top:2px;
}

.progress-row{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:12px;
}
.time{
  font-size:9px;
  color:var(--dim);
  min-width:28px;
}
.progress-track{
  flex:1;
  margin-top: 2px;
  height:6px;
  background:var(--line);
  position:relative;
  cursor:pointer;
}
.progress-fill{
  position:absolute;
  top:0; left:0;
  height:100%;
  width:0%;
  background:var(--fg);
}

.controls-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.transport{
  display:flex;
  gap:6px;
}
.ctrl-btn{
  width:30px;
  height:30px;
  border-radius:0;
  border:1px solid var(--line);
  background:transparent;
  color:var(--fg);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition:background .15s ease, border-color .15s ease;
}
.ctrl-btn:hover{
  background:rgba(255,255,255,0.08);
  border-color:rgba(255,255,255,0.5);
}
.ctrl-btn svg{ width:12px; height:12px; fill:var(--fg); }
.ctrl-btn.play svg{ width:13px; height:13px; }

.volume-row{
  display:flex;
  align-items:center;
  gap:6px;
}
.vol-icon{
  width:22px;
  height:22px;
  border:1px solid var(--line);
  border-radius:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:transparent;
}
.vol-icon svg{ width:11px; height:11px; fill:var(--fg); }

input[type="range"]{
  -webkit-appearance:none;
  appearance:none;
  width:64px;
  height:6px;
  background:var(--line);
  border-radius:0;
  outline:none;
}
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;
  appearance:none;
  width:8px;
  height:8px;
  border-radius:0;
  background:var(--fg);
  cursor:pointer;
}
input[type="range"]::-moz-range-thumb{
  width:8px;
  height:8px;
  border-radius:0;
  background:var(--fg);
  border:none;
  cursor:pointer;
}

.copy-icon {
  width: 23px;
  height: 23px;
  vertical-align: middle; /* aligns icon with text */
}
