*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  --white: #ffffff;
  --off-white: #E6B2A6;
  --mid: rgba(230,178,166,0.45);
  --online: #23a55a;
  --idle: #f0b232;
  --dnd: #f23f43;
  --offline: #80848e;
}

html, body {
  width: 100%; height: 100%;
  background: #080203;
  color: var(--white);
  font-family: 'IBM Plex Mono', monospace;
  overflow-x: hidden;
  cursor: none;
}

#bg-video {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: 0;
  opacity: 0.38;
  filter: grayscale(100%) contrast(1.15) sepia(0.15) hue-rotate(310deg);
}

.overlay-dark {
  position: fixed; inset: 0; z-index: 1;
  background: linear-gradient(180deg,
    rgba(20,5,7,0.65) 0%, rgba(10,2,4,0.45) 50%, rgba(20,5,7,0.72) 100%);
}
.overlay-grain {
  position: fixed; inset: 0; z-index: 2;
  pointer-events: none; opacity: 0.06;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 160px 160px;
  animation: grain-shift 0.4s steps(1) infinite;
}
@keyframes grain-shift {
  0%   { background-position: 0 0; }
  25%  { background-position: -48px 32px; }
  50%  { background-position: 22px -56px; }
  75%  { background-position: -70px 14px; }
}
.overlay-scanlines {
  position: fixed; inset: 0; z-index: 3;
  pointer-events: none;
  background: repeating-linear-gradient(0deg,
    transparent, transparent 2px,
    rgba(122,60,65,0.07) 2px, rgba(122,60,65,0.07) 4px);
}

#cursor {
  position: fixed; width: 8px; height: 8px;
  background: rgba(230,178,166,0.9); border-radius: 50%;
  pointer-events: none; z-index: 9999;
  transform: translate(-50%,-50%);
  mix-blend-mode: difference;
}
#cursor-ring {
  position: fixed; width: 32px; height: 32px;
  border: 1px solid rgba(230,178,166,0.45); border-radius: 50%;
  pointer-events: none; z-index: 9998;
  transform: translate(-50%,-50%);
  transition: width 0.18s, height 0.18s, border-color 0.18s;
}
.trail {
  position: fixed; border-radius: 50%;
  pointer-events: none; z-index: 9997;
  background: rgba(230,178,166,0.12);
  transform: translate(-50%,-50%);
  transition: opacity 0.6s;
}

#app {
  position: relative; z-index: 10;
  min-height: 100vh;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  padding: 48px 20px; gap: 12px;
}

.shell {
  position: relative;
  width: 100%; max-width: 520px;
  background: rgba(20,8,9,0.38);
  border: 1px solid rgba(230,178,166,0.12);
  border-radius: 3px;
  backdrop-filter: blur(28px) saturate(0.8);
  overflow: hidden;
  opacity: 0;
  transform: translateY(14px);
}
.shell-main {
  overflow: visible;
}
.shell::before {
  content: '';
  position: absolute; inset: 0; border-radius: 3px; padding: 1px;
  background: linear-gradient(135deg,
    rgba(230,178,166,0.22) 0%,
    rgba(122,60,65,0.05) 45%,
    rgba(230,178,166,0.14) 100%);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
  pointer-events: none; z-index: 1;
}
.shell-main  { animation: none; }
.shell-disco { animation: none; }
.shell.do-reveal-main  { animation: reveal 0.65s 0.0s ease forwards; }
.shell.do-reveal-disco { animation: reveal 0.65s 0.15s ease forwards; }
@keyframes reveal { to { opacity:1; transform:translateY(0); } }

