/* ============================================================
   Liquid Glass — Glassmorphism System
   Adapts to all 11 theme presets via CSS custom properties.
   Excluded: retro-8bit (pixel aesthetic incompatible).

   Load order: must be the LAST stylesheet in <head> so it
   wins over same-specificity rules in other CSS files.
   ============================================================ */

/* ── 1. NAVBAR ──────────────────────────────────────────── */
.navbar {
  background: color-mix(in srgb, var(--bg-card) 65%, transparent);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow:
    inset 0 -1px 0 rgba(255, 255, 255, 0.04),
    0 1px 0 rgba(0, 0, 0, 0.15),
    0 4px 24px rgba(0, 0, 0, 0.18);
}
[data-theme="light"] .navbar {
  background: rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(28px) saturate(220%);
  -webkit-backdrop-filter: blur(28px) saturate(220%);
  border-bottom: 1px solid rgba(255, 255, 255, 0.6);
  box-shadow:
    inset 0 -1px 0 rgba(255, 255, 255, 0.9),
    0 1px 0 rgba(0, 0, 0, 0.04),
    0 4px 24px rgba(0, 0, 0, 0.07);
}

/* ── 2. FLOATING DROPDOWNS ──────────────────────────────── */
.user-dropdown,
.notifications-dropdown,
.theme-dropdown-menu {
  background: color-mix(in srgb, var(--bg-card) 62%, transparent);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.07);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 20px 60px rgba(0, 0, 0, 0.45),
    0 6px 20px rgba(0, 0, 0, 0.25);
}
[data-theme="light"] .user-dropdown,
[data-theme="light"] .notifications-dropdown,
[data-theme="light"] .theme-dropdown-menu {
  background: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(28px) saturate(220%);
  -webkit-backdrop-filter: blur(28px) saturate(220%);
  border: 1px solid rgba(255, 255, 255, 0.68);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 20px 60px rgba(0, 0, 0, 0.12),
    0 6px 20px rgba(0, 0, 0, 0.06);
}

/* ── 3. GENERIC MODAL DIALOG ────────────────────────────── */
.modal-dialog {
  background: color-mix(in srgb, var(--bg-card) 68%, transparent);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.07),
    0 24px 80px rgba(0, 0, 0, 0.5),
    0 8px 24px rgba(0, 0, 0, 0.25);
}
[data-theme="light"] .modal-dialog {
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(24px) saturate(200%);
  -webkit-backdrop-filter: blur(24px) saturate(200%);
  border: 1px solid rgba(255, 255, 255, 0.7);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 24px 80px rgba(0, 0, 0, 0.12),
    0 8px 24px rgba(0, 0, 0, 0.06);
}

/* ── 4. GIVEAWAY DETAIL MODAL ───────────────────────────── */
/* No backdrop-filter — .gdm-overlay already blurs the page */
.gdm-dialog {
  background: color-mix(in srgb, var(--bg-card) 72%, transparent);
  border: 1px solid rgba(255, 255, 255, 0.09);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 25px 50px -12px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(255, 255, 255, 0.03);
}
[data-theme="light"] .gdm-dialog {
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(255, 255, 255, 0.72);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 25px 50px -12px rgba(0, 0, 0, 0.12);
}

/* ── 5. SPONSOR PROFILE MODAL ───────────────────────────── */
/* No backdrop-filter — overlay handles blur */
.spm-dialog {
  background: color-mix(in srgb, var(--bg-card) 72%, transparent);
  border: 1px solid rgba(255, 255, 255, 0.09);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 24px 80px rgba(0, 0, 0, 0.55);
}
[data-theme="light"] .spm-dialog {
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(255, 255, 255, 0.72);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 24px 80px rgba(0, 0, 0, 0.12);
}

/* ── 6. GIVEAWAY CARDS ──────────────────────────────────── */
/* backdrop-filter CANNOT be on .card-flip-inner — it breaks
   transform-style: preserve-3d (CSS spec limitation).
   Apply glass to .card-front and .card-back separately instead. */
.giveaway-card .card-flip-inner {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.07),
    var(--shadow-md);
}
.giveaway-card .card-front,
.giveaway-card .card-back {
  background: color-mix(in srgb, var(--bg-card) 80%, transparent);
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
}
[data-theme="light"] .giveaway-card .card-flip-inner {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.68);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    var(--shadow-md);
}
[data-theme="light"] .giveaway-card .card-front,
[data-theme="light"] .giveaway-card .card-back {
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(12px) saturate(160%);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
}

