/* =========================
   RTP CLIENT - CLEAN CSS
   ========================= */

:root{
  --bg0:#070a12;
  --bg1:#0b1220;
  --card1: rgba(15,23,42,.72);
  --card2: rgba(2,6,23,.40);
  --line: rgba(148,163,184,.16);
  --text:#e5e7eb;
  --muted: rgba(226,232,240,.78);

  --accent:#38bdf8;
  --accent2:#6366f1;

  --shadow: 0 16px 44px rgba(0,0,0,.42);
  --radius: 18px;

  --navH: 76px; /* untuk padding bawah body */
}

/* ===== Base ===== */
*{ box-sizing:border-box; }
html, body { height:100%; }
body{
  margin:0;
  color: var(--text);
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:
    radial-gradient(1200px 600px at 20% -10%, rgba(56,189,248,.22), transparent 60%),
    radial-gradient(900px 500px at 90% 10%, rgba(99,102,241,.20), transparent 60%),
    radial-gradient(900px 500px at 60% 110%, rgba(34,197,94,.10), transparent 65%),
    linear-gradient(180deg, var(--bg0), var(--bg1));
  padding-bottom: var(--navH);
  -webkit-font-smoothing: antialiased;
}

/* ===== Hero (logo + title + buttons) ===== */
.hero{
  width: min(980px, 92vw);
  margin: 18px auto 10px;
  padding: 16px 16px 14px;
  border-radius: var(--radius);
  background: linear-gradient(135deg, var(--card1), rgba(2,6,23,.55));
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
  backdrop-filter: blur(10px);
  position: relative;
  overflow:hidden;
}
.hero::before{
  content:"";
  position:absolute; inset:-2px;
  background:
    radial-gradient(700px 250px at 20% 20%, rgba(56,189,248,.18), transparent 60%),
    radial-gradient(750px 260px at 90% 30%, rgba(99,102,241,.16), transparent 60%);
  pointer-events:none;
}
.hero-inner{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 14px;
  flex-wrap:wrap;
}
.brand{
  display:flex;
  align-items:center;
  gap: 12px;
  min-width: 240px;
}
.logo-banner{
  width: 64px;
  height: 64px;
  object-fit: cover;
  border-radius: 14px;
  border: 1px solid rgba(148,163,184,.18);
  box-shadow: 0 12px 22px rgba(0,0,0,.35);
  background: rgba(2,6,23,.5);
}
.brand-title{
  display:flex;
  flex-direction:column;
  line-height:1.15;
}
.brand-title b{
  font-size: 1.05rem;
  letter-spacing:.2px;
}
.brand-title span{
  font-size:.88rem;
  color: var(--muted);
}