#skeleton {
  position: fixed; inset: 0; z-index: 100;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 12px; padding: 48px 20px;
  pointer-events: all;
  transition: opacity 0.45s ease;
}
#skeleton.sk-hide {
  opacity: 0;
  pointer-events: none;
}
.sk-card {
  width: 100%; max-width: 520px;
  background: rgba(122,60,65,0.06);
  border: 1px solid rgba(230,178,166,0.1);
  border-radius: 3px;
  overflow: hidden;
  position: relative;
}
@keyframes sk-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.sk-inner { padding: 36px 32px 26px; }
.sk-block {
  background: rgba(230,178,166,0.08);
  border-radius: 3px;
}
.sk-title  { height: 38px; width: 60%; margin: 0 auto 11px; border-radius: 3px; }
.sk-sub    { height: 13px; width: 75%; margin: 0 auto 11px; border-radius: 3px; }
.sk-pill   { height: 26px; width: 90px; border-radius: 20px; margin: 0 auto 20px; }
.sk-divider { height: 1px; background: rgba(230,178,166,0.08); margin-bottom: 20px; }
.sk-btns   { display: flex; gap: 8px; justify-content: center; margin-bottom: 18px; }
.sk-btn    { height: 34px; flex: 1; max-width: 110px; border-radius: 2px; }
.sk-label  { height: 10px; width: 100px; margin: 0 auto 10px; border-radius: 2px; }
.sk-row    { height: 38px; width: 100%; border-radius: 2px; margin-bottom: 7px; }
/* ── Banner with shimmer sweep ── */
.sk-banner {
  height: 100px; position: relative; overflow: hidden;
  background: linear-gradient(105deg,
    rgba(122,60,65,0.06) 35%,
    rgba(230,178,166,0.11)  50%,
    rgba(122,60,65,0.06) 65%);
  background-size: 200% 100%;
  animation: sk-shimmer 1.8s ease-in-out infinite;
}
/* Status dot placeholder — small circle at bottom-right of avatar */
.sk-dc-av-wrap { position: relative; width: 74px; height: 74px; flex-shrink: 0; }
.sk-dc-av {
  width: 74px; height: 74px; border-radius: 50%;
  border: 4px solid rgba(12,3,5,0.7);
  background: linear-gradient(105deg,
    rgba(122,60,65,0.07) 35%,
    rgba(230,178,166,0.13) 50%,
    rgba(122,60,65,0.07) 65%);
  background-size: 200% 100%;
  animation: sk-shimmer 1.8s ease-in-out infinite;
}
.sk-dc-status-dot {
  position: absolute; bottom: 1px; right: 1px;
  width: 18px; height: 18px; border-radius: 50%;
  border: 3px solid rgba(0,0,0,0.7);
  background: rgba(230,178,166,0.08);
}
.sk-dc-inner { padding: 0 18px 18px; }
.sk-dc-top  { display: flex; align-items: center; gap: 14px; margin-top: -28px; margin-bottom: 14px; }
.sk-dc-lines { flex: 1; padding-top: 20px; display: flex; flex-direction: column; gap: 7px; }
.sk-dc-l1   { height: 12px; width: 55%; border-radius: 2px; }
.sk-dc-l2   { height: 10px; width: 80%; border-radius: 2px; }
.sk-dc-name { height: 26px; width: 45%; margin-bottom: 6px; border-radius: 2px; }
.sk-dc-handle { height: 13px; width: 60%; margin-bottom: 10px; border-radius: 2px; }
.sk-dc-div  { height: 1px; background: rgba(230,178,166,0.08); margin-bottom: 0; }
/* Status text line below divider */
.sk-dc-status { height: 9px; border-radius: 2px; }
/* Avatar decoration ring on main card */
.sk-avatar-wrap { position: relative; width: 88px; height: 88px; margin: 0 auto 11px; }
.sk-avatar {
  width: 88px; height: 88px; border-radius: 50%;
  background: linear-gradient(105deg,
    rgba(122,60,65,0.06) 35%,
    rgba(230,178,166,0.11) 50%,
    rgba(122,60,65,0.06) 65%);
  background-size: 200% 100%;
  animation: sk-shimmer 1.8s ease-in-out infinite;
  border: 3px solid rgba(230,178,166,0.07);
}

.card-inner { padding: 36px 32px 26px; position: relative; z-index: 2; }

.card-tag {
  position: absolute; top: -20px;
  left: 50%; transform: translateX(-50%);
  z-index: 3;
  font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(230,178,166,0.45);
  background: rgba(122,60,65,0.06);
  border: 1px solid rgba(230,178,166,0.1);
  padding: 3px 10px 4px;
  white-space: nowrap;
}

.shell-main-badge {
  position: absolute; top: 10px; left: 12px; z-index: 4;
  display: flex; align-items: center;
}
.shell-main-badge img {
  width: 26px; height: 26px; object-fit: contain;
  filter: grayscale(100%) brightness(1.0) sepia(0.3) hue-rotate(310deg);
  transition: transform 0.15s;
}
.shell-main-badge img:hover { transform: scale(1.2); }

