/* explore.melodreams.com — directory styles. Dark + brand-blue
   MeloDreams palette. Loaded by the Explore Pages shell (halloffame). */
    /* ── Tokens ─────────────────────────────────────────────────────────
       Pulled straight from the Melodreams home/social palette so Explore
       reads as part of the same product: near-black floor, brand-blue
       accent (#3b82f6), white text on translucent rings. */
    :root {
      --md-bg:        #06060c;
      --md-bg-2:      #0a0c12;
      --md-accent:    #3b82f6;
      --md-accent-2:  #60a5fa;
      --md-verified:  #1d9bf0;
      --md-staff:     #f59e0b;
      --md-text:      #ffffff;
      --md-ring:      rgba(255, 255, 255, 0.10);
      --md-ring-2:    rgba(255, 255, 255, 0.06);
      --md-mute:      rgba(255, 255, 255, 0.55);
      --md-faint:     rgba(255, 255, 255, 0.40);
      --md-card:      rgba(255, 255, 255, 0.025);
      --md-card-hov:  rgba(255, 255, 255, 0.045);
      --md-gold:      #f5b942;
    }

    * { box-sizing: border-box; margin: 0; padding: 0; }
    html { scroll-behavior: smooth; }
    body {
      background: var(--md-bg);
      color: var(--md-text);
      font-family: 'Onest', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
      -webkit-font-smoothing: antialiased;
      min-height: 100vh;
      overflow-x: hidden;
    }
    a { color: inherit; text-decoration: none; }
    img { display: block; }

    .wrap { max-width: 1180px; margin: 0 auto; padding: 0 24px; }

    /* ── Nav ──────────────────────────────────────────────────────────── */
    .nav {
      position: sticky;
      top: 0;
      z-index: 50;
      background: rgba(6, 6, 12, 0.72);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
      border-bottom: 1px solid var(--md-ring);
    }
    .nav__inner {
      height: 72px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
    }
    .nav__brand { display: inline-flex; align-items: center; gap: 11px; }
    .nav__brand img { width: 32px; height: 32px; border-radius: 9px; }
    .nav__brand b { font-size: 19px; font-weight: 650; letter-spacing: -0.02em; }
    .nav__brand small {
      display: inline-block;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      color: var(--md-accent-2);
      padding: 3px 8px;
      border: 1px solid rgba(59, 130, 246, 0.30);
      border-radius: 999px;
      margin-left: 4px;
    }
    @media (max-width: 560px) { .nav__brand small { display: none; } }

    /* ── Hero ─────────────────────────────────────────────────────────── */
    .hero { padding: 60px 0 26px; text-align: center; }
    .eyebrow {
      display: inline-flex; align-items: center; gap: 8px;
      font-size: 10.5px; letter-spacing: 0.22em; text-transform: uppercase;
      color: var(--md-mute); font-weight: 600; margin-bottom: 18px;
    }
    .eyebrow::before { content: ''; width: 16px; height: 1px; background: currentColor; opacity: 0.6; }
    .hero h1 {
      font-size: clamp(34px, 6vw, 56px);
      font-weight: 650;
      letter-spacing: -0.03em;
      line-height: 1.02;
      margin-bottom: 14px;
    }
    .hero h1 .grad {
      background: linear-gradient(90deg, var(--md-accent-2), var(--md-accent) 55%, #2563eb);
      -webkit-background-clip: text; background-clip: text; color: transparent;
    }
    .hero p {
      font-size: clamp(15px, 2.2vw, 18px);
      color: var(--md-mute);
      max-width: 520px;
      margin: 0 auto;
      line-height: 1.55;
    }

    /* ── Search ───────────────────────────────────────────────────────── */
    .search {
      position: relative;
      max-width: 540px;
      margin: 28px auto 0;
    }
    .search input {
      width: 100%;
      padding: 14px 18px 14px 46px;
      font: inherit;
      font-size: 15px;
      color: var(--md-text);
      background: var(--md-card);
      border: 1px solid var(--md-ring);
      border-radius: 14px;
      outline: none;
      transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
    }
    .search input::placeholder { color: var(--md-faint); }
    .search input:focus {
      border-color: rgba(59, 130, 246, 0.55);
      background: var(--md-card-hov);
      box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.12);
    }
    .search__icon {
      position: absolute;
      left: 16px; top: 50%;
      transform: translateY(-50%);
      width: 18px; height: 18px;
      color: var(--md-faint);
      pointer-events: none;
    }

    /* ── Sort tabs ────────────────────────────────────────────────────── */
    .tabs {
      display: flex;
      justify-content: center;
      gap: 8px;
      margin: 26px auto 6px;
      flex-wrap: wrap;
    }
    .tab {
      display: inline-flex; align-items: center; gap: 7px;
      padding: 8px 16px;
      border-radius: 999px;
      background: var(--md-card);
      border: 1px solid var(--md-ring-2);
      color: var(--md-mute);
      font-size: 13px; font-weight: 550;
      cursor: pointer;
      transition: background 0.18s, color 0.18s, border-color 0.18s;
    }
    .tab svg { width: 14px; height: 14px; }
    .tab:hover { color: #fff; border-color: var(--md-ring); }
    .tab.is-on {
      background: rgba(59, 130, 246, 0.14);
      color: #dbeafe;
      border-color: rgba(59, 130, 246, 0.40);
    }

    /* ── Hall of Fame ─────────────────────────────────────────────────── */
    .hall { padding: 14px 0 6px; }
    .hall__head { text-align: center; margin-bottom: 18px; }
    .hall__title {
      display: inline-flex; align-items: center; gap: 10px;
      font-size: clamp(20px, 3vw, 26px);
      font-weight: 700; letter-spacing: -0.02em; color: #fff;
    }
    .hall__title svg { width: 24px; height: 24px; color: var(--md-gold); }
    .hall__sub { margin-top: 6px; font-size: 14px; color: var(--md-mute); }
    .hall__grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
      gap: 16px;
    }

    /* Rank badge on Hall cards. Top 3 go gold; the rest stay neutral. */
    .card__rank {
      position: absolute; top: 10px; left: 10px; z-index: 2;
      min-width: 26px; height: 26px; padding: 0 7px;
      display: inline-flex; align-items: center; justify-content: center;
      border-radius: 999px;
      font-size: 12px; font-weight: 700;
      background: rgba(10,12,18,0.72); color: #fff;
      border: 1px solid var(--md-ring);
      -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    }
    .card__rank--gold {
      background: linear-gradient(180deg, #fde68a, #f59e0b);
      color: #3a2a00; border-color: rgba(245,158,11,0.5);
    }

    /* ── Section heading (Browse creators) ────────────────────────────── */
    .section-head { margin: 6px 0 14px; }
    .section-title {
      font-size: 15px; font-weight: 650;
      color: rgba(255,255,255,0.82); letter-spacing: -0.01em;
    }

    /* ── Grid ─────────────────────────────────────────────────────────── */
    .results { padding: 18px 0 10px; }
    .grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
      gap: 16px;
    }

    /* ── Creator card ─────────────────────────────────────────────────── */
    .card {
      position: relative;
      display: block;
      border-radius: 18px;
      background: var(--md-card);
      border: 1px solid var(--md-ring);
      overflow: hidden;
      transition: border-color 0.2s, background 0.2s, transform 0.2s;
    }
    .card:hover {
      background: var(--md-card-hov);
      border-color: rgba(59, 130, 246, 0.32);
      transform: translateY(-3px);
    }
    .card__banner {
      height: 76px;
      background:
        radial-gradient(ellipse at 30% 30%, rgba(59,130,246,0.45), transparent 60%),
        radial-gradient(ellipse at 80% 70%, rgba(96,165,250,0.30), transparent 60%),
        linear-gradient(135deg, #111726, #0a0c12);
      background-size: cover;
      background-position: center;
    }
    .card__body { padding: 0 18px 18px; margin-top: -26px; }
    .card__avatar {
      width: 56px; height: 56px;
      border-radius: 50%;
      border: 3px solid var(--md-bg-2);
      background: conic-gradient(from 210deg, #3b82f6, #60a5fa, #f59e0b, #3b82f6);
      position: relative;
      overflow: hidden;
      display: flex; align-items: center; justify-content: center;
    }
    .card__avatar img { width: 100%; height: 100%; object-fit: cover; }
    .card__avatar span {
      font-size: 22px; font-weight: 800; color: rgba(255,255,255,0.95);
      letter-spacing: -0.02em;
    }
    .card__name {
      display: inline-flex; align-items: center; gap: 6px;
      font-size: 15.5px; font-weight: 650;
      letter-spacing: -0.01em;
      margin-top: 12px;
      max-width: 100%;
    }
    .card__name span:first-child {
      overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    }
    .badge { flex-shrink: 0; width: 16px; height: 16px; }
    .badge--verified { color: var(--md-verified); }
    .badge--staff { color: var(--md-staff); }
    .badge--dev { color: #2ecc71; }
    .card__handle { font-size: 13px; color: var(--md-faint); margin-top: 2px; }
    .card__bio {
      font-size: 13px; color: var(--md-mute);
      line-height: 1.5; margin-top: 10px;
      display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
      overflow: hidden;
      min-height: 39px;
    }
    .card__meta {
      display: flex; align-items: center; gap: 8px;
      margin-top: 14px; flex-wrap: wrap;
    }
    .chip {
      display: inline-flex; align-items: center; gap: 5px;
      font-size: 11.5px; font-weight: 550;
      color: var(--md-mute);
      background: rgba(255,255,255,0.04);
      border: 1px solid var(--md-ring-2);
      border-radius: 999px;
      padding: 4px 10px;
    }
    .chip svg { width: 12px; height: 12px; opacity: 0.8; }
    .chip--accent { color: #bfdbfe; background: rgba(59,130,246,0.10); border-color: rgba(59,130,246,0.24); }

    /* ── Creator styling: per-element animations ──────────────────────────
       Ported from profile.css so cards animate exactly like the real pages.
       Text anims (name/handle/bio) = mdr-tx-anim-<slug>; avatar border anims
       = av-anim-<slug>, driven by --av-border-color set inline per card. */
    @keyframes mdrTxAnimFade    { from { opacity:0; } to { opacity:1; } }
    @keyframes mdrTxAnimSlide   { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
    @keyframes mdrTxAnimType    { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
    @keyframes mdrTxAnimShimmer { 0% { background-position:-180% 0; } 100% { background-position:280% 0; } }
    @keyframes mdrTxAnimGlow    { 0%,100% { text-shadow:0 0 4px rgba(255,255,255,0.35); } 50% { text-shadow:0 0 14px rgba(255,255,255,0.85); } }
    @keyframes mdrTxAnimRainbow { 0% { background-position:0% 50%; } 100% { background-position:200% 50%; } }
    .mdr-tx-anim-slide, .mdr-tx-anim-type { display: inline-block; }
    .mdr-tx-anim-fade    { animation: mdrTxAnimFade 0.9s ease-out both; }
    .mdr-tx-anim-slide   { animation: mdrTxAnimSlide 0.7s cubic-bezier(.22,1,.36,1) both; }
    .mdr-tx-anim-type    { animation: mdrTxAnimType 1.4s steps(28,end) both; white-space: pre-wrap; }
    .mdr-tx-anim-shimmer {
      background-image: linear-gradient(110deg, currentColor 0 35%, #fff 50%, currentColor 65% 100%);
      background-size: 220% 100%;
      -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
      animation: mdrTxAnimShimmer 2.4s linear infinite;
    }
    .mdr-tx-anim-glow    { animation: mdrTxAnimGlow 2.2s ease-in-out infinite; }
    .mdr-tx-anim-rainbow {
      background-image: linear-gradient(90deg,#ff6b6b,#ffd166,#4caf50,#2e91ff,#c850c0,#ff6b6b);
      background-size: 200% 100%;
      -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
      animation: mdrTxAnimRainbow 3.5s linear infinite;
    }

    @keyframes mdrAvBorderPulse {
      0%,100% { box-shadow: 0 0 0 3px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
      50%     { box-shadow: 0 0 0 7px color-mix(in srgb, var(--av-border-color) 50%, transparent), 0 0 24px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
    }
    @keyframes mdrAvBorderBreathe {
      0%,100% { box-shadow: 0 0 0 2px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
      50%     { box-shadow: 0 0 0 6px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
    }
    @keyframes mdrAvBorderSpin {
      0%   { box-shadow: 0 0 0 3px var(--av-border-color),  3px 0 0 3px #ff6b6b, 0 8px 24px rgba(0,0,0,0.45); }
      25%  { box-shadow: 0 0 0 3px #ffd166,  0 3px 0 3px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
      50%  { box-shadow: 0 0 0 3px var(--av-border-color), -3px 0 0 3px #4caf50, 0 8px 24px rgba(0,0,0,0.45); }
      75%  { box-shadow: 0 0 0 3px #2e91ff,  0 -3px 0 3px var(--av-border-color), 0 8px 24px rgba(0,0,0,0.45); }
      100% { box-shadow: 0 0 0 3px var(--av-border-color),  3px 0 0 3px #ff6b6b, 0 8px 24px rgba(0,0,0,0.45); }
    }
    @keyframes mdrAvBorderRainbow {
      0%   { box-shadow: 0 0 0 3px #ff6b6b, 0 0 16px #ff6b6b, 0 8px 24px rgba(0,0,0,0.45); }
      17%  { box-shadow: 0 0 0 3px #ffd166, 0 0 16px #ffd166, 0 8px 24px rgba(0,0,0,0.45); }
      34%  { box-shadow: 0 0 0 3px #4caf50, 0 0 16px #4caf50, 0 8px 24px rgba(0,0,0,0.45); }
      51%  { box-shadow: 0 0 0 3px #2e91ff, 0 0 16px #2e91ff, 0 8px 24px rgba(0,0,0,0.45); }
      68%  { box-shadow: 0 0 0 3px #c850c0, 0 0 16px #c850c0, 0 8px 24px rgba(0,0,0,0.45); }
      100% { box-shadow: 0 0 0 3px #ff6b6b, 0 0 16px #ff6b6b, 0 8px 24px rgba(0,0,0,0.45); }
    }
    .card__avatar.av-anim-pulse   { animation: mdrAvBorderPulse 2.4s ease-in-out infinite; }
    .card__avatar.av-anim-breathe { animation: mdrAvBorderBreathe 3s ease-in-out infinite; }
    .card__avatar.av-anim-spin    { animation: mdrAvBorderSpin 3.2s linear infinite; }
    .card__avatar.av-anim-rainbow { animation: mdrAvBorderRainbow 5s linear infinite; }

    @media (prefers-reduced-motion: reduce) {
      .mdr-tx-anim-fade, .mdr-tx-anim-slide, .mdr-tx-anim-type,
      .mdr-tx-anim-shimmer, .mdr-tx-anim-glow, .mdr-tx-anim-rainbow,
      .card__avatar.av-anim-pulse, .card__avatar.av-anim-breathe,
      .card__avatar.av-anim-spin, .card__avatar.av-anim-rainbow { animation: none !important; }
    }

    /* ── Skeletons ────────────────────────────────────────────────────── */
    .skel {
      border-radius: 18px;
      background: var(--md-card);
      border: 1px solid var(--md-ring-2);
      overflow: hidden;
    }
    .skel__banner { height: 76px; }
    .skel__body { padding: 0 18px 18px; margin-top: -26px; }
    .skel__avatar { width: 56px; height: 56px; border-radius: 50%; border: 3px solid var(--md-bg-2); }
    .skel__line { height: 11px; border-radius: 6px; margin-top: 12px; }
    .skel__line.w70 { width: 70%; } .skel__line.w45 { width: 45%; } .skel__line.w90 { width: 90%; }
    .shimmer {
      background: linear-gradient(100deg, rgba(255,255,255,0.04) 30%, rgba(255,255,255,0.10) 50%, rgba(255,255,255,0.04) 70%);
      background-size: 200% 100%;
      animation: shimmer 1.4s ease-in-out infinite;
    }
    @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

    /* ── States ───────────────────────────────────────────────────────── */
    .state {
      text-align: center;
      padding: 70px 20px;
      color: var(--md-mute);
    }
    .state__icon {
      width: 56px; height: 56px; margin: 0 auto 18px;
      border-radius: 16px;
      background: rgba(255,255,255,0.04);
      border: 1px solid var(--md-ring);
      display: inline-flex; align-items: center; justify-content: center;
      color: var(--md-faint);
    }
    .state h3 { font-size: 17px; font-weight: 650; color: #fff; margin-bottom: 6px; }
    .state p { font-size: 14px; max-width: 380px; margin: 0 auto; line-height: 1.55; }
    /* Accent variant — used by the welcoming "empty directory" first-run box. */
    .state__icon--accent {
      background: rgba(59,130,246,0.12);
      border-color: rgba(59,130,246,0.30);
      color: var(--md-accent-2);
    }

    /* End-of-list marker — shown once every creator has been loaded. */
    .end {
      text-align: center;
      padding: 26px 0 8px;
      font-size: 13px;
      color: var(--md-faint);
      letter-spacing: 0.04em;
    }

    /* ── Load more ────────────────────────────────────────────────────── */
    .more { text-align: center; padding: 28px 0 10px; }
    .btn {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 12px 26px;
      border-radius: 12px;
      background: var(--md-card-hov);
      border: 1px solid var(--md-ring);
      color: #fff;
      font: inherit; font-size: 14px; font-weight: 600;
      cursor: pointer;
      transition: background 0.16s, border-color 0.16s, transform 0.1s;
    }
    .btn:hover { background: rgba(59,130,246,0.14); border-color: rgba(59,130,246,0.40); }
    .btn:active { transform: translateY(1px); }
    .btn[disabled] { opacity: 0.5; cursor: default; transform: none; }
    /* Filled accent button — used for the first-run empty-directory CTA. */
    .btn--accent { background: var(--md-accent); border-color: var(--md-accent); }
    .btn--accent:hover { background: var(--md-accent-2); border-color: var(--md-accent-2); }
    .btn--accent:active { transform: translateY(1px); }
    .btn__spin {
      width: 15px; height: 15px;
      border: 2px solid rgba(255,255,255,0.25);
      border-top-color: #fff;
      border-radius: 50%;
      animation: spin 0.7s linear infinite;
      display: none;
    }
    .btn.is-loading .btn__spin { display: inline-block; }
    @keyframes spin { to { transform: rotate(360deg); } }

    /* Skeleton fade-in — the loading grid eases in so it reads as an
       intentional loading state, not a flash. Each card shimmers via the
       .shimmer sweep above. */
    .skel { animation: skel-in 0.35s ease both; }
    @keyframes skel-in {
      from { opacity: 0; transform: translateY(6px); }
      to   { opacity: 1; transform: none; }
    }

    .foot-space { height: 40px; }

    @media (prefers-reduced-motion: reduce) {
      html { scroll-behavior: auto; }
      .shimmer, .btn__spin { animation: none; }
      .skel { animation: none; transform: none; }
      .card:hover { transform: none; }
    }