/* Buttons (login/daftar) */
.auth-buttons{
  display:flex;
  gap: 10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.btn{
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding: 10px 14px;
  border-radius: 12px;
  font-weight: 900;
  letter-spacing:.2px;
  border: 1px solid rgba(148,163,184,.16);
  background: rgba(15,23,42,.55);
  color: var(--text);
  box-shadow: 0 10px 22px rgba(0,0,0,.25);
  backdrop-filter: blur(10px);
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease, background .18s ease;
  user-select:none;
  white-space:nowrap;
}
.btn:hover{
  transform: translateY(-1px);
  box-shadow: 0 16px 30px rgba(0,0,0,.35);
  background: rgba(15,23,42,.75);
}
.btn.primary{
  border: none;
  color:#06121f;
  background: linear-gradient(135deg, rgba(56,189,248,.95), rgba(99,102,241,.95));
}
.btn.primary:hover{ filter: brightness(1.06); }

/* Hero badges */
.hero-badges{
  position:relative;
  margin-top: 10px;
  display:flex;
  gap: 8px;
  flex-wrap:wrap;
  align-items:center;
}
.badge{
  display:inline-flex;
  gap:8px;
  align-items:center;
  padding: 8px 10px;
  border-radius: 999px;
  border: 1px solid rgba(148,163,184,.14);
  background: rgba(2,6,23,.35);
  font-size: .85rem;
  color: rgba(226,232,240,.85);
}
.dot{
  width:10px;height:10px;border-radius:50%;
  background: #22c55e;
  box-shadow: 0 0 0 4px rgba(34,197,94,.12);
}

/* ===== Sticky filter bar ===== */
.top-bar{
  position: sticky;
  top: 0;
  z-index: 9990;
  padding: 10px 0;
  backdrop-filter: blur(10px);
  background: linear-gradient(180deg, rgba(7,10,18,.75), rgba(7,10,18,.35));
  border-bottom: 1px solid rgba(30,41,59,.35);
}
.filter-wrap{
  width: min(980px, 92vw);
  margin: 0 auto;
}
.filter-bar{
  display:flex;
  gap: 10px;
  align-items:center;
  padding: 12px;
  border-radius: 16px;
  background: rgba(15,23,42,.55);
  border: 1px solid rgba(148,163,184,.15);
  box-shadow: 0 10px 22px rgba(0,0,0,.25);
}
#searchInput, #providerFilter{
  height: 44px;
  border-radius: 12px;
  border: 1px solid rgba(148,163,184,.16);
  background: rgba(2,6,23,.35);
  color: var(--text);
  outline:none;
  padding: 0 12px;
  transition: border .15s ease, box-shadow .15s ease;
}
#searchInput{
  flex: 1;
  min-width: 160px;
}
#providerFilter{
  width: min(280px, 40vw);
}
#searchInput:focus, #providerFilter:focus{
  border-color: rgba(56,189,248,.55);
  box-shadow: 0 0 0 4px rgba(56,189,248,.12);
}

/* ===== Main grid container ===== */
#gameGrid{
  width: min(980px, 92vw);
  margin: 14px auto 0;
  display:grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
@media (min-width: 560px){
  #gameGrid{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 820px){
  #gameGrid{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ===== Card ===== */
.card{
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid rgba(148,163,184,.14);
  background: linear-gradient(135deg, rgba(15,23,42,.70), rgba(2,6,23,.40));
  box-shadow: 0 14px 32px rgba(0,0,0,.35);
  backdrop-filter: blur(10px);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.card:hover{
  transform: translateY(-3px);
  box-shadow: 0 22px 50px rgba(0,0,0,.45);
  border-color: rgba(56,189,248,.28);
}
.card::after{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(420px 200px at 50% 20%, rgba(56,189,248,.08), transparent 60%);
  pointer-events:none;
}
.card img{
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  filter: saturate(1.05) contrast(1.05);
}

/* Card info */
.card .info{
  padding: 12px 12px 10px;
  text-align:left;
}
.card .info strong{
  display:block;
  font-size: 0.95rem;
  letter-spacing:.2px;
  margin-bottom: 4px;
}
.card .info small{
  color: rgba(226,232,240,.75);
  font-size: .82rem;
}

/* HOT badge */
.hot-label{
  position:absolute;
  top: 10px;
  left: 10px;
  z-index: 5;
  padding: 6px 10px;
  font-weight: 900;
  font-size: .78rem;
  border-radius: 999px;
  color: #06121f;
  background: linear-gradient(135deg, #ffea00, #ff6b00);
  box-shadow: 0 10px 24px rgba(255,153,0,.35);
}

/* RTP circle container */
.circle-container{
  position:absolute;
  right: 10px;
  top: 10px;
  z-index: 6;
  width: 44px;
  height: 44px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius: 14px;
  background: rgba(2,6,23,.35);
  border: 1px solid rgba(148,163,184,.16);
  backdrop-filter: blur(10px);
  box-shadow: 0 10px 18px rgba(0,0,0,.25);
}
.circular-chart{
  width: 40px;
  height: 40px;
  display:block;
}
.circular-chart.hot{
  filter: drop-shadow(0 0 10px rgba(255,183,0,.55));
}
.circle-bg{
  fill: none;
  stroke: rgba(148,163,184,.18);
  stroke-width: 3.2;
}
.circle{
  fill: none;
  stroke-width: 3.2;
  stroke-linecap: round;
  transform: rotate(-90deg);
  transform-origin: center;
  transition: stroke-dasharray .4s ease;
}
.percentage{
  fill: #fff;
  font-size: 0.62em;
  font-weight: 600;
  text-anchor: middle;
  dominant-baseline: central;
  alignment-baseline: middle;
  text-shadow: 0 0 6px rgba(0,0,0,.8);
}

/* ===== Spin Pattern (collapsible) ===== */
.spin-pattern{
  padding: 10px 12px 14px;
  border-top: 1px solid rgba(148,163,184,.10);
  background: rgba(2,6,23,.20);
}
.spin-toggle{
  width: 100%;
  background: rgba(15,23,42,.45);
  border: 1px solid rgba(148,163,184,.14);
  color: rgba(226,232,240,.92);
  border-radius: 12px;
  padding: 10px 12px;
  cursor: pointer;
  font-weight: 900;
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 10px;
}
.spin-toggle:hover{ border-color: rgba(56,189,248,.25); }
.spin-body{ margin-top:10px; display:none; }
.spin-body.open{ display:block; }
.spin-body ul{
  margin:0;
  padding-left:18px;
  font-size:.86rem;
  color: rgba(226,232,240,.88);
}

/* ===== Infinite loader text ===== */
/* Loader jadi floating di atas navbar */
#infiniteLoader{
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--navH) + 25px);
  z-index: 99998;

  width: auto;
  margin: 0;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(15,23,42,.78);
  border: 1px solid rgba(148,163,184,.16);
  box-shadow: 0 14px 34px rgba(0,0,0,.45);
  backdrop-filter: blur(10px);
}