.profile-top {
  display: flex; flex-direction: column;
  align-items: center; gap: 11px;
  margin-bottom: 8px;
}
.avatar-wrap { position: relative; width: 88px; height: 88px; }
.avatar-ring {
  position: absolute; inset: -5px; border-radius: 50%;
  background: conic-gradient(
    rgba(230,178,166,0.9) 0deg, rgba(122,60,65,0.15) 90deg,
    rgba(230,178,166,0.9) 180deg, rgba(122,60,65,0.15) 270deg,
    rgba(230,178,166,0.9) 360deg);
  animation: spin 4s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
.avatar-inner {
  position: relative; z-index: 1;
  width: 88px; height: 88px; border-radius: 50%;
  background: rgba(15,4,6,0.95); border: 3px solid rgba(122,60,65,0.3);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.avatar-inner svg { width: 44px; height: 44px; opacity: 0.28; }

.username {
  font-family: 'Figtree', sans-serif;
  font-weight: 900;
  font-size: 38px; letter-spacing: 0.18em;
  color: #E6B2A6;
  text-shadow: 0 0 45px rgba(230,178,166,0.25);
  line-height: 1; position: relative;
}
.username::after {
  content: attr(data-text);
  position: absolute; left: 0; top: 0;
  color: transparent; text-shadow: none;
  -webkit-text-stroke: 1px rgba(230,178,166,0.1);
  letter-spacing: 0.18em;
  animation: gname 9s infinite;
}
@keyframes gname {
  0%,92%,100% { clip-path:none; transform:none; }
  93% { clip-path:inset(30% 0 40% 0); transform:translateX(-4px); }
  94% { clip-path:inset(60% 0 20% 0); transform:translateX(4px); }
  95% { clip-path:inset(10% 0 70% 0); transform:translateX(-2px); }
}

.bio {
  font-size: 11px; color: rgba(230,178,166,0.45);
  letter-spacing: 0.07em; text-align: center;
  font-weight: 300; max-width: 320px;
}

.location-wrap {
  position: relative;
  margin-top: -4px;
}
.location-wrap::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 24px;
  background: linear-gradient(90deg,
    rgba(0,56,184,0.9)   0%,  rgba(0,56,184,0.9)   33%,
    rgba(255,210,0,1)    33%, rgba(255,210,0,1)    66%,
    rgba(206,17,38,0.9)  66%, rgba(206,17,38,0.9)  100%
  );
  filter: blur(7px);
  opacity: 0;
  z-index: 0;
  transition: opacity 0.35s ease;
  pointer-events: none;
}
.location-wrap:hover::after {
  opacity: 1;
}
.location-row {
  position: relative;
  z-index: 1;
  display: flex; align-items: center; gap: 5px;
  font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  color: rgba(230,178,166,0.6);
  padding: 4px 12px 5px;
  border-radius: 20px;
  background: rgba(122,60,65,0.06);
  border: 1px solid rgba(230,178,166,0.12);
  box-shadow:
    0 0 10px rgba(230,178,166,0.08),
    0 0 22px rgba(230,178,166,0.04);
  text-shadow: 0 0 8px rgba(230,178,166,0.35);
  transition: color 0.2s, border-color 0.3s, text-shadow 0.3s;
}
.location-wrap:hover .location-row {
  color: rgba(230,178,166,0.95);
  border-color: rgba(230,178,166,0.28);
  text-shadow: 0 0 10px rgba(230,178,166,0.5);
}
.location-row svg { width: 11px; height: 11px; opacity: 0.65; flex-shrink: 0; filter: drop-shadow(0 0 4px rgba(230,178,166,0.5)); }

.divider {
  width: 100%; height: 1px;
  background: linear-gradient(90deg,
    transparent, rgba(230,178,166,0.18) 30%,
    rgba(230,178,166,0.18) 70%, transparent);
  margin: 6px 0 20px;
}

.socials {
  display: flex; gap: 8px;
  justify-content: center; flex-wrap: wrap;
  margin-bottom: 18px;
}
.social-btn {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 13px;
  background: rgba(122,60,65,0.05);
  border: 1px solid rgba(230,178,166,0.1);
  border-radius: 2px;
  color: rgba(230,178,166,0.85);
  text-decoration: none;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  transition: background 0.18s, border-color 0.18s, transform 0.14s, color 0.18s, box-shadow 0.18s;
  cursor: none;
}
.social-btn svg { width: 13px; height: 13px; flex-shrink: 0; transition: color 0.18s; }
.social-btn:hover {
  transform: translateY(-2px);
}
.social-btn.discord:hover {
  color: #5865f2; border-color: rgba(88,101,242,0.55);
  background: rgba(88,101,242,0.08);
  box-shadow: 0 0 14px rgba(88,101,242,0.2);
}
.social-btn.snapchat:hover {
  color: #fffc00; border-color: rgba(255,252,0,0.55);
  background: rgba(255,252,0,0.08);
  box-shadow: 0 0 14px rgba(255,252,0,0.2);
}
.social-btn.tiktok:hover {
  color: #ff0050; border-color: rgba(255,0,80,0.5);
  background: rgba(255,0,80,0.07);
  box-shadow: 0 0 14px rgba(255,0,80,0.18);
}
.social-btn.instagram:hover {
  color: #e1306c; border-color: rgba(225,48,108,0.5);
  background: rgba(225,48,108,0.07);
  box-shadow: 0 0 14px rgba(225,48,108,0.18);
}
.social-btn.roblox:hover {
  color: #e31b23; border-color: rgba(227,27,35,0.5);
  background: rgba(227,27,35,0.07);
  box-shadow: 0 0 14px rgba(227,27,35,0.18);
}
.invites-row {
  display: flex; gap: 7px; margin-bottom: 0;
}
.invites-row .social-btn.invite {
  width: auto; flex: 1;
}
.site-card {
  flex: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 3px;
  padding: 9px 14px;
  background: rgba(122,60,65,0.04);
  border: 1px dashed rgba(230,178,166,0.1);
  border-radius: 2px;
  color: rgba(230,178,166,0.85);
  text-decoration: none;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;
  transition: background 0.18s, border-color 0.18s, transform 0.14s, color 0.18s, box-shadow 0.18s;
  cursor: none;
  text-align: center;
}
.site-card:hover {
  transform: translateY(-2px);
  border-style: solid;
  color: #e8e8e8; border-color: rgba(230,178,166,0.3);
  background: rgba(122,60,65,0.1);
  box-shadow: 0 0 14px rgba(230,178,166,0.12);
}
.site-card-name {
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  color: rgba(230,178,166,0.9);
}
.site-card-sub {
  font-size: 8px; color: rgba(230,178,166,0.5); letter-spacing: 0.12em;
}
.invites { display: flex; flex-direction: column; gap: 7px; margin-bottom: 6px; }
.invites-label {
  font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(230,178,166,0.25); margin-bottom: 2px;
  text-align: center;
}
.social-btn.invite {
  width: 100%; justify-content: center; padding: 9px 14px;
  font-size: 10px; background: rgba(122,60,65,0.04);
  border-style: dashed;
}
.social-btn.invite:hover { border-style: solid; }
.invite-badge {
  width: 16px; height: 16px; object-fit: contain;
  flex-shrink: 0; opacity: 0.75;
}

.visitor-row {
  position: fixed; bottom: 18px; left: 20px; z-index: 20;
  display: flex; align-items: center;
  gap: 6px; font-size: 9px;
  color: rgba(230,178,166,0.2);
  letter-spacing: 0.12em; text-transform: uppercase;
  opacity: 0; animation: reveal 0.5s 0.9s ease forwards;
}
.visitor-row svg { width: 11px; height: 11px; opacity: 0.35; }
#visitor-count { color: rgba(230,178,166,0.38); font-weight: 500; }

.dc-banner {
  height: 100px;
  position: relative; overflow: hidden;
}
.dc-banner-gif {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: grayscale(100%) contrast(1.15) sepia(0.15) hue-rotate(310deg);
  opacity: 0.38;
}
.dc-banner-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg,
    rgba(20,5,7,0.55) 0%, rgba(10,2,4,0.35) 50%, rgba(20,5,7,0.68) 100%);
  z-index: 1;
}
.dc-banner-member {
  position: absolute; bottom: 8px; right: 12px; z-index: 2;
  font-size: 8px; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(230,178,166,0.5);
  font-family: 'IBM Plex Mono', monospace;
  background: rgba(122,60,65,0.05);
  border: 1px solid rgba(230,178,166,0.08);
  padding: 2px 7px 3px;
  border-radius: 2px;
}

