:root {
  /* Backgrounds */
  --bg: #0A0A0C;
  --bg2: #101014;
  --bg3: #18181D;
  --bg4: #222228;

  /* Borders — improved visibility */
  --border: rgba(255, 255, 255, 0.09);
  --border-hi: rgba(255, 255, 255, 0.18);

  /* Text — boosted contrast */
  --text: #F8F6F2;
  --text-sec: rgba(248, 246, 242, 0.68);
  --text-ter: rgba(248, 246, 242, 0.42);

  /* Brand Colors — LumiQ Red (brighter for contrast) */
  --accent: #9B1515;
  --accent-hi: #B52020;
  --accent-bright: #D94444;
  --accent-glow: rgba(155, 21, 21, 0.18);
  --accent-subtle: rgba(155, 21, 21, 0.08);

  /* Status Colors */
  --green: #34D9C4;
  --amber: #FCC737;
  --red: #F87171;

  /* Step 6: Tier Colours — Standard / Premium / Creative */
  --tier-standard: #34D9C4;
  --tier-premium:  #5A8DEE;
  --tier-creative: #C879FF;
  --tier-standard-bg: rgba(52,217,196,0.12);
  --tier-premium-bg:  rgba(90,141,238,0.12);
  --tier-creative-bg: rgba(200,121,255,0.12);

  /* Fonts — Outfit (brand) + JetBrains Mono */
  --sans: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --mono: 'JetBrains Mono', 'Courier New', monospace;

  /* Selection */
  --selection: rgba(155, 21, 21, 0.35);

  /* Transitions */
  --ease: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* Shadows */
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
  --shadow-lg: 0 12px 32px rgba(0,0,0,0.5);
  --shadow-glow: 0 0 20px rgba(155,21,21,0.2);

  /* Border Radius */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-full: 100px;

  /* Typography scale — single source of truth across landing/login/admin */
  --fs-meta: 11px;        /* eyebrows, micro-labels (mono) */
  --fs-meta-lg: 12px;     /* slightly bigger meta */
  --fs-body: 14px;        /* default body */
  --fs-body-lg: 17px;     /* larger body / hero subhead */
  --fs-h3: 22px;          /* card titles, admin section heads */
  --fs-h2: 34px;          /* secondary headings */
  --fs-h1: 38px;          /* primary headings (non-hero) */
  --fs-display: clamp(40px, 6.5vw, 88px);   /* hero display */
  --fs-display-md: clamp(30px, 5.5vw, 80px); /* secondary hero */
  --fs-display-sm: clamp(24px, 3.8vw, 44px); /* card hero */

  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  --lh-tight: 1;
  --lh-snug: 1.2;
  --lh-normal: 1.55;

  /* Spacing scale (4px base) */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;
}

/* Studio gating — CSS owns visibility so inline style can't override.
   Use classList.add/remove('studios-hidden') from applyStudiosGate(). */
.studios-hidden { display: none !important; }

/* ── Canonical breakpoints ─────────────────────────────────────────────────
   CSS custom properties can't be used in @media queries, so these are
   documentation only. Always use these values — don't add new ones.
     --bp-sm : 480px  — small phones (portrait)
     --bp-md : 768px  — tablet / mobile-landscape (primary mobile breakpoint)
     --bp-lg : 1024px — narrow desktop / landscape tablet
   ─────────────────────────────────────────────────────────────────────── */

/* ── Sidebar credits — zero / low-balance states ────────────────────────── */
.sb-credit-card.sb-credit-empty .sb-credit-count { color: var(--text-ter); opacity: 0.5; }
.sb-credit-card.sb-credit-zero  .sb-credit-count { color: var(--red, #c00); }