/* ── 7. COMPACT LIST ROWS ───────────────────────────────── */
.giveaway-row-compact {
  background: color-mix(in srgb, var(--bg-card) 80%, transparent);
  backdrop-filter: blur(12px) saturate(140%);
  -webkit-backdrop-filter: blur(12px) saturate(140%);
  border: 1px solid rgba(255, 255, 255, 0.06);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}
[data-theme="light"] .giveaway-row-compact {
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(12px) saturate(160%);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.68);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95);
}
/* When tasks panel is open — go fully opaque so content behind doesn't bleed through */
.giveaway-row-compact:has(.giveaway-tasks:not(.hidden)) {
  background: var(--bg-card);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
[data-theme="light"] .giveaway-row-compact:has(.giveaway-tasks:not(.hidden)) {
  background: var(--bg-card);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* ── 8. DASHBOARD GAMING HERO ───────────────────────────── */
/* Keep the neon gradient overlay + add glass base */
.gaming-hero {
  background:
    linear-gradient(135deg, rgba(139, 92, 246, 0.12), rgba(6, 182, 212, 0.07)),
    color-mix(in srgb, var(--bg-card) 55%, transparent);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 8px 32px rgba(0, 0, 0, 0.2);
}
[data-theme="light"] .gaming-hero {
  background:
    linear-gradient(135deg, rgba(139, 92, 246, 0.06), rgba(6, 182, 212, 0.04)),
    rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(24px) saturate(200%);
  -webkit-backdrop-filter: blur(24px) saturate(200%);
  border: 1px solid rgba(255, 255, 255, 0.65);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 8px 32px rgba(0, 0, 0, 0.07);
}

/* ── 9. HERO STATS (inside gaming-hero — skip extra blur) ── */
/* accent-primary tints match per-theme: purple/cyan/pink etc. */
.hero-stat {
  background: color-mix(in srgb, var(--accent-primary) 12%, rgba(0, 0, 0, 0.12));
  border: 1px solid color-mix(in srgb, var(--accent-primary) 22%, rgba(255, 255, 255, 0.06));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.09),
    inset 0 0 0 1px rgba(255, 255, 255, 0.03);
}
[data-theme="light"] .hero-stat {
  background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.6);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 2px 8px rgba(0, 0, 0, 0.07);
}

/* ── 10. LEADERBOARD STAT CARDS ─────────────────────────── */
/* Higher specificity (.leaderboard-stats .stat-card) beats
   the inline <style> .stat-card in leaderboard.php */
.leaderboard-stats .stat-card {
  background: color-mix(in srgb, var(--bg-card) 65%, transparent);
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
  border: 1px solid rgba(255, 255, 255, 0.07);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.07),
    0 4px 16px rgba(0, 0, 0, 0.2);
}
[data-theme="light"] .leaderboard-stats .stat-card {
  background: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(16px) saturate(180%);
  -webkit-backdrop-filter: blur(16px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.68);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 4px 16px rgba(0, 0, 0, 0.07);
}

/* ── 11. ANNOUNCEMENTS BAR ──────────────────────────────── */
/* Keeps per-level gradient bg; adds glass highlight + blur */
.ann-item {
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    0 2px 8px rgba(0, 0, 0, 0.2);
}

/* ── 12. GIVEAWAYS FILTERS BAR (sticky) ────────────────── */
.filters-bar {
  background: color-mix(in srgb, var(--bg-card) 70%, transparent);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.07);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 4px 24px rgba(0, 0, 0, 0.2);
}
[data-theme="light"] .filters-bar {
  background: rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(24px) saturate(200%);
  -webkit-backdrop-filter: blur(24px) saturate(200%);
  border: 1px solid rgba(255, 255, 255, 0.62);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 4px 24px rgba(0, 0, 0, 0.07);
}

/* ── 13. SEARCH AUTOCOMPLETE DROPDOWN ───────────────────── */
.giveaway-search-dropdown {
  background: color-mix(in srgb, var(--bg-card) 68%, transparent);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 12px 40px rgba(0, 0, 0, 0.4),
    0 4px 16px rgba(0, 0, 0, 0.2);
}
[data-theme="light"] .giveaway-search-dropdown {
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(24px) saturate(220%);
  -webkit-backdrop-filter: blur(24px) saturate(220%);
  border: 1px solid rgba(255, 255, 255, 0.65);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 12px 40px rgba(0, 0, 0, 0.08),
    0 4px 16px rgba(0, 0, 0, 0.05);
}