.dc-body { padding: 0 18px 18px; position: relative; z-index: 2; }

.dc-avatar-row {
  display: flex; align-items: center;
  gap: 14px; margin-top: -28px; margin-bottom: 10px;
  position: relative;
}
.dc-avatar-wrap {
  position: relative; width: 74px; height: 74px; flex-shrink: 0;
}
.dc-avatar {
  width: 74px; height: 74px; border-radius: 50%;
  object-fit: cover; border: 4px solid rgba(10,2,4,0.9);
  background: #111; display: block;
}
.dc-avatar-deco {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 115%; height: 115%;
  object-fit: contain;
  pointer-events: none; z-index: 2;
}
.dc-status-dot {
  position: absolute; bottom: 1px; right: 1px;
  width: 24px; height: 24px;
  z-index: 3;
  display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 0 5px rgba(0,0,0,0.9));
}
.dc-status-text-icon {
  width: 15px; height: 15px; flex-shrink: 0;
  opacity: 0.5; margin-top: 1px;
}
.dc-badges {
  position: absolute; top: 10px; right: 12px; z-index: 3;
  display: flex; gap: 4px; align-items: center; line-height: 0;
}
.dc-badges-tl {
  position: absolute; top: 10px; left: 12px; z-index: 3;
  display: flex; gap: 4px; align-items: center; line-height: 0;
}
.dc-badge-wrap {
  width: 22px; height: 22px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.dc-badge, .dc-badge-svg {
  max-width: 22px; max-height: 22px;
  width: auto; height: auto;
  object-fit: contain; display: block;
  flex-shrink: 0;
  transition: transform 0.15s;
}
.dc-badge-wrap:hover .dc-badge,
.dc-badge-wrap:hover .dc-badge-svg,
.dc-badge:hover, .dc-badge-svg:hover { transform: scale(1.2); }
.dc-badge-verified { width: 26px; height: 26px; object-fit: contain; transition: transform 0.15s; }
.dc-badge-verified:hover { transform: scale(1.2); }
.dc-badge-official { width: 46px; height: 46px; object-fit: contain; transition: transform 0.15s; }
.dc-badge-official:hover { transform: scale(1.2); }

.dc-status-row {
  display: flex; align-items: center; gap: 8px;
  padding-top: 20px;
  flex: 1;
}
.dc-status-icon {
  width: 22px; height: 22px; flex-shrink: 0;
  opacity: 0.7; margin-left: 4px;
  display: inline-flex; align-items: center;
}
.dc-status-text {
  font-size: 10px; color: rgba(230,178,166,0.55);
  letter-spacing: 0.03em; font-style: italic; line-height: 1.45;
}

.dc-name-link, .dc-handle-link { text-decoration: none; cursor: none; display: block; }
.dc-name-link:hover .dc-name {
  color: #5865f2;
  text-shadow: 0 0 12px rgba(88,101,242,0.4);
}
.dc-handle-link:hover .dc-handle {
  color: #7A3C41;
  text-shadow: 0 0 12px rgba(122,60,65,0.5);
}
.dc-name {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 700;
  font-size: 13px; letter-spacing: 0.05em; color: rgba(230,178,166,0.5); line-height: 1;
  transition: color 0.18s, text-shadow 0.18s;
  display: inline;
}
.dc-handle {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 26px; letter-spacing: 0.1em;
  color: #E6B2A6; line-height: 1;
  margin-bottom: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.18s, text-shadow 0.18s;
}

.dc-info-row {
  display: flex; align-items: flex-start; gap: 10px;
  margin-bottom: 6px;
  position: relative; /* needed for absolutely-positioned sp-widget-desk */
}
/* no-hw-accel: stop avatar ring spin */
.no-hw-accel .avatar-ring {
  animation: none;
}
.dc-info-left {
  display: flex; flex-direction: column; gap: 0;
  min-width: 0; flex: 1;
}
.dc-handle-row {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 0; line-height: 1;
}
.dc-crown-badge {
  width: 22px; height: 22px; object-fit: contain; flex-shrink: 0;
  transition: transform 0.15s;
}
.dc-crown-badge:hover { transform: scale(1.2); }

.dc-name-row {
  display: flex; align-items: baseline; gap: 6px;
  margin-bottom: 0; margin-top: 1px;
}
.dc-name-suffix {
  font-family: 'IBM Plex Mono', monospace;
  font-weight: 700;
  font-size: 13px; letter-spacing: 0.05em;
  color: rgba(230,178,166,0.5);
  line-height: 1;
  white-space: nowrap;
}
.heart-glyph {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
}
.heart-glyph svg {
  transition: fill 0.4s ease, stroke 0.4s ease, filter 0.4s ease;
}
@keyframes heart-fill-pulse {
  0%   { fill: none;    stroke: rgba(230,178,166,0.5); filter: none; }
  40%  { fill: #E6B2A6; stroke: #E6B2A6;                filter: drop-shadow(0 0 5px rgba(230,178,166,0.85)); }
  60%  { fill: #E6B2A6; stroke: #E6B2A6;                filter: drop-shadow(0 0 5px rgba(230,178,166,0.85)); }
  100% { fill: none;    stroke: rgba(230,178,166,0.5); filter: none; }
}
.dc-name-suffix:hover .heart-glyph svg,
.dc-name-row:has(.dc-name-link:hover) .heart-glyph svg,
.dc-handle-row:has(.dc-handle-link:hover) .heart-glyph svg,
.dc-avatar-row:has(.dc-avatar-wrap:hover) .heart-glyph svg {
  animation: heart-fill-pulse 2.2s cubic-bezier(0.4,0,0.6,1) infinite;
}

.dc-divider {
  width: 100%; height: 1px;
  background: rgba(230,178,166,0.12);
  margin: 4px 0 10px;
}

.powered {
  font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(230,178,166,0.15); text-align: center;
  opacity: 0; animation: reveal 0.5s 0.75s ease forwards;
}
.powered a { color: inherit; text-decoration: none; }
.powered a:hover { color: rgba(230,178,166,0.5); }

/* Task 3: block all interactions until enter overlay is dismissed */
#app.site-locked { pointer-events: none !important; }
#app.site-locked * { pointer-events: none !important; }
#skeleton.site-locked { pointer-events: none !important; }

/* ─── Enter overlay ─── */
#enter-overlay {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 18px;
  background: #080203;
  cursor: pointer;
  transition: opacity 0.55s ease;
}
#enter-overlay.fade-out {
  opacity: 0;
  pointer-events: none;
}
.enter-ring {
  width: 88px; height: 88px; border-radius: 50%;
  border: 1px solid rgba(230,178,166,0.22);
  display: flex; align-items: center; justify-content: center;
  position: relative;
  animation: enter-pulse 2.6s ease-in-out infinite;
}
@keyframes enter-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(230,178,166,0.18); }
  50%      { box-shadow: 0 0 0 14px rgba(230,178,166,0); }
}
.enter-ring::before {
  content: '';
  position: absolute; inset: -10px; border-radius: 50%;
  border: 1px solid rgba(230,178,166,0.15);
}
.enter-ring svg {
  width: 64px; height: 64px;
  stroke: rgba(230,178,166,0.75);
}
.enter-label {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase;
  color: rgba(230,178,166,0.9);
  animation: enter-blink 2.4s ease-in-out infinite;
}
@keyframes enter-blink {
  0%,100% { opacity: 0.35; }
  50%      { opacity: 0.65; }
}
.enter-sub {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 8px; letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(230,178,166,0.5);
  margin-top: -10px;
}