/* ===== Bottom navbar ===== */
.bottom-navbar{
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 10px;
  width: min(560px, 92vw);
  display: flex;
  justify-content: space-around;
  align-items: center;
  gap: 6px;
  padding: 10px 10px;
  border-radius: 18px;
  background: rgba(15,23,42,.72);
  border: 1px solid rgba(148,163,184,.16);
  box-shadow: var(--shadow);
  backdrop-filter: blur(12px);
  z-index: 9999;
}
.bottom-navbar .nav-item{
  flex: 1;
  text-align: center;
  text-decoration:none;
  color: rgba(226,232,240,.82);
  font-size: 13px;
  font-weight: 800;
  padding: 10px 6px;
  border-radius: 14px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap: 6px;
  transition: transform .15s ease, background .15s ease, color .15s ease;
}
.bottom-navbar .nav-item:hover{
  background: rgba(56,189,248,.12);
  color: #fff;
  transform: translateY(-1px);
}
.bottom-navbar .nav-item:active,
.bottom-navbar .nav-item.active{
  color: #ffe600;
}
.bottom-navbar .nav-icon svg{
  display:block;
  height: 26px;
  width: 26px;
}
.bottom-navbar .nav-label{
  font-size: 12.5px;
  margin-top: -2px;
  letter-spacing: .01em;
}

/* ===== Spinner (fallback) ===== */
.spinner{
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 4px solid rgba(148,163,184,.20);
  border-top-color: rgba(56,189,248,.95);
  margin: 0 auto 10px;
  animation: spin 0.9s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ===== Skeleton Mode (fix biar ngikut grid & full width) ===== */
#gameGrid.skeleton-mode{
  display:grid !important;
}
.card.skeleton{
  position: relative;
  overflow:hidden;
}
.card.skeleton::after{ display:none; } /* stop overlay glow biar skeleton clean */