/* ── 14. STORE STICKY BAR + SEARCH INPUT ────────────────── */

/* Sticky bar — this is the glass surface */
.store-sticky-bar {
  background: color-mix(in srgb, var(--bg-primary) 72%, transparent);
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: var(--radius-lg);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 4px 24px rgba(0, 0, 0, 0.18);
  margin-left: 0;
  margin-right: 0;
}
[data-theme="light"] .store-sticky-bar {
  background: rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(28px) saturate(220%);
  -webkit-backdrop-filter: blur(28px) saturate(220%);
  border: 1px solid rgba(255, 255, 255, 0.6);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 4px 24px rgba(0, 0, 0, 0.06);
}

/* Search input pill — lighter glass layer on top of the bar */
.store-search-input-wrap {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}
.store-search-input-wrap:focus-within {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(139, 92, 246, 0.5);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    0 0 0 3px rgba(139, 92, 246, 0.12);
}
[data-theme="light"] .store-search-input-wrap {
  background: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.7);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
[data-theme="light"] .store-search-input-wrap:focus-within {
  background: rgba(255, 255, 255, 0.75);
  border-color: rgba(139, 92, 246, 0.4);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 0 0 3px rgba(139, 92, 246, 0.1);
}

/* ── RETRO-8BIT EXCLUSION ───────────────────────────────── */
/* Pixel aesthetic is incompatible with glassmorphism */
[data-theme-preset="retro-8bit"] .navbar,
[data-theme-preset="retro-8bit"] .user-dropdown,
[data-theme-preset="retro-8bit"] .notifications-dropdown,
[data-theme-preset="retro-8bit"] .theme-dropdown-menu,
[data-theme-preset="retro-8bit"] .modal-dialog,
[data-theme-preset="retro-8bit"] .gdm-dialog,
[data-theme-preset="retro-8bit"] .spm-dialog,
[data-theme-preset="retro-8bit"] .giveaway-card .card-flip-inner,
[data-theme-preset="retro-8bit"] .giveaway-card .card-front,
[data-theme-preset="retro-8bit"] .giveaway-card .card-back,
[data-theme-preset="retro-8bit"] .giveaway-row-compact,
[data-theme-preset="retro-8bit"] .gaming-hero,
[data-theme-preset="retro-8bit"] .hero-stat,
[data-theme-preset="retro-8bit"] .leaderboard-stats .stat-card,
[data-theme-preset="retro-8bit"] .ann-item,
[data-theme-preset="retro-8bit"] .giveaway-search-dropdown {
  background: var(--bg-card);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: var(--shadow-md);
}
[data-theme-preset="retro-8bit"] .filters-bar,
[data-theme-preset="retro-8bit"] .store-sticky-bar {
  background: var(--bg-primary);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}
[data-theme-preset="retro-8bit"] .navbar {
  border-bottom: 2px solid var(--accent-primary);
  box-shadow: none;
}