/* dc-activity: always styled as a card */
#dc-activity {
  display: none;
  align-items: center;
  background: rgba(122,60,65,0.06);
  border: 1px solid rgba(230,178,166,0.1);
  border-radius: 10px;
  backdrop-filter: blur(12px);
  padding: 4px 7px 5px 6px;
  gap: 7px;
  margin-top: 6px;
}

/* dc-activity moved inside dc-info-row, absolutely positioned like sp-widget-desk was */
.dc-info-row.both-active #dc-activity {
  position: absolute;
  left: var(--sp-desk-left, 0px);
  right: 0;
  top: -19px;
  margin: 0;
}

/* Mobile: dc-activity is in normal flow (not absolute), spans left from right anchor */
@media (max-width: 540px) {
  /* Override the absolute positioning used on desktop */
  #dc-activity.mob-flow {
    position: static !important;
    left: unset !important; right: unset !important; top: unset !important;
    margin-right: var(--dc-mob-right, 26px);
    margin-top: 6px;
    width: auto;
  }
}

/* PC: dc-activity in normal flow — no dynamic indent needed */
/* (padding handled per-state below) */

/* Join button */
#dc-activity-join {
  align-items: center; gap: 5px;
  padding: 5px 9px;
  background: rgba(88,101,242,0.1);
  border: 1px solid rgba(88,101,242,0.35);
  border-radius: 2px;
  color: rgba(88,101,242,0.85);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 8px; letter-spacing: 0.1em; text-transform: uppercase;
  text-decoration: none; white-space: nowrap; flex-shrink: 0;
  cursor: none;
  transition: background 0.18s, border-color 0.18s, color 0.18s;
}
#dc-activity-join:hover {
  background: rgba(88,101,242,0.22);
  border-color: rgba(88,101,242,0.65);
  color: #7289da;
}
/* Status text length-based sizing */
.dc-status-text.status-long {
  font-size: 8.5px;
}
@media (max-width: 540px) {
  .dc-status-text.status-long {
    font-size: 8px;
    padding-right: 4px;
    white-space: normal;
    overflow-wrap: break-word;
    word-break: break-word;
  }
  .dc-status-row {
    align-items: flex-start;
  }
}

