/* ══════════════════════════════════════════════════════════════
   GZB FRAMEWORK — Base Styles
   Theme colours come from config.php via :root vars (see gzb_head_config).
   ══════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@300;400;500;600;700&display=swap');

* , *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  background: var(--gzb-bg);
  color: var(--gzb-text);
  font-family: 'DM Sans', sans-serif;
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: hidden;
}
h1, h2, h3, h4 { font-family: 'Bebas Neue', sans-serif; letter-spacing: .04em; }
a { color: var(--gzb-primary); text-decoration: none; }
img { max-width: 100%; display: block; }

.gzb-wrap { max-width: 1200px; margin: 0 auto; padding: 0 1rem; }

/* ── NAV ─────────────────────────────────────────────────────── */
.gzb-nav {
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  height: 62px; padding: 0 1.25rem;
  background: var(--gzb-nav-bg);
  border-bottom: 1px solid var(--gzb-bg4);
  backdrop-filter: blur(12px);
}
.gzb-nav-logo img { height: 40px; width: auto; max-width: 200px; object-fit: contain; }
.gzb-nav-links { display: flex; align-items: center; gap: .25rem; }
.gzb-nav-links a {
  color: var(--gzb-nav-text); font-size: .85rem; font-weight: 500;
  padding: 6px 12px; border-radius: 6px; transition: all .2s;
}
.gzb-nav-links a:hover, .gzb-nav-links a.active { color: #fff; background: var(--gzb-bg3); }
.gzb-nav-right { display: flex; align-items: center; gap: .5rem; }
.gzb-btn {
  background: var(--gzb-primary); color: #fff; border: none; cursor: pointer;
  padding: 8px 18px; border-radius: 7px; font-family: inherit;
  font-size: .84rem; font-weight: 700; transition: opacity .2s;
}
.gzb-btn:hover { opacity: .88; }
.gzb-btn-ghost {
  background: transparent; color: var(--gzb-text-dim);
  border: 1px solid var(--gzb-bg4); padding: 7px 14px; border-radius: 7px;
  cursor: pointer; font-family: inherit; font-size: .8rem;
}
.gzb-btn-ghost:hover { border-color: var(--gzb-primary); color: var(--gzb-primary); }
.gzb-avatar-pill {
  display: flex; align-items: center; gap: 7px;
  background: var(--gzb-bg3); border: 1px solid var(--gzb-bg4);
  border-radius: 20px; padding: 3px 12px 3px 4px; cursor: pointer;
}
.gzb-av-circle {
  width: 26px; height: 26px; border-radius: 50%; background: var(--gzb-primary);
  display: flex; align-items: center; justify-content: center; font-size: .8rem;
}
.gzb-av-name { font-size: .8rem; color: var(--gzb-text); font-weight: 500; }

/* ── BURGER / MOBILE NAV ─────────────────────────────────────── */
.gzb-burger { display: none; flex-direction: column; gap: 5px; cursor: pointer; padding: 6px; border: none; background: transparent; }
.gzb-burger span { display: block; width: 22px; height: 2px; background: var(--gzb-text); border-radius: 2px; transition: all .3s; }
.gzb-mob { display: none; flex-direction: column; gap: .25rem; padding: .75rem 1rem; background: var(--gzb-nav-bg); border-bottom: 1px solid var(--gzb-bg4); position: fixed; top: 62px; left: 0; right: 0; z-index: 99; max-height: calc(100vh - 62px); overflow-y: auto; box-shadow: 0 8px 24px rgba(0,0,0,.4); }
.gzb-mob.open { display: flex; }
.gzb-mob a { color: var(--gzb-text-dim); padding: 10px 12px; border-radius: 8px; font-weight: 500; }
.gzb-mob a:hover { color: #fff; background: var(--gzb-bg3); }
.gzb-mob-user { display: flex; align-items: center; gap: .6rem; padding: 10px 12px; margin-bottom: .35rem; border-bottom: 1px solid var(--gzb-bg4); }
.gzb-mob-av { width: 34px; height: 34px; border-radius: 50%; background: var(--gzb-bg3); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; flex-shrink: 0; }
.gzb-mob-nm { font-size: .95rem; color: var(--gzb-text); font-weight: 600; }
@media (max-width: 768px) {
  .gzb-nav-links { display: none; }
  .gzb-nav-right { display: none; }
  .gzb-burger { display: flex; }
}

/* ── HERO ────────────────────────────────────────────────────── */
.gzb-hero { text-align: center; padding: 3rem 1rem 2rem; }
.gzb-hero h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); color: #fff; line-height: 1; }
.gzb-hero p { color: var(--gzb-text-dim); margin-top: .6rem; font-size: 1rem; }

/* ── SECTION HEADINGS ────────────────────────────────────────── */
.gzb-section { padding: 1.5rem 0; }
.gzb-section-title { font-size: 1.6rem; color: #fff; margin-bottom: 1rem; }

/* ── ENGAGEMENT CAMPAIGN BANNER ──────────────────────────────── */
/* Campaign card — stacked full-width sections (header / strip / prizes) */
.gzb-camp-card { display:flex; flex-direction:column; gap:.9rem; background:linear-gradient(120deg,rgba(241,196,15,.06),var(--gzb-bg2) 55%); border:1px solid var(--gzb-primary); border-radius:14px; padding:1.1rem 1.25rem; margin-bottom:1.5rem; overflow:hidden; }
.gzb-camp-card.ended { background:linear-gradient(120deg,rgba(155,155,155,.10),var(--gzb-bg2) 55%); border-color:var(--gzb-bg4); }
.gzb-camp-card.upcoming { background:linear-gradient(120deg,rgba(52,152,219,.10),var(--gzb-bg2) 55%); border-color:rgba(52,152,219,.35); }
.gzb-camp-head { display:flex; gap:1.1rem; align-items:flex-start; }
.gzb-camp-media { flex-shrink:0; width:104px; }
.gzb-camp-media img { width:104px; height:104px; object-fit:cover; border-radius:10px; background:var(--gzb-bg3); }
.gzb-camp-head-main { flex:1; min-width:0; }
.gzb-camp-tag { font-size:.66rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#f1c40f; }
.gzb-camp-title { font-family:'Bebas Neue'; font-size:1.7rem; color:#fff; line-height:1.02; margin-top:3px; }
.gzb-camp-desc { font-size:.86rem; color:var(--gzb-text-dim); margin:.5rem 0 0; line-height:1.5; }
.gzb-camp-terms-wrap { text-align:center; }
.gzb-camp-llabel { font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:#f1c40f; margin-bottom:.35rem; }
.gzb-camp-leaders { display:flex; flex-wrap:wrap; gap:.45rem .8rem; font-size:.82rem; }
.gzb-camp-lead { color:var(--gzb-text); white-space:nowrap; } .gzb-camp-lead b { color:#f1c40f; }
.gzb-camp-terms-link { display:inline-block; font-size:.74rem; color:var(--gzb-text-dim); cursor:pointer; text-decoration:underline; }
.gzb-camp-terms { margin-top:.5rem; font-size:.77rem; color:var(--gzb-text-dim); background:var(--gzb-bg3); border-radius:8px; padding:.6rem .8rem; line-height:1.5; white-space:pre-wrap; text-align:left; }
.gzb-camp-strip { display:flex; flex-wrap:wrap; gap:.5rem; }
.gzb-camp-stat { flex:1 1 0; min-width:0; background:var(--gzb-bg3); border:1px solid var(--gzb-bg4); border-radius:9px; padding:.5rem .6rem; }
.gzb-camp-stat .cs-l { font-size:.58rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--gzb-text-dim); margin-bottom:.18rem; }
.gzb-camp-stat .cs-v { font-size:.82rem; font-weight:700; color:#fff; line-height:1.25; }
.gzb-camp-stat.metric { border-color:var(--gzb-primary); background:color-mix(in srgb, var(--gzb-primary) 10%, var(--gzb-bg3)); }
.gzb-camp-stat.metric .cs-v { color:var(--gzb-primary); }
.gzb-camp-prizes-head { font-family:'Bebas Neue'; font-size:1.15rem; letter-spacing:.02em; color:#fff; margin-bottom:.55rem; }
.gzb-camp-prizes-head span { font-family:inherit; font-size:.8rem; font-weight:500; color:var(--gzb-text-dim); }
.gzb-camp-prizes-head span strong { color:#f1c40f; }
.gzb-camp-prizes { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.5rem; }
.gzb-camp-prize-tile { background:var(--gzb-bg3); border:1px solid var(--gzb-bg4); border-radius:10px; padding:.4rem; text-align:center; overflow:hidden; min-width:0; }
.gzb-camp-prize-tile img { width:100%; height:58px; object-fit:cover; border-radius:6px; background:var(--gzb-bg4); display:block; }
.gzb-camp-prize-tile .cpt-noimg { width:100%; height:58px; border-radius:6px; background:var(--gzb-bg4); display:flex; align-items:center; justify-content:center; font-size:1.6rem; }
.gzb-camp-prize-tile .cpt-pl { font-size:.62rem; font-weight:700; color:#f1c40f; text-transform:uppercase; letter-spacing:.04em; margin-top:.3rem; }
.gzb-camp-prize-tile .cpt-pv { font-size:.72rem; color:#fff; line-height:1.2; margin-top:.1rem; word-break:break-word; }
.gzb-camp-soon { font-size:.92rem; font-weight:600; color:#fff; background:rgba(52,152,219,.12); border:1px solid rgba(52,152,219,.3); border-radius:9px; padding:.55rem .8rem; text-align:center; }
@media(max-width:600px){ .gzb-camp-card{ gap:.8rem; padding:.9rem; } .gzb-camp-media{ width:80px; } .gzb-camp-media img{ width:80px; height:80px; } .gzb-camp-title{ font-size:1.45rem; } .gzb-camp-prizes{ grid-template-columns:repeat(3,minmax(0,1fr)); } .gzb-camp-prize-tile img{ height:66px; object-fit:contain; } }
.gzb-camp-wrap{ margin-bottom:1.5rem; max-width:520px; margin-left:auto; margin-right:auto; }
.gzb-camp-track{ display:flex; gap:1rem; overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain; scrollbar-width:none; -ms-overflow-style:none; }
.gzb-camp-track::-webkit-scrollbar{ display:none; }
.gzb-camp-track > .gzb-camp-card{ min-width:100%; max-width:100%; flex-shrink:0; scroll-snap-align:start; scroll-snap-stop:always; margin-bottom:0; }
.gzb-camp-dots{ display:flex; justify-content:center; gap:.45rem; margin-top:.7rem; }
.gzb-camp-dot{ width:8px; height:8px; border-radius:50%; border:none; background:var(--gzb-bg4); cursor:pointer; padding:0; transition:all .2s; }
.gzb-camp-dot.on{ background:#f1c40f; width:20px; border-radius:4px; }

/* ── CAMPAIGN AWARDS (profile) ───────────────────────────────── */
.gzb-awards-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:1rem; margin-bottom:1.5rem; }
.gzb-award-card{ display:flex; gap:.85rem; align-items:center; background:linear-gradient(120deg,rgba(241,196,15,.12),var(--gzb-bg2) 60%); border:1px solid rgba(241,196,15,.35); border-radius:12px; padding:.85rem 1rem; }
.gzb-award-medal{ font-size:1.9rem; line-height:1; flex-shrink:0; }
.gzb-award-img{ width:46px; height:46px; border-radius:8px; object-fit:cover; background:var(--gzb-bg3); flex-shrink:0; }
.gzb-award-info{ min-width:0; }
.gzb-award-place{ font-size:.66rem; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:#f1c40f; }
.gzb-award-name{ font-family:'Bebas Neue'; font-size:1.05rem; color:#fff; line-height:1.1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gzb-award-prize{ font-size:.74rem; color:var(--gzb-text-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── GAME GRID ───────────────────────────────────────────────── */
.gzb-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
}
/* Tablet / small laptop: 3 across */
@media (max-width: 900px) {
  .gzb-grid { grid-template-columns: repeat(3, 1fr); gap: .75rem; }
}
/* Mobile: 2 across (never collapse to 1 — keeps the page short) */
@media (max-width: 560px) {
  .gzb-grid { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
}
.gzb-card {
  background: var(--gzb-bg3);
  background: color-mix(in srgb, var(--gzb-nav-bg) 88%, #fff);   /* lifted "panel" off the page bg */
  border: 1px solid var(--gzb-bg4);
  border: 1px solid color-mix(in srgb, var(--gzb-nav-bg) 72%, #fff);
  border-radius: 12px; overflow: hidden; transition: all .2s; display: block;
  box-shadow: 0 3px 12px rgba(0,0,0,.4);
}
.gzb-card:hover { transform: translateY(-3px); border-color: var(--gzb-primary); box-shadow: 0 8px 24px rgba(0,0,0,.4); }
.gzb-card-thumb { width: 100%; aspect-ratio: 1; object-fit: cover; background: var(--gzb-bg3); }
.gzb-card-ph { width: 100%; aspect-ratio: 1; display: flex; align-items: center; justify-content: center; font-size: 2rem; background: var(--gzb-bg3); }
.gzb-card-body { padding: .6rem .75rem .8rem; }
.gzb-card-title { font-size: .9rem; font-weight: 600; color: var(--gzb-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gzb-card-cat { font-size: .68rem; color: var(--gzb-text-dim); text-transform: uppercase; letter-spacing: .06em; margin-top: 2px; }
/* Featured games — same responsive grid as the main games grid */
.gzb-feat-scroll {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
}
@media (max-width: 900px) {
  .gzb-feat-scroll { grid-template-columns: repeat(3, 1fr); gap: .75rem; }
}
@media (max-width: 560px) {
  .gzb-feat-scroll { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
}
/* Hero banner carousel (games-table featured_carousel) */
.gzb-carousel { position: relative; border-radius: 14px; overflow: hidden; border: 1px solid var(--gzb-bg4); }
.gzb-carousel-track { display: flex; transition: transform .5s ease; }
.gzb-carousel-slide { flex: 0 0 100%; display: block; position: relative; }
.gzb-carousel-slide img { width: 100%; display: block; object-fit: cover; }
.gzb-carousel-dots { position: absolute; left: 0; right: 0; bottom: .7rem; display: flex; justify-content: center; gap: 7px; }
.gzb-carousel-dot { width: 9px; height: 9px; border-radius: 50%; border: none; background: rgba(255,255,255,.45); cursor: pointer; padding: 0; transition: background .2s, transform .2s; }
.gzb-carousel-dot.active { background: #fff; transform: scale(1.25); }
.gzb-banner-cap { position: absolute; left: 0; bottom: 0; right: 0;
  background: linear-gradient(transparent, rgba(0,0,0,.75)); color: #fff;
  font-weight: 700; font-size: 1.05rem; padding: 1.5rem 1.1rem 1.6rem; }
/* Activity feed */
.gzb-feed { background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4); border-radius: 12px; overflow: hidden; }
.gzb-feed-row { display: flex; align-items: center; gap: .75rem; padding: .7rem 1rem; border-bottom: 1px solid var(--gzb-bg3); text-decoration: none; transition: background .15s; }
.gzb-feed-row:last-child { border-bottom: none; }
.gzb-feed-row:hover { background: var(--gzb-bg3); }
.gzb-feed-av { width: 34px; height: 34px; border-radius: 50%; background: var(--gzb-bg3); display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0; }
.gzb-feed-mid { flex: 1; min-width: 0; }
.gzb-feed-nm { font-weight: 600; color: var(--gzb-text); font-size: .9rem; }
.gzb-feed-game { font-size: .74rem; color: var(--gzb-text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gzb-feed-sc { font-family: 'DM Mono', monospace; color: var(--gzb-text); font-weight: 600; flex-shrink: 0; }
.gzb-feed-pb { display: inline-block; background: var(--gzb-primary); color: #fff; font-size: .58rem; font-weight: 700; padding: 1px 5px; border-radius: 4px; margin-left: 6px; vertical-align: middle; flex-shrink: 0; }
.gzb-feed-game-cell { min-width: 0; font-size: .8rem; color: var(--gzb-text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Recent-feed rows inside the leaderboard: Player | Game | Score */
.gzb-lb-row.gzb-feed-lb { grid-template-columns: 1.4fr 1fr 90px; }
.gzb-lb-row.hdr.gzb-feed-hdr { grid-template-columns: 1.4fr 1fr 90px; }

/* ── CATEGORY FILTER ─────────────────────────────────────────── */
.gzb-filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.gzb-filter {
  padding: 6px 14px; border-radius: 999px; cursor: pointer;
  background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4);
  color: var(--gzb-text-dim); font-size: .8rem; font-family: inherit; transition: all .2s;
}
.gzb-filter:hover, .gzb-filter.active { background: var(--gzb-primary); border-color: var(--gzb-primary); color: #fff; }
.gzb-cat-select { display: none; width: 100%; padding: 10px 12px; margin-bottom: 1.25rem;
  background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4); border-radius: 8px;
  color: var(--gzb-text); font-family: inherit; font-size: .9rem; outline: none; }
.gzb-cat-select:focus { border-color: var(--gzb-primary); }
@media (max-width: 560px) {
  .gzb-filters { display: none; }
  .gzb-cat-select { display: block; }
}

/* ── LEADERBOARD ─────────────────────────────────────────────── */
.gzb-lb { background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4); border-radius: 12px; overflow: hidden; }
.gzb-lb-row { display: grid; grid-template-columns: 50px 1fr 110px; padding: .65rem 1rem; align-items: center; border-bottom: 1px solid var(--gzb-bg3); font-size: .88rem; }
.gzb-lb-row:last-child { border-bottom: none; }
.gzb-lb-row.hdr { font-size: .7rem; color: var(--gzb-text-dim); text-transform: uppercase; letter-spacing: .07em; background: var(--gzb-bg3); }
.gzb-lb-rnk { font-family: 'Bebas Neue'; font-size: 1.1rem; color: var(--gzb-text-dim); }
.gzb-lb-rnk.g1 { color: #ffd700; } .gzb-lb-rnk.g2 { color: #c0c0c0; } .gzb-lb-rnk.g3 { color: #cd7f32; }
.gzb-lb-pl { display: flex; align-items: center; gap: 8px; min-width: 0; padding-right: 10px; }
.gzb-lb-av { width: 26px; height: 26px; border-radius: 50%; background: var(--gzb-bg4); display: flex; align-items: center; justify-content: center; font-size: .8rem; flex-shrink: 0; }
.gzb-lb-nm { font-weight: 500; color: var(--gzb-text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gzb-lb-you { font-size: .65rem; color: var(--gzb-primary); margin-left: 4px; font-weight: 700; flex-shrink: 0; white-space: nowrap; }
/* PB / YOU badges sit as flex siblings of the name (never wrap to a 2nd line);
   the name truncates with ellipsis instead. gap handles spacing, so drop the inline margin. */
.gzb-lb-pl .gzb-feed-pb, .gzb-lb-pl .gzb-lb-you { margin-left: 0; }
.gzb-lb-sc { font-family: monospace; color: var(--gzb-text); text-align: right; }
.gzb-lb-sc.hl { color: var(--gzb-primary); }

/* ── MODAL ───────────────────────────────────────────────────── */
.gzb-overlay { display: none; position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,.85); backdrop-filter: blur(4px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
.gzb-overlay.open { display: flex; align-items: flex-start; justify-content: center; }
.gzb-modal { background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4); border-radius: 16px; padding: 2rem; width: 100%; max-width: 400px; position: relative; margin: 1.5rem auto; }
.gzb-modal h2 { font-size: 1.8rem; color: #fff; }
.gzb-mclose { z-index: 2; }
@media (max-width: 480px) { .gzb-modal { padding: 1.4rem 1.2rem; margin: .75rem auto; } .gzb-modal h2 { font-size: 1.45rem; } .gzb-modal-sub { margin-bottom: .9rem; } .gzb-tabs { margin-bottom: .9rem; } .gzb-fg { margin-bottom: .7rem; } }
.gzb-modal-sub { font-size: .85rem; color: var(--gzb-text-dim); margin-bottom: 1.5rem; }
.gzb-mclose { position: absolute; top: .9rem; right: .9rem; background: var(--gzb-bg3); border: none; color: var(--gzb-text-dim); width: 30px; height: 30px; border-radius: 7px; cursor: pointer; }
.gzb-tabs { display: flex; gap: 4px; background: var(--gzb-bg3); border-radius: 8px; padding: 3px; margin-bottom: 1.5rem; }
.gzb-tab { flex: 1; padding: 7px; border-radius: 6px; border: none; background: transparent; color: var(--gzb-text-dim); cursor: pointer; font-family: inherit; font-size: .85rem; }
.gzb-tab.on { background: var(--gzb-bg); color: #fff; }
.gzb-fg { margin-bottom: .6rem; }
.gzb-fg label { display: block; font-size: .78rem; color: var(--gzb-text-dim); margin-bottom: 3px; }
.gzb-fg input { width: 100%; padding: 9px 13px; background: var(--gzb-bg3); border: 1px solid var(--gzb-bg4); border-radius: 8px; color: var(--gzb-text); font-family: inherit; font-size: .89rem; outline: none; }
.gzb-fg input:focus { border-color: var(--gzb-primary); }
.gzb-av-row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-top: 7px; }
.gzb-av-opt { width: 38px; height: 38px; border-radius: 50%; border: 2px solid var(--gzb-bg4); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 1.05rem; }
.gzb-av-opt.sel { border-color: var(--gzb-primary); }
.gzb-un-row { display: flex; gap: .5rem; align-items: stretch; }
.gzb-un-row input { flex: 1; }
.gzb-av-btn { flex-shrink: 0; width: 44px; border: 1px solid var(--gzb-bg4); background: var(--gzb-bg3); border-radius: 8px; font-size: 1.25rem; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: border-color .2s; }
.gzb-av-btn:hover { border-color: var(--gzb-primary); }
.gzb-err { color: #e74c3c; font-size: .8rem; margin-top: 5px; display: none; }
.gzb-err.on { display: block; }
.gzb-full-btn { width: 100%; margin-top: .5rem; padding: 11px; border-radius: 8px; border: none; background: var(--gzb-primary); color: #fff; font-family: inherit; font-size: .9rem; font-weight: 700; cursor: pointer; }

/* ── TOAST ───────────────────────────────────────────────────── */
.gzb-toast { position: fixed; bottom: 1.5rem; right: 1.5rem; background: var(--gzb-bg2); border: 1px solid var(--gzb-bg4); border-radius: 10px; padding: 11px 16px; font-size: .85rem; color: var(--gzb-text); z-index: 400; transform: translateY(16px); opacity: 0; transition: all .3s; pointer-events: none; max-width: 280px; }
.gzb-toast.on { opacity: 1; transform: translateY(0); }

/* ── FOOTER ──────────────────────────────────────────────────── */
.gzb-footer { background: var(--gzb-footer-bg); border-top: 1px solid var(--gzb-bg4); padding: 2rem 1rem; text-align: center; color: var(--gzb-text-dim); font-size: .8rem; margin-top: 2rem; }
.gzb-footer a { color: var(--gzb-primary); }

/* ── UTIL ────────────────────────────────────────────────────── */
.gzb-empty { padding: 2rem; text-align: center; color: var(--gzb-text-dim); }
.gzb-loading { padding: 2rem; text-align: center; color: var(--gzb-text-dim); }
