:root{
  --blue:#1e5eff;
  --blue-soft:#eef3ff;
  --text:#1f2937;
  --muted:#6b7280;
}

*{box-sizing:border-box;font-family:system-ui,-apple-system,sans-serif}
html, body{
  height:100%;
  overflow-y:auto;
  overflow-x:hidden;
}

body{
  margin:0;
  background:#0b1220;
  display:flex;
  justify-content:center;
  align-items:flex-start;
}

/* layar hp */
.app{
  width:100%;
  max-width:420px;
  min-height:100vh;
  background:#f7f9ff;
}

/* header */
.header{
  background:var(--blue);
  color:#fff;
  padding:10px;
  padding-bottom:50px;
  border-bottom-left-radius: 26px;
  border-bottom-right-radius: 26px;
}
.header-top{
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.menu{font-size:22px;}
.trx{
  background:#ffffff33;
  padding:6px 12px;
  border-radius:20px;
  font-size:13px;
}

.saldo-card{
  background:#fff;
  margin:-50px 16px 16px;
  border-radius:16px;
  padding:16px;
  box-shadow:0 10px 30px rgba(0,0,0,.08);
}
.saldo-top{
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.muted{color:var(--muted);font-size:12px;}
.saldo{font-size:22px;font-weight:700;color:var(--blue);}
.qris{
  background:#ffb703;
  padding:10px;
  border-radius:12px;
  color:#fff;
  font-weight:700;
}

.shortcuts{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  text-align:center;
  margin-top:14px;
}

/* tombol refresh – cocok untuk card putih */
.refresh-saldo{
  border:1px solid #e5e7eb;
  background:#eef2ff;
  color:#3467eb;
  border-radius:999px;
  width:36px;
  height:36px;
  cursor:pointer;
  font-size:16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}

.refresh-saldo:hover{
  box-shadow:0 4px 12px rgba(52,103,235,.25);
}

/* muter saat loading (tombol tetap tampil) */
.refresh-saldo.loading{
  pointer-events:none;
  opacity:.85;
  animation: spin .8s linear infinite;
}

@keyframes spin{
  from{ transform: rotate(0deg); }
  to{ transform: rotate(360deg); }
}

/* animasi saldo saat berubah */
#saldo-text.pop{
  animation: pop .35s ease;
}

@keyframes pop{
  0%{ transform: scale(1); }
  60%{ transform: scale(1.08); }
  100%{ transform: scale(1); }
}

.shortcut{font-size:13px;}
.icon{
  width:46px;
  height:46px;
  border-radius:50%;
  background:var(--blue-soft);
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0 auto 6px;
  font-size:18px;
  color:var(--blue);
}

.banner{margin:16px;border-radius:14px;overflow:hidden;}
.banner img{width:100%;display:block;}

.section{padding:0 16px;}
.section h3{margin:12px 0;font-size:16px;}
.ok{color:#16a34a}
.grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:12px;
}
.product{
  background:#fff;
  border-radius:14px;
  padding:10px;
  text-align:center;
  font-size:12px;
  box-shadow:0 4px 12px rgba(0,0,0,.06);
}

.bottom{
  position: fixed;
  bottom: 0;

  /* biar center mengikuti "layar hp" */
  left: 50%;
  transform: translateX(-50%);

  width: 100%;
  max-width: 420px;

  background:#fff;
  display:grid;
  grid-template-columns:repeat(5,1fr);
  border-top:1px solid #e5e7eb;
  z-index: 999;
}

.logo-link{
  display:flex;
  align-items:center;
  text-decoration:none;
}
.logo-img{
  width:200px;
  height:60px;
  object-fit:contain;
}
.logo-link:active,
.logo-wrap:active{
  opacity:.7;
  transform:scale(.96);
}

.carousel{
  margin:16px;
  border-radius:14px;
  overflow:hidden;
  position:relative;
  background:#fff;
}

.carousel-track{
  display:flex;
  transition:transform .35s ease;
  will-change:transform;
}

.carousel-slide{
  min-width:100%;
}

.carousel-slide img{
  width:100%;
  height:auto;
  display:block;
}

.carousel-btn{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:34px;
  height:34px;
  border:none;
  border-radius:999px;
  background:rgba(0,0,0,.35);
  color:#fff;
  font-size:22px;
  line-height:0;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:5;
}

.carousel-btn.prev{left:10px;}
.carousel-btn.next{right:10px;}

.carousel-dots{
  position:absolute;
  left:0; right:0; bottom:10px;
  display:flex;
  justify-content:center;
  gap:6px;
  z-index:6;
}

.carousel-dots .dot{
  width:7px;height:7px;
  border-radius:999px;
  border:none;
  background:rgba(255,255,255,.5);
  cursor:pointer;
  padding:0;
}

.carousel-dots .dot.active{
  background:#fff;
  width:18px;
}


.nav{
  text-align:center;
  padding:10px 0;
  font-size:11px;
  color:var(--muted);
  text-decoration:none;
}
.nav.active{color:var(--blue);font-weight:600;}

@media(min-width:768px){
  .app{
    margin:20px 0;
    border-radius:20px;
    overflow:hidden;
    box-shadow:0 20px 60px rgba(0,0,0,.45);
  }
}