/* ─── Custom badge tooltip ─── */
.dc-tip {
  position: fixed;
  padding: 5px 10px 6px;
  background: rgba(15,5,6,0.97);
  color: rgba(230,178,166,0.9);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border: 1px solid rgba(230,178,166,0.15);
  border-radius: 2px;
  white-space: nowrap;
  pointer-events: none;
  z-index: 99990;
  opacity: 0;
  transition: opacity 0.15s ease;
  transform: translateX(-50%) translateY(-100%);
  box-shadow: 0 4px 16px rgba(0,0,0,0.6);
}
.dc-tip::after {
  content: '';
  position: absolute;
  bottom: -4px; left: 50%;
  transform: translateX(-50%);
  width: 6px; height: 4px;
  background: rgba(15,5,6,0.97);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  border-left: 1px solid rgba(230,178,166,0.15);
  border-right: 1px solid rgba(230,178,166,0.15);
}
.dc-tip.dc-tip-visible { opacity: 1; }

/* ─── Copied! flash ─── */
.copied-flash {
  position: fixed;
  padding: 5px 10px 6px;
  background: rgba(15,5,6,0.97);
  color: rgba(230,178,166,0.9);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border: 1px solid rgba(230,178,166,0.2);
  border-radius: 2px;
  white-space: nowrap;
  pointer-events: none;
  z-index: 99991;
  opacity: 0;
  transform: translateX(-50%) translateY(-100%);
  box-shadow: 0 4px 16px rgba(0,0,0,0.6);
  transition: opacity 0.15s ease;
}
.copied-flash.copied-in { opacity: 1; }
.copied-flash.copied-out { opacity: 0; transition: opacity 0.4s ease; }

