/* ==============================
   🎨 GLOBAL DESIGN TOKENS
============================== */
:root {
  --color-bg: #000;
  --color-surface: #111;
  --color-surface-light: #1c1c1c;
  --color-text: #fff;
  --color-text-dim: #ccc;
  --color-accent: #ff69b4;
  --color-accent-strong: #ff00ff;
  --color-accent-hover: #d147b7;
  --color-purple: #8b00ff;

  --font-primary: 'Poppins', sans-serif;
  --font-size-xs: 0.8rem;
  --font-size-sm: 0.95rem;
  --font-size-md: 1rem;
  --font-size-lg: 1.5rem;
  --font-size-xl: 3rem;

  /* ✅ UPDATED SPACING */
  --space-xs: 3px;
  --space-sm: 6px;
  --space-md: 14px;
  --space-lg: 20px;
  --space-xl: 40px;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 15px;

  --glow-pink: 0 0 12px rgba(255, 20, 147, 0.6);
  --glow-purple: 0 0 20px rgba(255, 0, 255, 0.5);

  --transition-base: all 0.3s ease-in-out;
}

/* Utility */
.bg-dark { background: var(--color-bg); color: var(--color-text); }
.text-accent { color: var(--color-accent); }

/* No-picture avatar placeholder baseline. base-ui.js's applyDefaultAvatarIcon
   (and every page-local caller of it) paints the real pink tile + person icon
   via inline style once it runs -- this is only the floor so a .default-avatar
   is never fully transparent if that script is slow, blocked, or races another
   script on the same page. Without it, a transparent circle over a page with
   its own background image (e.g. a profile's custom background photo) let
   that image show straight through, which read as a random gradient. */
/* The WHOLE placeholder, in CSS. It used to be only a background colour, with
   the person icon and the color:transparent that hides any leftover initials
   applied exclusively by base-ui.js. That is why a surface looked right until
   it re-rendered: anything injected after the one-shot DOMContentLoaded scan
   (the feed, infinite scroll, a live comment) reverted to showing letters.
   Doing it here means it is correct with no JS at all, on every surface,
   forever. The tile is OPAQUE on purpose -- a translucent tile let whatever
   sat behind it tint the avatar, which is why the same token read muted grey
   on a takes card and bright purple over a member's own profile ring. */
.default-avatar {
  background-color: #6a314e;
  background-image: url('../images/default-avatar.svg');
  background-repeat: no-repeat;
  background-position: center;
  background-size: 55%;
  color: transparent;
}

.text-gradient {
  background: var(--color-accent);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}

.btn {
  display: inline-block;
  padding: var(--space-sm) var(--space-md);
  background: var(--color-accent);
  color: var(--color-bg);
  border: none;
  border-radius: var(--radius-md);
  font-weight: 600;
  transition: var(--transition-base);
}
.btn:hover {
  background: var(--color-accent-strong);
  box-shadow: var(--glow-pink);
  transform: scale(1.05);
}

.card {
  background: var(--color-surface);
  padding: var(--space-lg);
  border-radius: var(--radius-lg);
  box-shadow: 0 0 10px rgba(0,0,0,0.4);
}

/* Reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* Poppins for Latin text + emoji-font fallback so colored emoji glyphs
     (‼️, 🎵, etc.) render properly instead of empty squares. Mobile gets
     this for free via expo-font; web needs explicit emoji-aware fonts in
     the fallback chain. Order matters — Poppins first for body text, then
     OS sans-serif for any missing chars, then platform emoji fonts. */
  font-family: 'Poppins', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
}

body {
  background: var(--color-bg);
  color: var(--color-text);
}

