* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
:root {
  --bg:#f6f7fb; --card:#fff; --text:#111; --muted:#7a7f8c;
  --blue:#2f6bff; --blue2:#4d7cff; --purple:#5b3ad8;
  --danger:#ff4d5a; --pink:#ff2d95; --radius:14px;
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --nav-h:62px;
}
html { scroll-behavior:smooth; }
body { font-family:'Segoe UI',system-ui,-apple-system,sans-serif; background:var(--bg); color:var(--text); line-height:1.5; padding-bottom:calc(var(--nav-h) + var(--safe-bottom)); }
.container { max-width:480px; margin:0 auto; padding:0 14px; }

/* ===== Top Header (white) ===== */
.topbar { background:#fff; position:sticky; top:0; z-index:100; box-shadow:0 1px 8px rgba(0,0,0,.05); }
.topbar-inner { max-width:480px; margin:0 auto; padding:12px 16px; display:flex; align-items:center; justify-content:space-between; }
.logo { display:flex; align-items:center; gap:6px; font-weight:800; font-size:1.3rem; color:var(--blue); }
.logo-text { color:var(--blue); }
.topbar-right { display:flex; align-items:center; gap:14px; }
.icon-btn { background:none; border:none; font-size:1.3rem; cursor:pointer; padding:4px; }
.btn-outline { background:#fff; color:var(--blue); border:1.5px solid var(--blue); padding:8px 18px; border-radius:24px; font-weight:700; font-size:.9rem; cursor:pointer; }
.btn-outline:active { background:#eef3ff; }

/* ===== Banner ===== */
.banner-wrap { max-width:480px; margin:14px auto 0; padding:0 14px; position:relative; }
.banner { border-radius:var(--radius); overflow:hidden; }
.banner-slide { min-height:170px; padding:20px; display:flex; position:relative; color:#fff; }
.banner-text { position:relative; z-index:2; flex:1; }
.banner-flash { display:inline-block; background:var(--danger); color:#fff; font-size:.68rem; font-weight:800; letter-spacing:1px; padding:4px 10px; border-radius:6px; margin-bottom:8px; }
.banner-text h2 { font-size:1.25rem; line-height:1.15; margin-bottom:5px; text-shadow:0 1px 6px rgba(0,0,0,.3); }
.banner-text p { font-size:.78rem; opacity:.9; margin-bottom:10px; }
.banner-price { font-size:.85rem; margin-bottom:10px; }
.banner-price b { font-size:1.05rem; }
.btn-banner { background:var(--danger); color:#fff; border:none; padding:9px 16px; border-radius:8px; font-weight:700; font-size:.8rem; cursor:pointer; box-shadow:0 4px 14px rgba(255,77,90,.4); }
.btn-banner:active { transform:scale(.97); }
.banner-art { font-size:5rem; display:flex; align-items:center; position:relative; z-index:2; text-shadow:0 4px 20px rgba(0,0,0,.4); }
.dots { display:flex; justify-content:center; gap:6px; margin-top:10px; }
.dot { width:7px; height:7px; border-radius:50%; background:#d5d7e0; }
.dot.active { background:var(--blue); width:20px; border-radius:4px; }

/* ===== Filter Bar ===== */
.filterbar { max-width:480px; margin:16px auto 0; padding:0 14px; display:flex; gap:10px; overflow-x:auto; scrollbar-width:none; }
.filterbar::-webkit-scrollbar { display:none; }
.filter-chip { background:#fff; color:var(--text); border:1px solid #e6e8f0; padding:9px 18px; border-radius:30px; font-weight:600; font-size:.88rem; cursor:pointer; white-space:nowrap; }
.filter-chip.active { background:var(--blue); color:#fff; border-color:var(--blue); }

/* ===== Section ===== */
.section-title { font-size:1.2rem; margin:22px 0 14px; font-weight:800; }

/* ===== Product Grid (cards) ===== */
.grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
.card { background:var(--card); border-radius:var(--radius); overflow:hidden; position:relative; box-shadow:0 2px 10px rgba(0,0,0,.05); cursor:pointer; }
.card:active { transform:scale(.98); }
.cover { position:relative; width:100%; aspect-ratio:1/1; }
.cover-img { width:100%; height:100%; object-fit:cover; display:block; background:linear-gradient(135deg,#6b3be0,#2f6bff); }
.cover-fallback { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:3.2rem; }
.discount { position:absolute; top:8px; left:8px; background:var(--danger); color:#fff; font-size:.7rem; font-weight:800; padding:3px 7px; border-radius:6px; }
.cashback { position:absolute; top:8px; right:8px; background:var(--pink); color:#fff; font-size:.62rem; font-weight:800; padding:3px 7px; border-radius:20px; }
.card-body { padding:10px 12px 12px; }
.game-name { font-weight:700; font-size:.92rem; line-height:1.3; }
.game-sub { color:var(--muted); font-size:.74rem; margin-top:2px; }

/* ===== Bottom Nav ===== */
.bottomnav { position:fixed; left:0; right:0; bottom:0; height:calc(var(--nav-h) + var(--safe-bottom)); padding-bottom:var(--safe-bottom); background:#fff; border-top:1px solid #eef0f6; display:flex; z-index:150; box-shadow:0 -2px 12px rgba(0,0,0,.04); }
.nav-item { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:var(--muted); font-size:.67rem; font-weight:600; text-decoration:none; cursor:pointer; }
.nav-item .ni-ic { font-size:1.25rem; }
.nav-item.active { color:var(--blue); }

/* ===== Modal ===== */
.modal { display:none; position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:200; align-items:flex-end; justify-content:center; }
.modal.show { display:flex; }
.modal-content { background:#fff; border-radius:20px 20px 0 0; max-width:480px; width:100%; padding:24px 20px calc(20px + var(--safe-bottom)); position:relative; max-height:88vh; overflow-y:auto; animation:slideUp .25s ease; color:var(--text); }
@keyframes slideUp { from { transform:translateY(40px); opacity:.5; } to { transform:translateY(0); opacity:1; } }
.close { position:absolute; top:10px; right:16px; font-size:1.9rem; cursor:pointer; color:var(--muted); line-height:1; }
.modal-content h2 { margin-bottom:4px; font-size:1.25rem; }
.modal-prod { color:var(--muted); margin-bottom:16px; font-size:.9rem; }
.modal-content label { display:block; font-weight:700; font-size:.85rem; margin:14px 0 6px; }
.input { width:100%; background:#f3f4f9; border:1px solid #e2e4ee; color:var(--text); padding:13px 14px; border-radius:12px; font-size:1rem; outline:none; }
.input:focus { border-color:var(--blue); background:#fff; }
.price { font-weight:800; color:var(--danger); font-size:1.4rem; margin-top:16px; }
.btn-primary { display:inline-flex; align-items:center; justify-content:center; background:var(--blue); color:#fff; padding:14px; border-radius:14px; font-weight:700; border:none; cursor:pointer; font-size:1rem; width:100%; margin-top:14px; }
.btn-primary:active { filter:brightness(.95); }

/* ===== Desktop boost ===== */
@media (min-width:600px){
  .container, .topbar-inner, .banner-wrap, .filterbar { max-width:900px; }
  .grid { grid-template-columns:repeat(4,1fr); gap:16px; }
  .banner-slide { min-height:210px; }
}

/* ===== Banner Carousel (track) ===== */
.banner { overflow:hidden; }
.banner-track { display:flex; transition:transform .45s ease; }
.banner-slide { min-width:100%; }

/* ===== Bottom Nav active states ===== */
.nav-item.active { color:var(--blue); font-weight:700; }