@media (max-width: 540px) {
  .card-inner { padding: 28px 18px 22px; }
  .username { font-size: 34px; }
  .dc-name { font-size: 19px; }
  .dc-status-text { font-size: 8px; }

  /* Task 2: shrink socials to fit 1 line on any phone */
  .socials { flex-wrap: nowrap; gap: 5px; }
  .social-btn { font-size: 8.5px; padding: 7px 7px; gap: 4px; letter-spacing: 0.03em; white-space: nowrap; }
  .social-btn svg { width: 11px; height: 11px; }
  /* Task 2: invites-row also 1 line */
  .invites-row { gap: 5px; }
  .invites-row .social-btn.invite { font-size: 8.5px; padding: 7px 7px; }
  .site-card-name { font-size: 9px; }
  .site-card-sub { font-size: 7px; }
}

/* ─── Location + Time row ─── */
.location-time-row {
  display: flex; align-items: center; justify-content: center;
  gap: 8px; flex-wrap: wrap;
}
/* Neutralise the standalone margin-top that misaligns items inside the flex row */
.location-time-row .location-wrap,
.location-time-row .time-wrap {
  margin-top: 0;
  display: flex; align-items: center;
}
/* ── Merged country card (pin + name + · + clock in one pill) ── */
.country-card {
  position: relative;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 13px 5px; border-radius: 20px;
  background: rgba(122,60,65,0.06);
  border: 1px solid rgba(230,178,166,0.12);
  box-shadow: 0 0 10px rgba(230,178,166,0.07), 0 0 22px rgba(230,178,166,0.04);
  font-size: 10px; letter-spacing: 0.09em; text-transform: uppercase;
  color: rgba(230,178,166,0.6);
  text-shadow: 0 0 8px rgba(230,178,166,0.3);
  white-space: nowrap;
  transition: color 0.2s, border-color 0.3s, text-shadow 0.3s;
  cursor: default;
}
.country-card::after {
  content: ''; position: absolute; inset: -5px; border-radius: 26px;
  filter: blur(8px); opacity: 0; z-index: 0;
  transition: opacity 0.35s ease; pointer-events: none;
}
.country-card-ro::after {
  background: linear-gradient(90deg,
    rgba(0,43,127,0.85) 0%, rgba(0,43,127,0.85) 33%,
    rgba(252,209,22,0.95) 33%, rgba(252,209,22,0.95) 66%,
    rgba(206,17,38,0.85) 66%, rgba(206,17,38,0.85) 100%);
}
.country-card-de::after {
  background: linear-gradient(180deg,
    rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.9) 33%,
    rgba(221,0,0,0.85) 33%, rgba(221,0,0,0.85) 66%,
    rgba(255,206,0,0.9) 66%, rgba(255,206,0,0.9) 100%);
}
.country-card:hover::after { opacity: 1; }
.country-card:hover {
  border-color: rgba(230,178,166,0.28);
}
/* Only the country name text goes white on hover */
.country-name {
  color: inherit;
  transition: color 0.2s ease;
}
.country-card:hover .country-name {
  color: #E6B2A6;
  text-shadow: 0 0 10px rgba(230,178,166,0.7);
}
.country-card > * { position: relative; z-index: 1; }
.country-card svg { width: 10px; height: 10px; opacity: 0.6; flex-shrink: 0; filter: drop-shadow(0 0 4px rgba(230,178,166,0.4)); }
.country-sep { color: rgba(230,178,166,0.3); font-size: 9px; line-height: 1; }
/* pipe between the two country cards */
.loc-pipe {
  font-size: 9px; color: rgba(230,178,166,0.2);
  letter-spacing: 0.05em; user-select: none; line-height: 1;
}
/* hide the pipe on mobile — no room for it on narrow screens */
@media (max-width: 540px) { .loc-pipe { display: none !important; } }