/* ── MOBILE / TABLET (≤1024px) ──────────────────────────── */
@media (max-width: 1024px) {
  /* Top nav bar */
  .mobile-nav {
    background: color-mix(in srgb, var(--bg-primary) 70%, transparent);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    box-shadow:
      inset 0 -1px 0 rgba(255, 255, 255, 0.04),
      0 4px 24px rgba(0, 0, 0, 0.2);
  }
  [data-theme="light"] .mobile-nav {
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(28px) saturate(220%);
    -webkit-backdrop-filter: blur(28px) saturate(220%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.6);
    box-shadow:
      inset 0 -1px 0 rgba(255, 255, 255, 0.9),
      0 4px 24px rgba(0, 0, 0, 0.07);
  }

  /* Subbar (announcement strip below nav) */
  .mobile-nav__subbar {
    background: color-mix(in srgb, var(--bg-primary) 70%, transparent);
    backdrop-filter: blur(20px) saturate(160%);
    -webkit-backdrop-filter: blur(20px) saturate(160%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  }
  [data-theme="light"] .mobile-nav__subbar {
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(24px) saturate(200%);
    -webkit-backdrop-filter: blur(24px) saturate(200%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.55);
  }

  /* Left drawer */
  .mobile-nav__drawer {
    background: color-mix(in srgb, var(--bg-primary) 75%, transparent);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    border-right: 1px solid rgba(255, 255, 255, 0.07);
    box-shadow:
      inset -1px 0 0 rgba(255, 255, 255, 0.04),
      4px 0 32px rgba(0, 0, 0, 0.35);
  }
  [data-theme="light"] .mobile-nav__drawer {
    background: rgba(255, 255, 255, 0.78);
    backdrop-filter: blur(32px) saturate(220%);
    -webkit-backdrop-filter: blur(32px) saturate(220%);
    border-right: 1px solid rgba(255, 255, 255, 0.65);
    box-shadow:
      inset -1px 0 0 rgba(255, 255, 255, 0.9),
      4px 0 32px rgba(0, 0, 0, 0.08);
  }

  /* Right sidebar (user dropdown) */
  .mobile-nav__user-dropdown {
    background: color-mix(in srgb, var(--bg-primary) 75%, transparent);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    border-left: 1px solid rgba(255, 255, 255, 0.07);
    box-shadow:
      inset 1px 0 0 rgba(255, 255, 255, 0.04),
      -4px 0 32px rgba(0, 0, 0, 0.35);
  }
  [data-theme="light"] .mobile-nav__user-dropdown {
    background: rgba(255, 255, 255, 0.78);
    backdrop-filter: blur(32px) saturate(220%);
    -webkit-backdrop-filter: blur(32px) saturate(220%);
    border-left: 1px solid rgba(255, 255, 255, 0.65);
    box-shadow:
      inset 1px 0 0 rgba(255, 255, 255, 0.9),
      -4px 0 32px rgba(0, 0, 0, 0.08);
  }

  /* Notification modal bottom sheet */
  .mobile-notif-modal__sheet {
    background: color-mix(in srgb, var(--bg-card) 78%, transparent);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.06),
      0 -8px 40px rgba(0, 0, 0, 0.35);
  }
  [data-theme="light"] .mobile-notif-modal__sheet {
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(32px) saturate(220%);
    -webkit-backdrop-filter: blur(32px) saturate(220%);
    border-top: 1px solid rgba(255, 255, 255, 0.7);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.95),
      0 -8px 40px rgba(0, 0, 0, 0.07);
  }
  [data-theme="light"] .mobile-notif-modal__handle {
    background: rgba(0, 0, 0, 0.12);
  }
  [data-theme="light"] .mobile-notif-modal__header {
    border-bottom-color: rgba(0, 0, 0, 0.08);
  }
  [data-theme="light"] .mobile-notif-modal__title {
    color: rgba(0, 0, 0, 0.85);
  }
  [data-theme="light"] .mobile-notif-modal__close:active {
    background: rgba(0, 0, 0, 0.07);
  }
  [data-theme="light"] .mobile-notif-modal__close svg {
    stroke: rgba(0, 0, 0, 0.45);
  }
  [data-theme="light"] .mobile-notif-modal__push-row {
    background: rgba(139, 92, 246, 0.06);
    border-bottom-color: rgba(0, 0, 0, 0.07);
  }
  [data-theme="light"] .mobile-notif-modal__push-label {
    color: rgba(0, 0, 0, 0.55);
  }
  [data-theme="light"] .mobile-notif-modal__list .notification-dropdown-item {
    border-bottom-color: rgba(0, 0, 0, 0.06);
  }
  [data-theme="light"] .mobile-notif-modal__loading,
  [data-theme="light"] .mobile-notif-modal__empty {
    color: rgba(0, 0, 0, 0.4);
  }
  [data-theme="light"] .mobile-notif-modal__footer {
    border-top-color: rgba(0, 0, 0, 0.08);
  }
  [data-theme="light"] .mobile-notif-modal__clear {
    color: rgba(0, 0, 0, 0.5);
    border-color: rgba(0, 0, 0, 0.15);
  }
  [data-theme="light"] .mobile-notif-modal__clear:active {
    background: rgba(139, 92, 246, 0.1);
    color: #7c3aed;
    border-color: rgba(139, 92, 246, 0.3);
  }

  /* retro-8bit exclusion on mobile */
  [data-theme-preset="retro-8bit"] .mobile-nav,
  [data-theme-preset="retro-8bit"] .mobile-nav__subbar,
  [data-theme-preset="retro-8bit"] .mobile-nav__drawer,
  [data-theme-preset="retro-8bit"] .mobile-nav__user-dropdown,
  [data-theme-preset="retro-8bit"] .mobile-notif-modal__sheet {
    background: var(--bg-primary);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    box-shadow: none;
  }
}