.sk-img{
  width:100%;
  aspect-ratio: 1/1;
  background: rgba(148,163,184,.12);
}
.sk-line{
  height: 12px;
  border-radius: 999px;
  background: rgba(148,163,184,.14);
  margin-top: 8px;
}
.sk-line.w80{ width: 80%; }
.sk-line.w55{ width: 55%; }

.sk-circle{
  position:absolute;
  top: 10px; right: 10px;
  width: 44px; height: 44px;
  border-radius: 14px;
  background: rgba(148,163,184,.12);
  border: 1px solid rgba(148,163,184,.14);
}

.card.skeleton::before{
  content:"";
  position:absolute; inset:-120px;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.12) 50%, transparent 100%);
  animation: sk 1.2s linear infinite;
  transform: rotate(12deg);
}
@keyframes sk{
  from{ transform: translateX(-45%) rotate(12deg); }
  to{ transform: translateX(45%) rotate(12deg); }
}
/* ====== Brand vertical (logo atas + title bawah) ====== */
.brand-vertical{
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 10px;
  min-width: 260px;
}

.brand-vertical .logo-banner{
  width: 240px;
  height: 64px;
  padding: 8px;
  border-radius: 18px;
  background: rgba(0,0,0,.25);
  border: 1px solid rgba(148,163,184,.18);
  object-fit: contain; /* penting utk logo gif */
  box-shadow: 0 14px 26px rgba(0,0,0,.45);
}

.brand-vertical .brand-title b{
  font-size: 1.08rem;
  letter-spacing: .4px;
  line-height: 1.15;
}

.brand-vertical .brand-title span{
  margin-top: 4px;
  font-size: .88rem;
  color: rgba(226,232,240,.78);
}

/* Desktop layout: brand kiri, tombol kanan */
.hero-inner{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 16px;
}

/* Mobile: tombol turun full */
@media (max-width: 560px){
  .hero-inner{
    flex-direction: column;
    align-items: stretch;
  }
  .auth-buttons{
    justify-content: stretch;
  }
  .auth-buttons .btn{
    flex: 1;
  }
}
/* ===== Scroll Top Button ===== */
#scrollTopBtn{
  position: fixed;
  right: 18px;
  bottom: calc(var(--navH) + 50px); /* aman di atas navbar */
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: rgba(15,23,42,.70);
  border: 1px solid rgba(148,163,184,.18);
  box-shadow: 0 14px 34px rgba(0,0,0,.45);
  backdrop-filter: blur(10px);
  z-index: 99999;

  display:none;
  align-items:center;
  justify-content:center;
  opacity:0;
  pointer-events:none;
  transition: transform .18s ease, opacity .18s ease, background .18s ease;
}

#scrollTopBtn.show{
  display:flex;
  opacity:1;
  pointer-events:auto;
}

#scrollTopBtn:hover{
  transform: translateY(-2px);
  background: rgba(15,23,42,.85);
}
/* ===== Content wrapper (FIX) ===== */
.content{
  width: min(980px, 92vw);
  margin: 14px auto 0;
}

/* ===== Load More (FIX center) ===== */
#loadMoreBtn{
  display: none;              /* default: hidden karena kita pakai infinite scroll */
  margin: 26px auto 0;        /* center */
  padding: 12px 30px;
  font-size: 1.02rem;
  border-radius: 14px;
  border: 1px solid rgba(148,163,184,.16);
  background: rgba(15,23,42,.55);
  color: var(--text);
  cursor:pointer;
  font-weight: 900;
  box-shadow: 0 12px 26px rgba(0,0,0,.28);
  backdrop-filter: blur(10px);
}
#loadMoreBtn:hover{
  background: rgba(15,23,42,.75);
}
/* ===== SAFE AREA bawah biar card terakhir gak ketiban navbar ===== */
:root{
  --safeBottom: calc(var(--navH) + 28px);
}

#gameGrid{
  padding-bottom: var(--safeBottom);
}

.content{
  padding-bottom: var(--safeBottom);
}

#scrollTopBtn{
  bottom: calc(var(--navH) + 28px) !important;
}