.loc-divider {
  font-size: 9px; color: rgba(230,178,166,0.2);
  letter-spacing: 0.05em; user-select: none; line-height: 1;
}

/* ─── Powered by glow ─── */
.powered a {
  transition: color 0.25s, text-shadow 0.25s;
}
.powered a:hover {
  color: rgba(230,178,166,0.75) !important;
  text-shadow:
    0 0 8px rgba(230,178,166,0.4),
    0 0 20px rgba(230,178,166,0.2),
    0 0 40px rgba(230,178,166,0.1);
}

/* ─── Invisible scrollbar ─── */
html { scrollbar-width: none; -ms-overflow-style: none; }
html::-webkit-scrollbar { display: none; }

/* ─── Scroll hint (mobile only) ─── */
#scroll-hint {
  display: none; /* hidden by default, shown via media query */
  position: fixed; bottom: 28px; left: 50%;
  transform: translateX(-50%);
  z-index: 21; flex-direction: column; align-items: center; gap: 3px;
  pointer-events: none;
  opacity: 0;
}
#scroll-hint.sh-visible {
  animation: sh-fadein 0.6s 0.3s ease forwards, sh-fadeout 0.5s 4s ease forwards;
}
@keyframes sh-fadein  { to { opacity: 1; } }
@keyframes sh-fadeout { to { opacity: 0; pointer-events: none; } }
.sh-chevron {
  animation: sh-bounce 1.1s ease-in-out infinite;
}
@keyframes sh-bounce {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(5px); }
}
.sh-label {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 8px; letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(230,178,166,0.4);
}
@media (max-width: 540px) {
  #scroll-hint { display: flex; }
}

/* ─── Activity element classes (moved from inline styles) ─── */
#dc-activity-art-wrap {
  position: relative;
  width: 36px; height: 36px;
  flex-shrink: 0;
  border-radius: 2px;
  overflow: hidden;
  background: rgba(122,60,65,0.08);
  margin-right: 6px;
}
#dc-activity-art {
  width: 36px; height: 36px;
  object-fit: cover;
  display: block;
  filter: grayscale(100%) contrast(1.1);
  opacity: 0;
  transition: opacity 0.3s;
}
#dc-activity-art-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
#dc-activity-small-img {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 16px; height: 16px;
  border-radius: 50%;
  object-fit: cover;
  display: none;
  filter: grayscale(100%) contrast(1.1);
  border: 1.5px solid rgba(0,0,0,0.55);
}
.dc-activity-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}
#dc-activity-type {
  font-size: 8px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(230,178,166,0.4);
}
#dc-activity-name {
  font-size: 11px;
  font-weight: 700;
  color: rgba(230,178,166,0.85);
  letter-spacing: 0.03em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#dc-activity-name.stream-link {
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(122,60,65,0.65);
}
#dc-activity-detail {
  font-size: 9px;
  color: rgba(230,178,166,0.45);
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#dc-activity-state {
  display: none;
  font-size: 9px;
  color: rgba(230,178,166,0.4);
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#dc-activity-elapsed {
  display: none;
  font-size: 8px;
  letter-spacing: 0.1em;
  color: rgba(230,178,166,0.3);
}
#dc-activity-progress-wrap {
  display: none;
  height: 2px;
  background: rgba(230,178,166,0.08);
  border-radius: 1px;
  overflow: hidden;
  margin-top: 3px;
}
#dc-activity-progress {
  height: 100%;
  background: rgba(230,178,166,0.22);
  border-radius: 1px;
  width: 0%;
  transition: width 1s linear;
}
#dc-activity-join {
  display: none;
  margin-top: 4px;
}
