/* ==========================================================================
   PLANET88 — Design System
   Struktur: 1. Token  2. Base  3. Layout  4. Komponen  5. Header/Footer
             6. Hero & section  7. Kartu  8. Halaman detail  9. Overlay  10. Efek 3D  11. Responsive
   ========================================================================== */

/* 1. TOKEN ---------------------------------------------------------------- */
:root {
  --bg: #07090e;
  --bg-soft: #0b0e15;
  --surface: #10141d;
  --surface-2: #151a25;
  --surface-3: #1c2231;
  --line: rgba(148, 163, 184, .12);
  --line-strong: rgba(148, 163, 184, .24);
  --text: #eef1f7;
  --text-2: #c3cad8;
  --muted: #8a93a6;
  --primary: #7c5cff;
  --primary-hi: #9d87ff;
  --accent: #22d3ee;
  --grad: linear-gradient(135deg, #7c5cff 0%, #4f8bff 55%, #22d3ee 100%);
  --grad-text: linear-gradient(100deg, #b9a8ff 0%, #7cc7ff 50%, #5ee6f6 100%);
  --grad-hot: linear-gradient(135deg, #ff7a18 0%, #ff3d6e 100%);
  --success: #22c55e;
  --warn: #f5a524;
  --danger: #f43f5e;
  --gold: #fbbf24;
  --r-xs: 8px;
  --r-sm: 10px;
  --r: 14px;
  --r-lg: 20px;
  --r-xl: 28px;
  --shadow: 0 12px 32px -14px rgba(0, 0, 0, .7);
  --shadow-lg: 0 40px 80px -30px rgba(0, 0, 0, .85);
  --glow: 0 0 0 1px rgba(124, 92, 255, .4), 0 16px 48px -16px rgba(124, 92, 255, .55);
  --font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --display: "Chakra Petch", "Plus Jakarta Sans", system-ui, sans-serif;
  --header-h: 72px;
  --container: 1240px;
  --ease: cubic-bezier(.2, .8, .2, 1);
  color-scheme: dark;
}

/* 2. BASE ----------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0; min-height: 100vh; background: var(--bg); color: var(--text);
  font: 400 15px/1.65 var(--font); -webkit-font-smoothing: antialiased; overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: 0; padding: 0; }
h1, h2, h3, h4 { margin: 0; line-height: 1.2; font-weight: 700; letter-spacing: -.01em; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; }
::selection { background: rgba(124, 92, 255, .45); color: #fff; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 200; background: var(--primary); color: #fff; padding: 10px 14px; border-radius: 10px; }
.skip:focus { top: 12px; }
svg.i { width: 1.15em; height: 1.15em; flex: none; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
svg.i.fill { fill: currentColor; stroke: none; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: #232a3a; border-radius: 10px; border: 2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: #2f3850; }

/* Latar dekoratif: orb gradasi + grid halus */
.bg-fx { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.bg-fx::before {
  content: ""; position: absolute; inset: 0;
  background-image: linear-gradient(rgba(148, 163, 184, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(148, 163, 184, .045) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 30%, transparent 75%);
}
.orb { position: absolute; border-radius: 50%; filter: blur(90px); opacity: .32; animation: orb 26s ease-in-out infinite alternate; }
.orb.o1 { width: 560px; height: 560px; background: #5b3dff; top: -180px; left: -140px; }
.orb.o2 { width: 480px; height: 480px; background: #0ea5c6; top: 30vh; right: -200px; animation-delay: -8s; opacity: .22; }
.orb.o3 { width: 420px; height: 420px; background: #7c2dff; bottom: -220px; left: 30vw; animation-delay: -16s; opacity: .18; }
@keyframes orb { 0% { transform: translate3d(0, 0, 0) scale(1); } 100% { transform: translate3d(80px, 60px, 0) scale(1.15); } }

/* 3. LAYOUT --------------------------------------------------------------- */
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 24px; }
.section { padding: 88px 0; position: relative; }
.section.tight { padding: 56px 0; }
.section.alt { background: linear-gradient(180deg, transparent, rgba(16, 20, 29, .6) 12%, rgba(16, 20, 29, .6) 88%, transparent); }
.section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 36px; flex-wrap: wrap; }
.section-head > div { max-width: 680px; }
.eyebrow { display: inline-flex; align-items: center; gap: 8px; font: 600 12px/1 var(--display); letter-spacing: .16em; text-transform: uppercase; color: var(--accent); margin-bottom: 12px; }
.eyebrow::before { content: ""; width: 18px; height: 2px; border-radius: 2px; background: var(--grad); }
.h1 { font: 700 clamp(34px, 5.4vw, 64px)/1.04 var(--display); letter-spacing: -.02em; }
.h2 { font: 700 clamp(26px, 3.4vw, 40px)/1.12 var(--display); letter-spacing: -.01em; }
.h3 { font-size: 20px; font-weight: 700; }
.sub { color: var(--muted); margin-top: 12px; font-size: 16px; }
.grad-text { background: var(--grad-text); -webkit-background-clip: text; background-clip: text; color: transparent; }
.link-more { display: inline-flex; align-items: center; gap: 6px; color: var(--text-2); font-weight: 600; font-size: 14px; padding: 10px 16px; border-radius: 999px; border: 1px solid var(--line); background: rgba(255, 255, 255, .02); transition: .25s var(--ease); }
.link-more:hover { color: #fff; border-color: var(--line-strong); background: rgba(255, 255, 255, .05); }
.link-more:hover svg { transform: translateX(3px); }
.link-more svg { transition: transform .25s var(--ease); }
.muted { color: var(--muted); }
.stack-sm > * + * { margin-top: 8px; }
.stack > * + * { margin-top: 16px; }
.row { display: flex; align-items: center; gap: 12px; }
.wrap { flex-wrap: wrap; }
.grow { flex: 1; }
.center { text-align: center; }
.hide { display: none !important; }

/* 4. KOMPONEN ------------------------------------------------------------- */
.btn {
  --b: transparent; position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 46px; padding: 0 22px; border-radius: 12px; font-weight: 700; font-size: 14.5px; white-space: nowrap;
  border: 1px solid var(--b); transition: transform .2s var(--ease), box-shadow .25s var(--ease), background .25s, border-color .25s, color .2s;
  overflow: hidden; isolation: isolate; user-select: none;
}
.btn:active { transform: translateY(1px) scale(.99); }
.btn-primary { background: var(--grad); color: #fff; box-shadow: 0 10px 30px -12px rgba(124, 92, 255, .8), inset 0 1px 0 rgba(255, 255, 255, .25); }
.btn-primary::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .35) 50%, transparent 70%); transform: translateX(-120%); transition: transform .7s var(--ease); }
.btn-primary:hover { box-shadow: 0 16px 40px -12px rgba(124, 92, 255, .95), inset 0 1px 0 rgba(255, 255, 255, .3); transform: translateY(-1px); }
.btn-primary:hover::after { transform: translateX(120%); }
.btn-ghost { --b: var(--line-strong); background: rgba(255, 255, 255, .03); color: var(--text); backdrop-filter: blur(8px); }
.btn-ghost:hover { background: rgba(255, 255, 255, .07); --b: rgba(148, 163, 184, .4); }
.btn-hot { background: var(--grad-hot); color: #fff; box-shadow: 0 10px 30px -12px rgba(255, 61, 110, .7); }
.btn-hot:hover { transform: translateY(-1px); }
.btn-success { background: #16a34a; color: #fff; }
.btn-success:hover { background: #15803d; }
.btn-sm { height: 38px; padding: 0 14px; font-size: 13.5px; border-radius: 10px; }
.btn-lg { height: 54px; padding: 0 28px; font-size: 15.5px; border-radius: 14px; }
.btn-block { width: 100%; }
.btn[disabled] { opacity: .5; pointer-events: none; }
.icon-btn { position: relative; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; color: var(--text-2); border: 1px solid transparent; transition: .2s; }
.icon-btn:hover { background: rgba(255, 255, 255, .06); color: #fff; border-color: var(--line); }
.icon-btn svg { width: 20px; height: 20px; }
.count { position: absolute; top: 3px; right: 3px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--grad-hot); color: #fff; font: 700 11px/18px var(--font); text-align: center; box-shadow: 0 0 0 2px var(--bg); transform: scale(0); transition: transform .3s var(--ease); }
.count.on { transform: scale(1); }
.count.bump { animation: bump .45s var(--ease); }
@keyframes bump { 40% { transform: scale(1.35); } }

.badge { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: 7px; font: 700 11.5px/1 var(--font); letter-spacing: .02em; background: rgba(255, 255, 255, .08); color: var(--text-2); white-space: nowrap; }
.badge.primary { background: rgba(124, 92, 255, .18); color: #c4b7ff; }
.badge.cyan { background: rgba(34, 211, 238, .14); color: #7fe7f7; }
.badge.hot { background: var(--grad-hot); color: #fff; }
.badge.green { background: rgba(34, 197, 94, .15); color: #6ee7a0; }
.badge.gold { background: rgba(251, 191, 36, .15); color: #fcd34d; }
.badge.red { background: rgba(244, 63, 94, .15); color: #fb7f97; }
.badge svg { width: 13px; height: 13px; }
.chip {
  display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 15px; border-radius: 999px;
  border: 1px solid var(--line); background: rgba(255, 255, 255, .02); color: var(--text-2); font-weight: 600; font-size: 13.5px; transition: .2s var(--ease); white-space: nowrap;
}
.chip:hover { border-color: var(--line-strong); color: #fff; }
.chip.active { background: #fff; color: #0b0e15; border-color: #fff; }
.chip svg { width: 16px; height: 16px; }
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chips.scroll { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.chips.scroll::-webkit-scrollbar { display: none; }
.tag { font-size: 12px; font-weight: 600; color: var(--muted); padding: 3px 8px; border-radius: 6px; background: rgba(255, 255, 255, .05); white-space: nowrap; }
.plat { display: inline-flex; align-items: center; gap: 4px; font: 600 11px/1 var(--display); letter-spacing: .06em; text-transform: uppercase; padding: 5px 7px; border-radius: 6px; background: rgba(7, 9, 14, .65); color: #dfe5f1; border: 1px solid rgba(255, 255, 255, .1); backdrop-filter: blur(6px); }
.plat svg { width: 12px; height: 12px; }

.field { display: block; }
.field label, .label { display: block; font-size: 13px; font-weight: 600; color: var(--text-2); margin-bottom: 7px; }
.input, .select, .textarea {
  width: 100%; height: 48px; padding: 0 14px; border-radius: 12px; border: 1px solid var(--line-strong); background: var(--bg-soft); color: var(--text);
  transition: border-color .2s, box-shadow .2s; outline: none;
}
.textarea { height: auto; padding: 12px 14px; resize: vertical; min-height: 96px; }
.input::placeholder, .textarea::placeholder { color: #5f687c; }
.input:focus, .select:focus, .textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(124, 92, 255, .18); }
.input.invalid { border-color: var(--danger); box-shadow: 0 0 0 4px rgba(244, 63, 94, .15); }
.select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a93a6' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; background-size: 18px; padding-right: 40px; }
.help { font-size: 12.5px; color: var(--muted); margin-top: 6px; }
.err { font-size: 12.5px; color: #fb7f97; margin-top: 6px; display: none; }
.field.has-err .err { display: block; }
.input-icon { position: relative; }
.input-icon > svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--muted); width: 18px; height: 18px; pointer-events: none; }
.input-icon .input { padding-left: 42px; }
.kbd { font: 600 11px/1 var(--font); padding: 4px 6px; border-radius: 6px; border: 1px solid var(--line-strong); color: var(--muted); }

.card { background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); border-radius: var(--r-lg); }
.card-pad { padding: 24px; }
.divider { height: 1px; background: var(--line); margin: 20px 0; border: 0; }
.stars { display: inline-flex; gap: 2px; color: var(--gold); }
.stars svg { width: 14px; height: 14px; }
.price { font: 700 18px/1.1 var(--display); color: #fff; letter-spacing: .01em; }
.strike { color: var(--muted); text-decoration: line-through; font-size: 13px; }
.off { color: #fb7f97; font-weight: 700; font-size: 12.5px; }

.crumbs { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13px; color: var(--muted); margin-bottom: 18px; }
.crumbs a:hover { color: #fff; }
.crumbs svg { width: 14px; height: 14px; opacity: .6; }

.empty { text-align: center; padding: 64px 20px; color: var(--muted); border: 1px dashed var(--line-strong); border-radius: var(--r-lg); }
.empty svg { width: 40px; height: 40px; margin: 0 auto 12px; opacity: .6; }

/* 5. HEADER & FOOTER ------------------------------------------------------ */
.announce { position: relative; z-index: 60; background: linear-gradient(90deg, #1b1240, #0c2a3a 50%, #1b1240); border-bottom: 1px solid var(--line); font-size: 13px; color: #d6dcf0; }
.announce .container { display: flex; align-items: center; justify-content: center; gap: 10px; height: 38px; overflow: hidden; }
.announce-track { display: flex; gap: 48px; white-space: nowrap; animation: ticker 38s linear infinite; }
.announce-track span { display: inline-flex; align-items: center; gap: 8px; }
.announce-track b { color: #fff; }
.announce-track svg { width: 15px; height: 15px; color: var(--accent); }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.site-header { position: sticky; top: 0; z-index: 50; height: var(--header-h); transition: background .3s, border-color .3s, box-shadow .3s; border-bottom: 1px solid transparent; }
.site-header.scrolled { background: rgba(7, 9, 14, .78); backdrop-filter: saturate(160%) blur(16px); -webkit-backdrop-filter: saturate(160%) blur(16px); border-color: var(--line); box-shadow: 0 10px 30px -20px rgba(0, 0, 0, .8); }
.nav { height: 100%; display: flex; align-items: center; gap: 28px; }
.site-header .container { max-width: 1360px; }
.brand { display: flex; align-items: center; gap: 10px; font: 700 21px/1 var(--display); letter-spacing: .02em; }
.brand-logo { display: block; height: 52px; width: auto; transition: transform .5s var(--ease); }
.brand:hover .brand-logo { transform: scale(1.04); }
.mnav-head .brand-logo { height: 44px; }
.footer-about .brand-logo { height: 76px; }
.nav-links { display: flex; align-items: center; gap: 4px; flex: 1; }
.nav-link { position: relative; padding: 9px 13px; border-radius: 10px; font-weight: 600; font-size: 14.5px; color: var(--text-2); transition: .2s; white-space: nowrap; }
.brand { white-space: nowrap; flex: none; }
.footer-link-btn { color: var(--text-2); font-size: 14px; transition: color .2s; }
.footer-link-btn:hover { color: #fff; }
.nav-link:hover { color: #fff; background: rgba(255, 255, 255, .05); }
.nav-link.active { color: #fff; }
.nav-link.active::after { content: ""; position: absolute; left: 13px; right: 13px; bottom: 2px; height: 2px; border-radius: 2px; background: var(--grad); }
.nav-actions { display: flex; align-items: center; gap: 4px; }
.search-trigger { display: flex; align-items: center; gap: 10px; height: 42px; padding: 0 10px 0 14px; border-radius: 12px; border: 1px solid var(--line); background: rgba(255, 255, 255, .03); color: var(--muted); font-size: 13.5px; width: 230px; transition: .2s; margin-right: 6px; white-space: nowrap; }
.search-trigger span:not(.kbd) { overflow: hidden; text-overflow: ellipsis; }
.search-trigger:hover { border-color: var(--line-strong); color: var(--text-2); }
.search-trigger svg { width: 17px; height: 17px; }
.search-trigger .kbd { margin-left: auto; }
.burger { display: none; }

.mnav { position: fixed; inset: 0; z-index: 90; pointer-events: none; overflow: hidden; visibility: hidden; transition: visibility 0s .45s; }
.mnav.open { visibility: visible; transition: none; }
.mnav-backdrop { position: absolute; inset: 0; background: rgba(3, 5, 9, .6); opacity: 0; transition: opacity .3s; backdrop-filter: blur(4px); }
.mnav-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(340px, 86vw); background: var(--surface); border-left: 1px solid var(--line); transform: translateX(100%); transition: transform .4s var(--ease); padding: 20px; display: flex; flex-direction: column; gap: 6px; overflow-y: auto; }
.mnav.open { pointer-events: auto; }
.mnav.open .mnav-backdrop { opacity: 1; }
.mnav.open .mnav-panel { transform: none; }
.mnav-panel .nav-link { font-size: 16px; padding: 13px 14px; display: flex; align-items: center; gap: 12px; }
.mnav-panel .nav-link.active { background: rgba(124, 92, 255, .14); }
.mnav-panel .nav-link.active::after { display: none; }
.mnav-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }

.site-footer { position: relative; margin-top: 110px; border-top: 1px solid var(--line); background: linear-gradient(180deg, rgba(16, 20, 29, .4), var(--bg-soft)); }
.footer-cta { display: grid; grid-template-columns: 1.2fr 1fr; gap: 32px; align-items: center; padding: 40px; margin: -72px 0 56px; border-radius: var(--r-xl); position: relative; overflow: hidden; background: radial-gradient(120% 140% at 0% 0%, rgba(124, 92, 255, .35), transparent 50%), radial-gradient(120% 140% at 100% 100%, rgba(34, 211, 238, .25), transparent 50%), var(--surface-2); border: 1px solid rgba(124, 92, 255, .3); box-shadow: var(--shadow-lg); }
.footer-cta h3 { font: 700 clamp(22px, 2.6vw, 30px)/1.2 var(--display); }
.footer-cta p { color: var(--text-2); margin-top: 8px; }
.newsletter { display: flex; gap: 10px; }
.newsletter .input { background: rgba(7, 9, 14, .6); }
.footer-grid { display: grid; grid-template-columns: 1.5fr repeat(4, 1fr); gap: 36px; padding-bottom: 44px; }
.footer-grid h4 { font: 600 13px/1 var(--display); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-bottom: 16px; }
.footer-grid ul { list-style: none; display: grid; gap: 10px; }
.footer-grid a { color: var(--text-2); font-size: 14px; transition: color .2s; }
.footer-grid a:hover { color: #fff; }
.footer-about p { color: var(--muted); font-size: 14px; margin: 14px 0 18px; max-width: 340px; }
.contact-line { display: flex; gap: 10px; align-items: flex-start; color: var(--text-2); font-size: 13.5px; margin-top: 10px; }
.contact-line svg { color: var(--accent); margin-top: 3px; width: 16px; height: 16px; }
.socials { display: flex; gap: 8px; margin-top: 18px; }
.socials a { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; border: 1px solid var(--line); color: var(--text-2); transition: .2s; }
.socials a:hover { color: #fff; border-color: var(--primary); background: rgba(124, 92, 255, .12); transform: translateY(-2px); }
.pay-row { display: flex; flex-wrap: wrap; gap: 8px; padding: 22px 0; border-top: 1px solid var(--line); align-items: center; }
.pay-row > span:first-child { font-size: 13px; color: var(--muted); margin-right: 8px; }
.pay-logo { display: inline-flex; align-items: center; justify-content: center; height: 30px; padding: 0 10px; border-radius: 7px; background: #f5f7fb; color: var(--c, #111); font: 800 12px/1 var(--font); letter-spacing: .01em; }
.footer-bottom { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 20px 0 32px; border-top: 1px solid var(--line); font-size: 13px; color: var(--muted); }
.footer-bottom a:hover { color: #fff; }
.wa-float { position: fixed; right: 20px; bottom: 20px; z-index: 70; display: flex; align-items: center; gap: 10px; height: 54px; padding: 0 20px 0 16px; border-radius: 999px; background: #1faa59; color: #fff; font-weight: 700; box-shadow: 0 16px 40px -12px rgba(31, 170, 89, .7); transition: transform .25s var(--ease); }
.wa-float:hover { transform: translateY(-3px); }
.wa-float svg { width: 24px; height: 24px; }
.to-top { position: fixed; right: 20px; bottom: 86px; z-index: 70; width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; background: var(--surface-3); border: 1px solid var(--line-strong); color: #fff; opacity: 0; transform: translateY(10px); pointer-events: none; transition: .3s var(--ease); }
.to-top.on { opacity: 1; transform: none; pointer-events: auto; }
.to-top svg { transform: rotate(-90deg); }

/* 6. HERO & SECTION ------------------------------------------------------- */
.hero { position: relative; min-height: calc(100vh - var(--header-h) - 38px); min-height: calc(100svh - var(--header-h) - 38px); display: flex; align-items: center; padding: 56px 0 96px; margin-top: calc(var(--header-h) * -1); padding-top: calc(var(--header-h) + 40px); overflow: hidden; }
.hero-bg { position: absolute; inset: 0; z-index: -1; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; opacity: .42; transform: scale(1.08); animation: kenburns 30s ease-in-out infinite alternate; }
.hero-bg::after { content: ""; position: absolute; inset: 0; background: radial-gradient(80% 70% at 75% 40%, transparent 0%, rgba(7, 9, 14, .55) 55%, var(--bg) 100%), linear-gradient(90deg, var(--bg) 0%, rgba(7, 9, 14, .86) 38%, rgba(7, 9, 14, .35) 70%, rgba(7, 9, 14, .6) 100%), linear-gradient(0deg, var(--bg) 0%, transparent 30%); }
@keyframes kenburns { from { transform: scale(1.08) translate3d(0, 0, 0); } to { transform: scale(1.16) translate3d(-1.5%, -1%, 0); } }
.hero-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: 40px; align-items: center; }
.pill { display: inline-flex; align-items: center; gap: 10px; padding: 7px 14px 7px 8px; border-radius: 999px; background: rgba(255, 255, 255, .05); border: 1px solid var(--line-strong); font-size: 13px; color: var(--text-2); backdrop-filter: blur(10px); margin-bottom: 22px; }
.pill .dot { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: var(--grad); color: #fff; }
.pill .dot svg { width: 12px; height: 12px; }
.live-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 0 rgba(34, 197, 94, .6); animation: pulse 2s infinite; }
@keyframes pulse { 70% { box-shadow: 0 0 0 10px rgba(34, 197, 94, 0); } 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); } }
.hero .lead { font-size: 17.5px; color: var(--text-2); margin: 22px 0 28px; max-width: 560px; }
.hero-search { position: relative; max-width: 560px; }
.hero-search .box { display: flex; align-items: center; gap: 10px; padding: 7px 7px 7px 18px; border-radius: 16px; background: rgba(16, 20, 29, .82); border: 1px solid var(--line-strong); backdrop-filter: blur(14px); box-shadow: var(--shadow); transition: border-color .2s, box-shadow .2s; }
.hero-search .box:focus-within { border-color: rgba(124, 92, 255, .7); box-shadow: var(--glow); }
.hero-search input { flex: 1; min-width: 0; height: 44px; border: 0; background: none; outline: none; font-size: 15px; }
.hero-search svg.i { color: var(--muted); width: 20px; height: 20px; }
.suggest { position: absolute; left: 0; right: 0; top: calc(100% + 8px); z-index: 20; padding: 8px; border-radius: 16px; background: var(--surface-2); border: 1px solid var(--line-strong); box-shadow: var(--shadow-lg); display: none; max-height: 340px; overflow-y: auto; }
.suggest.on { display: block; }
.suggest a { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 10px; }
.suggest a:hover, .suggest a.hl { background: rgba(255, 255, 255, .06); }
.suggest img { width: 38px; height: 38px; border-radius: 10px; object-fit: cover; }
.suggest small { color: var(--muted); display: block; font-size: 12px; }
.suggest .from { margin-left: auto; font: 600 13px var(--display); color: var(--accent); white-space: nowrap; }
.quick { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; align-items: center; font-size: 13px; color: var(--muted); }
.quick a { display: inline-flex; align-items: center; gap: 7px; padding: 5px 10px 5px 5px; border-radius: 999px; border: 1px solid var(--line); color: var(--text-2); background: rgba(255, 255, 255, .02); transition: .2s; }
.quick a:hover { border-color: var(--line-strong); color: #fff; transform: translateY(-1px); }
.quick img { width: 22px; height: 22px; border-radius: 6px; }
.hero-ctas { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 28px; }
.hero-stats { display: grid; grid-template-columns: repeat(4, auto); gap: 28px; margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--line); max-width: 600px; }
.stat b { display: block; font: 700 26px/1 var(--display); color: #fff; }
.stat > span { display: block; font-size: 12.5px; color: var(--muted); margin-top: 6px; }

/* Ring cover 3D */
.ring-stage { position: relative; height: 560px; perspective: 1400px; perspective-origin: 50% 40%; }
.ring-tilt { position: absolute; inset: 0; transform-style: preserve-3d; transition: transform .6s var(--ease); }
.ring { position: absolute; left: 50%; top: 46%; width: 0; height: 0; transform-style: preserve-3d; animation: spin 48s linear infinite; }
.ring-stage:hover .ring { animation-play-state: paused; }
.ring-item { position: absolute; width: 168px; height: 252px; left: -84px; top: -126px; border-radius: 16px; overflow: hidden; transform-style: preserve-3d; backface-visibility: hidden; box-shadow: 0 24px 50px -18px rgba(0, 0, 0, .9); border: 1px solid rgba(255, 255, 255, .14); transition: filter .3s, box-shadow .3s; }
.ring-item img { width: 100%; height: 100%; object-fit: cover; }
.ring-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(160deg, rgba(255, 255, 255, .18), transparent 35%, transparent 70%, rgba(0, 0, 0, .35)); }
.ring-item:hover { box-shadow: 0 0 0 2px var(--primary), 0 30px 60px -18px rgba(124, 92, 255, .7); }
.ring-floor { position: absolute; left: 50%; top: 82%; width: 560px; height: 120px; transform: translateX(-50%); background: radial-gradient(closest-side, rgba(124, 92, 255, .35), transparent); filter: blur(10px); }
@keyframes spin { from { transform: rotateX(-8deg) rotateY(0); } to { transform: rotateX(-8deg) rotateY(-360deg); } }
.ring-card { position: absolute; z-index: 2; display: flex; align-items: center; gap: 12px; padding: 12px 16px 12px 12px; border-radius: 16px; background: rgba(16, 20, 29, .78); border: 1px solid var(--line-strong); backdrop-filter: blur(14px); box-shadow: var(--shadow); animation: float 6s ease-in-out infinite; font-size: 13px; }
.ring-card img { width: 40px; height: 40px; border-radius: 10px; }
.ring-card b { display: block; font-size: 14px; }
.ring-card small { color: var(--muted); }
.ring-card .ok { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: rgba(34, 197, 94, .16); color: #4ade80; }
.ring-card.c1 { left: 0; top: 14%; }
.ring-card.c2 { right: 0; bottom: 14%; animation-delay: -3s; }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* Marquee logo game */
.marquee { position: relative; overflow: hidden; padding: 22px 0; border-block: 1px solid var(--line); background: rgba(11, 14, 21, .6); mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.marquee-track { display: flex; gap: 14px; width: max-content; animation: ticker 60s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee a { display: flex; align-items: center; gap: 10px; padding: 8px 16px 8px 8px; border-radius: 14px; border: 1px solid var(--line); background: var(--surface); white-space: nowrap; font-weight: 600; font-size: 14px; color: var(--text-2); transition: .2s; }
.marquee a:hover { color: #fff; border-color: var(--line-strong); }
.marquee img { width: 34px; height: 34px; border-radius: 9px; object-fit: cover; }

/* Page hero (halaman dalam) */
.page-hero { position: relative; padding: calc(var(--header-h) + 48px) 0 56px; margin-top: calc(var(--header-h) * -1); overflow: hidden; border-bottom: 1px solid var(--line); }
.page-hero .bg { position: absolute; inset: 0; z-index: -1; }
.page-hero .bg img { width: 100%; height: 100%; object-fit: cover; opacity: .35; animation: kenburns 40s ease-in-out infinite alternate; }
.page-hero .bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--bg) 10%, rgba(7, 9, 14, .7) 55%, rgba(7, 9, 14, .4)), linear-gradient(0deg, var(--bg), transparent 60%); }
.page-hero .h1 { font-size: clamp(32px, 4.6vw, 54px); }
.page-hero p.lead { color: var(--text-2); max-width: 660px; margin-top: 14px; font-size: 16.5px; }
.page-hero .hero-meta { display: flex; gap: 24px; flex-wrap: wrap; margin-top: 26px; }
.page-hero .hero-meta div { display: flex; align-items: center; gap: 10px; color: var(--text-2); font-size: 14px; }
.page-hero .hero-meta svg { color: var(--accent); }

/* Toolbar filter */
.toolbar { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; padding: 14px; border-radius: var(--r-lg); background: rgba(16, 20, 29, .7); border: 1px solid var(--line); backdrop-filter: blur(10px); margin-bottom: 28px; position: sticky; top: calc(var(--header-h) + 10px); z-index: 20; }
.toolbar .input-icon { flex: 1; min-width: 220px; }
.toolbar .select { width: auto; min-width: 170px; }
.result-info { font-size: 13.5px; color: var(--muted); margin: -12px 0 20px; }

/* Fitur & langkah */
.features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.feature { padding: 26px; border-radius: var(--r-lg); background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); position: relative; overflow: hidden; }
.feature .ico { width: 50px; height: 50px; border-radius: 14px; display: grid; place-items: center; background: rgba(124, 92, 255, .14); color: #b8a8ff; margin-bottom: 18px; border: 1px solid rgba(124, 92, 255, .25); }
.feature .ico svg { width: 24px; height: 24px; }
.feature h3 { font-size: 17px; margin-bottom: 8px; }
.feature p { color: var(--muted); font-size: 14px; }
.feature:nth-child(2) .ico { background: rgba(34, 211, 238, .12); color: #67e8f9; border-color: rgba(34, 211, 238, .25); }
.feature:nth-child(3) .ico { background: rgba(34, 197, 94, .12); color: #6ee7a0; border-color: rgba(34, 197, 94, .25); }
.feature:nth-child(4) .ico { background: rgba(251, 191, 36, .12); color: #fcd34d; border-color: rgba(251, 191, 36, .25); }
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; counter-reset: s; }
.step { position: relative; padding: 26px 22px; border-radius: var(--r-lg); border: 1px solid var(--line); background: var(--surface); }
.step::before { counter-increment: s; content: "0" counter(s); font: 700 44px/1 var(--display); background: var(--grad-text); -webkit-background-clip: text; background-clip: text; color: transparent; opacity: .9; display: block; margin-bottom: 14px; }
.step h3 { font-size: 16.5px; margin-bottom: 6px; }
.step p { color: var(--muted); font-size: 14px; }

/* Spotlight game */
.spotlight { position: relative; border-radius: var(--r-xl); overflow: hidden; min-height: 520px; display: grid; grid-template-columns: 1.2fr .8fr; border: 1px solid var(--line); background: var(--surface); box-shadow: var(--shadow-lg); }
.spot-bg { position: absolute; inset: 0; }
.spot-bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.06); transition: opacity .9s var(--ease), transform 6s linear; }
.spot-bg img.on { opacity: 1; transform: scale(1); }
.spot-bg video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .9s var(--ease); }
.spot-bg video.on { opacity: 1; }
.spot-bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(7, 9, 14, .95) 0%, rgba(7, 9, 14, .7) 45%, rgba(7, 9, 14, .2) 75%, rgba(7, 9, 14, .5)), linear-gradient(0deg, rgba(7, 9, 14, .85), transparent 50%); }
.spot-body { position: relative; padding: 48px; display: flex; flex-direction: column; justify-content: flex-end; gap: 16px; }
.spot-body h3 { font: 700 clamp(28px, 3.6vw, 44px)/1.08 var(--display); }
.spot-body p { color: var(--text-2); max-width: 520px; }
.spot-meta { display: flex; gap: 8px; flex-wrap: wrap; }
.spot-list { position: relative; display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 28px 28px 28px 0; }
.spot-thumb { display: flex; align-items: center; gap: 14px; padding: 10px; border-radius: 16px; border: 1px solid var(--line); background: rgba(7, 9, 14, .55); backdrop-filter: blur(10px); text-align: left; transition: .3s var(--ease); position: relative; overflow: hidden; }
.spot-thumb img { width: 92px; height: 52px; border-radius: 10px; object-fit: cover; }
.spot-thumb b { display: block; font-size: 14.5px; }
.spot-thumb small { color: var(--muted); font-size: 12.5px; }
.spot-thumb.on { border-color: rgba(124, 92, 255, .6); background: rgba(124, 92, 255, .14); transform: translateX(-6px); }
.spot-thumb .bar { position: absolute; left: 0; bottom: 0; height: 2px; width: 0; background: var(--grad); }
.spot-thumb.on .bar { animation: bar 7s linear forwards; }
@keyframes bar { to { width: 100%; } }

/* Flash sale */
.flash-head { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.countdown { display: flex; gap: 6px; align-items: center; }
.countdown span { min-width: 44px; height: 44px; display: grid; place-items: center; border-radius: 10px; background: var(--grad-hot); color: #fff; font: 700 19px/1 var(--display); box-shadow: 0 10px 24px -10px rgba(255, 61, 110, .7); }
.countdown i { font-style: normal; color: var(--muted); font-weight: 700; }

/* CTA band */
.cta-band { position: relative; border-radius: var(--r-xl); overflow: hidden; padding: 56px; display: grid; grid-template-columns: 1.2fr .8fr; gap: 32px; align-items: center; border: 1px solid var(--line); }
.cta-band .bg { position: absolute; inset: 0; z-index: -1; }
.cta-band .bg img { width: 100%; height: 100%; object-fit: cover; opacity: .5; }
.cta-band .bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(7, 9, 14, .95), rgba(7, 9, 14, .6)); }
.cta-band ul { list-style: none; display: grid; gap: 12px; }
.cta-band li { display: flex; gap: 10px; align-items: center; color: var(--text-2); }
.cta-band li svg { color: var(--success); }

/* 7. KARTU ---------------------------------------------------------------- */
.grid { display: grid; gap: 20px; }
.grid > *, .layout-2 > *, .product-layout > *, .hero-grid > *, .faq-layout > * { min-width: 0; }
.grid-topup { grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: 16px; }
.grid-games { grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); }
.grid-products { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
.grid-reviews { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); }
.grid-articles { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-2 { grid-template-columns: repeat(2, 1fr); }

/* Top up card */
.tcard { position: relative; display: block; border-radius: 18px; padding: 10px; background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); transition: border-color .3s, box-shadow .3s; }
.tcard:hover { border-color: rgba(124, 92, 255, .55); box-shadow: var(--glow); }
.tcard-media { position: relative; aspect-ratio: 1; border-radius: 13px; overflow: hidden; background: var(--surface-3); }
.tcard-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.tcard:hover .tcard-media img { transform: scale(1.07); }
.tcard-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, .55)); }
.tcard .ribbon { position: absolute; top: 8px; left: 8px; z-index: 2; }
.tcard .eta { position: absolute; bottom: 8px; left: 8px; z-index: 2; display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 700; color: #fff; }
.tcard .eta svg { width: 12px; height: 12px; color: var(--gold); }
.tcard-body { padding: 12px 4px 4px; }
.tcard-body h3 { font-size: 14.5px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tcard-body small { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }
.tcard-body .from { margin-top: 8px; font-size: 12px; color: var(--muted); }
.tcard-body .from b { display: block; color: var(--accent); font: 700 15px/1.2 var(--display); }

/* Game card */
.gcard { position: relative; display: flex; flex-direction: column; border-radius: var(--r-lg); overflow: hidden; background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); transition: border-color .3s, box-shadow .3s; }
.gcard:hover { border-color: rgba(124, 92, 255, .5); box-shadow: var(--glow); }
.gcard-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--surface-3); }
.gcard-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.gcard:hover .gcard-media img { transform: scale(1.06); }
.gcard-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(16, 20, 29, 1) 0%, rgba(16, 20, 29, .1) 45%, transparent); }
.gcard .plats { position: absolute; top: 10px; left: 10px; z-index: 2; display: flex; gap: 5px; flex-wrap: wrap; }
.gcard .score { position: absolute; top: 10px; right: 10px; z-index: 2; }
.gcard-body { position: relative; z-index: 2; padding: 0 16px 16px; margin-top: -30px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.gcard-id { display: flex; align-items: flex-end; gap: 12px; }
.gcard-id img { width: 52px; height: 52px; border-radius: 12px; object-fit: cover; border: 2px solid var(--surface); box-shadow: var(--shadow); flex: none; }
.gcard-id img.portrait { height: 70px; width: 47px; }
.gcard-id h3 { font-size: 16px; line-height: 1.25; }
.gcard-id small { color: var(--muted); font-size: 12.5px; }
.gcard-body p { color: var(--muted); font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gcard-foot { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: auto; }
.gcard-foot .model { margin-left: auto; }
.mscore { display: inline-grid; place-items: center; min-width: 34px; height: 30px; padding: 0 6px; border-radius: 8px; font: 700 14px/1 var(--display); color: #08130b; background: #4ade80; }
.mscore.mid { background: #fbbf24; }
.mscore.low { background: #f87171; }

/* Product card */
.pcard { position: relative; display: flex; flex-direction: column; border-radius: var(--r-lg); overflow: hidden; background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); transition: border-color .3s, box-shadow .3s; }
.pcard:hover { border-color: rgba(34, 211, 238, .45); box-shadow: 0 0 0 1px rgba(34, 211, 238, .25), 0 16px 48px -18px rgba(34, 211, 238, .4); }
.pcard-media { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #e9edf3; }
.pcard-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.pcard:hover .pcard-media img { transform: scale(1.07); }
.pcard .badges { position: absolute; top: 10px; left: 10px; z-index: 2; display: flex; gap: 6px; flex-wrap: wrap; }
.pcard .disc { position: absolute; top: 10px; right: 10px; z-index: 2; }
/* Badge di atas foto: latar gelap agar tetap terbaca di foto produk berlatar terang */
.pcard .badges .badge:not(.hot), .rcard .type, .acard-media .badge { background: rgba(7, 9, 14, .8); border: 1px solid rgba(255, 255, 255, .14); backdrop-filter: blur(6px); }
.pcard-body { padding: 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.pcard-body .brand-name { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.pcard-body h3 { font-size: 15.5px; line-height: 1.35; }
.pcard-body h3 small { display: block; font-weight: 500; color: var(--muted); font-size: 13px; margin-top: 2px; }
.pcard-body .tl { font-size: 13px; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pcard-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; margin-top: auto; padding-top: 10px; }
.pcard-foot .add { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); border: 1px solid var(--line-strong); color: #fff; transition: .25s var(--ease); flex: none; }
.pcard-foot .add:hover { background: var(--grad); border-color: transparent; transform: rotate(-6deg) scale(1.06); }
.stock { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; }
.stock::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--success); }
.stock.low::before { background: var(--warn); }

/* Review card */
.rcard { position: relative; display: flex; flex-direction: column; border-radius: var(--r-lg); overflow: hidden; background: linear-gradient(180deg, var(--surface-2), var(--surface)); border: 1px solid var(--line); transition: border-color .3s, box-shadow .3s; }
.rcard:hover { border-color: rgba(124, 92, 255, .5); box-shadow: var(--glow); }
.rcard-media { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--surface-3); }
.rcard-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.rcard:hover .rcard-media img { transform: scale(1.06); }
.rcard-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(16, 20, 29, .9), transparent 55%); }
.rcard .type { position: absolute; top: 12px; left: 12px; z-index: 2; }
.rcard .ring-score { position: absolute; right: 14px; top: -34px; z-index: 3; }
.rcard-body { position: relative; z-index: 2; padding: 20px 18px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.rcard-body small.k { color: var(--accent); font-weight: 700; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
.rcard-body h3 { font-size: 17.5px; line-height: 1.3; padding-right: 64px; }
.rcard-body p { color: var(--muted); font-size: 14px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.rcard-foot { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--muted); margin-top: auto; padding-top: 6px; }
.ring-score { --v: 80; --c: #4ade80; width: 62px; height: 62px; border-radius: 50%; display: grid; place-items: center; background: conic-gradient(var(--c) calc(var(--v) * 1%), rgba(255, 255, 255, .1) 0); box-shadow: 0 10px 24px -8px rgba(0, 0, 0, .8); }
.ring-score::before { content: ""; position: absolute; width: 50px; height: 50px; border-radius: 50%; background: var(--surface-2); }
.ring-score b { position: relative; font: 700 19px/1 var(--display); color: #fff; }
.ring-score.lg { width: 132px; height: 132px; }
.ring-score.lg::before { width: 110px; height: 110px; background: var(--surface); }
.ring-score.lg b { font-size: 40px; }
.ring-score { position: relative; }

/* Article card */
.acard { display: flex; flex-direction: column; border-radius: var(--r-lg); overflow: hidden; background: var(--surface); border: 1px solid var(--line); transition: border-color .3s, transform .3s var(--ease); }
.acard:hover { border-color: var(--line-strong); }
.acard-media { aspect-ratio: 16 / 9; overflow: hidden; position: relative; }
.acard-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease); }
.acard:hover .acard-media img { transform: scale(1.06); }
.acard-media .badge { position: absolute; left: 12px; top: 12px; }
.acard-body { padding: 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.acard-body h3 { font-size: 17px; line-height: 1.35; }
.acard-body p { color: var(--muted); font-size: 14px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.meta { display: flex; align-items: center; gap: 14px; font-size: 12.5px; color: var(--muted); margin-top: auto; padding-top: 6px; flex-wrap: wrap; }
.meta span { display: inline-flex; align-items: center; gap: 5px; }
.meta svg { width: 14px; height: 14px; }
.acard.wide { display: grid; grid-template-columns: 1.2fr 1fr; }
.acard.wide .acard-media { aspect-ratio: auto; min-height: 300px; }
.acard.wide .acard-body { padding: 32px; justify-content: center; }
.acard.wide h3 { font: 700 clamp(22px, 2.4vw, 28px)/1.25 var(--display); }
.acard.wide p { -webkit-line-clamp: 4; font-size: 15px; }

/* FAQ */
.faq-layout { display: grid; grid-template-columns: 260px 1fr; gap: 32px; align-items: start; }
.faq-nav { position: sticky; top: calc(var(--header-h) + 20px); display: grid; gap: 6px; }
.faq-nav button { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; color: var(--text-2); font-weight: 600; text-align: left; border: 1px solid transparent; transition: .2s; }
.faq-nav button:hover { background: rgba(255, 255, 255, .04); color: #fff; }
.faq-nav button.active { background: rgba(124, 92, 255, .14); border-color: rgba(124, 92, 255, .35); color: #fff; }
.faq-nav button span.n { margin-left: auto; font-size: 12px; color: var(--muted); }
.faq-group + .faq-group { margin-top: 40px; }
.faq-group h2 { font: 700 22px/1.2 var(--display); display: flex; align-items: center; gap: 12px; margin-bottom: 16px; scroll-margin-top: calc(var(--header-h) + 24px); }
.faq-group h2 svg { color: var(--accent); }
.faq-item { border: 1px solid var(--line); border-radius: 16px; background: var(--surface); transition: border-color .3s, background .3s; }
.faq-item + .faq-item { margin-top: 10px; }
.faq-item[open] { border-color: rgba(124, 92, 255, .4); background: linear-gradient(180deg, rgba(124, 92, 255, .07), var(--surface)); }
.faq-item summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 16px; padding: 18px 20px; font-weight: 600; font-size: 15.5px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary .pm { margin-left: auto; width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; background: rgba(255, 255, 255, .05); flex: none; transition: transform .35s var(--ease), background .3s; }
.faq-item[open] summary .pm { transform: rotate(45deg); background: var(--grad); color: #fff; }
.faq-a { padding: 0 20px 20px; color: var(--text-2); font-size: 14.5px; line-height: 1.75; }
.faq-a mark { background: rgba(251, 191, 36, .25); color: #fff; border-radius: 3px; }

/* 8. HALAMAN DETAIL ------------------------------------------------------- */
.detail-hero { position: relative; margin-top: calc(var(--header-h) * -1); padding: calc(var(--header-h) + 48px) 0 48px; overflow: hidden; min-height: 520px; display: flex; align-items: flex-end; }
.detail-hero .bg { position: absolute; inset: 0; z-index: -1; }
.detail-hero .bg img { width: 100%; height: 100%; object-fit: cover; animation: kenburns 40s ease-in-out infinite alternate; }
.detail-hero .bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, var(--bg) 2%, rgba(7, 9, 14, .65) 45%, rgba(7, 9, 14, .35)), linear-gradient(90deg, rgba(7, 9, 14, .9), transparent 70%); }
.detail-head { display: flex; align-items: flex-end; gap: 28px; }
.detail-head .poster { width: 180px; flex: none; border-radius: 18px; overflow: hidden; box-shadow: var(--shadow-lg); border: 1px solid rgba(255, 255, 255, .15); transform: perspective(800px) rotateY(10deg); transition: transform .6s var(--ease); }
.detail-head .poster:hover { transform: perspective(800px) rotateY(0) scale(1.02); }
.detail-head .poster img { width: 100%; }
.detail-head .poster.square { width: 150px; }
.detail-head h1 { font: 700 clamp(30px, 4.6vw, 56px)/1.05 var(--display); }
.detail-head .tl { color: var(--text-2); font-size: 17px; margin-top: 12px; max-width: 680px; }
.detail-head .chips-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.detail-head .ctas { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 22px; }
.layout-2 { display: grid; grid-template-columns: 1fr 360px; gap: 32px; align-items: start; }
.aside-sticky { position: sticky; top: calc(var(--header-h) + 20px); display: grid; gap: 18px; }
.prose { color: var(--text-2); font-size: 16px; line-height: 1.85; }
.prose p + p { margin-top: 16px; }
.prose h2 { font: 700 24px/1.25 var(--display); color: var(--text); margin: 40px 0 14px; scroll-margin-top: calc(var(--header-h) + 24px); }
.prose h2:first-child { margin-top: 0; }
.prose ul, .prose ol { padding-left: 0; list-style: none; display: grid; gap: 10px; margin: 16px 0; }
.prose ul li { position: relative; padding-left: 30px; }
.prose ul li::before { content: ""; position: absolute; left: 4px; top: 10px; width: 10px; height: 10px; border-radius: 3px; background: var(--grad); transform: rotate(45deg); }
.prose ol { counter-reset: o; }
.prose ol li { position: relative; padding-left: 46px; counter-increment: o; min-height: 32px; }
.prose ol li::before { content: counter(o); position: absolute; left: 0; top: -2px; width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: rgba(124, 92, 255, .16); color: #c4b7ff; font: 700 15px/1 var(--display); border: 1px solid rgba(124, 92, 255, .3); }
.callout { display: flex; gap: 14px; padding: 18px 20px; border-radius: 16px; margin: 22px 0; border: 1px solid rgba(34, 211, 238, .3); background: rgba(34, 211, 238, .07); color: var(--text-2); font-size: 15px; }
.callout svg { color: var(--accent); width: 22px; height: 22px; margin-top: 2px; }
.callout.warn { border-color: rgba(245, 165, 36, .35); background: rgba(245, 165, 36, .08); }
.callout.warn svg { color: var(--warn); }
.info-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.info-table th, .info-table td { text-align: left; padding: 11px 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.info-table th { color: var(--muted); font-weight: 500; width: 42%; padding-right: 12px; }
.info-table td { color: var(--text); font-weight: 600; }
.info-table tr:last-child th, .info-table tr:last-child td { border-bottom: 0; }
.hl-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-top: 16px; }
.hl { display: flex; gap: 12px; padding: 16px; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); font-size: 14.5px; color: var(--text-2); }
.hl svg { color: var(--success); width: 20px; height: 20px; margin-top: 2px; }
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
.gallery button { border-radius: 14px; overflow: hidden; aspect-ratio: 16 / 9; border: 1px solid var(--line); position: relative; }
.gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.gallery button:hover img { transform: scale(1.06); }
.trailer { margin-top: 16px; }
.trailer-stage { position: relative; aspect-ratio: 16 / 9; border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); background: #000; box-shadow: var(--shadow-lg); }
.trailer-stage > img, .trailer-stage video, .trailer-stage iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; object-fit: cover; }
.trailer-stage video { object-fit: contain; }
.trailer-play { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; background: linear-gradient(0deg, rgba(7, 9, 14, .8), rgba(7, 9, 14, .1) 60%); }
.trailer-play .ico { width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; background: var(--grad); box-shadow: 0 16px 40px -12px rgba(124, 92, 255, .8); transition: transform .3s var(--ease); }
.trailer-play:hover .ico { transform: scale(1.08); }
.trailer-play svg { width: 30px; height: 30px; fill: currentColor; margin-left: 4px; }
.trailer-play b { position: absolute; left: 20px; right: 20px; bottom: 16px; font-size: 15px; text-align: left; text-shadow: 0 2px 10px rgba(0, 0, 0, .6); }
.trailer-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 10px; }
.trailer-pick { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); text-align: left; font-size: 13px; color: var(--text-2); transition: .2s var(--ease); }
.trailer-pick img { width: 64px; aspect-ratio: 16 / 9; border-radius: 8px; object-fit: cover; flex: none; }
.trailer-pick span { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.trailer-pick:hover { border-color: var(--line-strong); color: #fff; }
.trailer-pick.on { border-color: rgba(124, 92, 255, .6); background: rgba(124, 92, 255, .14); color: #fff; }
.trailer-src { margin-top: 10px; font-size: 12.5px; color: var(--muted); }
.trailer-err { position: absolute; inset: 0; display: grid; place-items: center; padding: 20px; text-align: center; color: var(--text-2); }
.trailer-err svg { width: 28px; height: 28px; margin-bottom: 8px; color: var(--accent); }
.side-card { padding: 22px; }
.side-card h3 { font-size: 16px; margin-bottom: 14px; display: flex; align-items: center; gap: 10px; }
.side-card h3 svg { color: var(--accent); }
.mini-list { display: grid; gap: 10px; }
.mini { display: flex; align-items: center; gap: 12px; padding: 8px; border-radius: 12px; transition: background .2s; }
.mini:hover { background: rgba(255, 255, 255, .04); }
.mini img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; flex: none; background: #e9edf3; }
.mini b { display: block; font-size: 14px; line-height: 1.3; }
.mini small { color: var(--muted); font-size: 12.5px; }
.mini .p { color: var(--accent); font: 700 13.5px var(--display); }

/* Top up detail */
.tu-head { display: flex; gap: 22px; align-items: center; }
.tu-head .icon { width: 108px; height: 108px; border-radius: 26px; overflow: hidden; flex: none; box-shadow: var(--shadow-lg); border: 2px solid rgba(255, 255, 255, .15); }
.tu-head .icon img { width: 100%; height: 100%; object-fit: cover; }
.tu-feats { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 14px; font-size: 13.5px; color: var(--text-2); }
.tu-feats span { display: inline-flex; align-items: center; gap: 7px; }
.tu-feats svg { color: var(--accent); width: 16px; height: 16px; }
.step-card { padding: 0; overflow: hidden; }
.step-card + .step-card { margin-top: 18px; }
.step-head { display: flex; align-items: center; gap: 14px; padding: 18px 22px; border-bottom: 1px solid var(--line); }
.step-head .num { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--grad); color: #fff; font: 700 16px/1 var(--display); flex: none; }
.step-head h2 { font-size: 17px; }
.step-head small { color: var(--muted); display: block; font-size: 13px; font-weight: 400; }
.step-body { padding: 22px; }
.fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.guide { display: flex; gap: 10px; margin-top: 14px; padding: 12px 14px; border-radius: 12px; background: rgba(255, 255, 255, .03); border: 1px dashed var(--line-strong); font-size: 13.5px; color: var(--text-2); }
.guide svg { color: var(--accent); margin-top: 3px; }
.denom-group + .denom-group { margin-top: 22px; }
.denom-group h3 { font-size: 13px; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); margin-bottom: 12px; font-weight: 700; }
.denoms { display: grid; grid-template-columns: repeat(auto-fill, minmax(156px, 1fr)); gap: 10px; }
.denom { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 14px; border-radius: 14px; border: 1px solid var(--line-strong); background: var(--bg-soft); text-align: left; transition: .2s var(--ease); min-height: 92px; }
.denom:hover { border-color: rgba(124, 92, 255, .6); transform: translateY(-2px); }
.denom .n { font-weight: 700; font-size: 14px; line-height: 1.3; }
.denom .p { font: 700 15px/1.2 var(--display); color: var(--accent); margin-top: auto; }
.denom .o { font-size: 12px; color: var(--muted); text-decoration: line-through; }
.denom .t { position: absolute; top: -9px; right: 10px; }
.denom .ck { position: absolute; top: 10px; right: 10px; width: 20px; height: 20px; border-radius: 50%; border: 2px solid var(--line-strong); display: grid; place-items: center; transition: .2s; }
.denom .ck svg { width: 12px; height: 12px; opacity: 0; color: #fff; }
.denom.on { border-color: var(--primary); background: linear-gradient(180deg, rgba(124, 92, 255, .2), rgba(124, 92, 255, .06)); box-shadow: var(--glow); }
.denom.on .ck { background: var(--primary); border-color: var(--primary); }
.denom.on .ck svg { opacity: 1; }
.denom .t + .ck { display: none; }
.denom.on .t + .ck { display: grid; top: 18px; }
.paygroup + .paygroup { margin-top: 18px; }
.paygroup h3 { font-size: 13px; text-transform: uppercase; letter-spacing: .1em; color: var(--muted); margin-bottom: 10px; font-weight: 700; }
.pays { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.pay { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 14px; border: 1px solid var(--line-strong); background: var(--bg-soft); text-align: left; transition: .2s var(--ease); }
.pay:hover { border-color: rgba(124, 92, 255, .6); }
.pay.on { border-color: var(--primary); background: rgba(124, 92, 255, .12); box-shadow: var(--glow); }
.pay.disabled { opacity: .45; pointer-events: none; }
.pay .pay-logo { width: 54px; flex: none; }
.pay b { display: block; font-size: 14px; }
.pay small { color: var(--muted); font-size: 12px; }
.pay .tot { margin-left: auto; text-align: right; font: 700 13.5px/1.2 var(--display); color: #fff; white-space: nowrap; }
.pay .tot small { display: block; font: 500 11px var(--font); }
.summary-card { padding: 22px; }
.summary-card h3 { font-size: 16px; margin-bottom: 16px; }
.sum-row { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; padding: 7px 0; color: var(--text-2); }
.sum-row b { color: var(--text); text-align: right; }
.sum-total { display: flex; justify-content: space-between; align-items: baseline; padding-top: 14px; margin-top: 8px; border-top: 1px dashed var(--line-strong); }
.sum-total b { font: 700 24px/1 var(--display); background: var(--grad-text); -webkit-background-clip: text; background-clip: text; color: transparent; }
.secure { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--muted); margin-top: 12px; justify-content: center; }
.secure svg { color: var(--success); width: 15px; height: 15px; }
.promo-row { display: flex; gap: 8px; }
/* Bar beli menempel di bawah layar (hanya tablet & ponsel) */
.m-buybar { display: none; }
@media (max-width: 1024px) {
  .m-buybar { display: flex; align-items: center; justify-content: space-between; gap: 12px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 65; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); background: rgba(16, 20, 29, .92); backdrop-filter: blur(14px); border-top: 1px solid var(--line-strong); }
  .m-buybar small { display: block; font-size: 12px; color: var(--muted); }
  .m-buybar b { font: 700 18px/1.2 var(--display); color: #fff; }
  body[data-page="topup-detail"] { padding-bottom: 76px; }
  body[data-page="topup-detail"] .wa-float, body[data-page="topup-detail"] .to-top { bottom: 92px; }
  body[data-page="topup-detail"] .to-top { bottom: 158px; }
}
.promo-row .input { height: 44px; }

/* Product detail */
.product-layout { display: grid; grid-template-columns: 1.05fr 1fr; gap: 44px; align-items: start; }
.pd-gallery { position: sticky; top: calc(var(--header-h) + 20px); }
.pd-main { position: relative; border-radius: var(--r-xl); overflow: hidden; aspect-ratio: 4 / 3; background: #e9edf3; border: 1px solid var(--line); box-shadow: var(--shadow-lg); }
.pd-main img { width: 100%; height: 100%; object-fit: cover; transition: opacity .35s; }
.pd-thumbs { display: flex; gap: 10px; margin-top: 12px; }
.pd-thumbs button { width: 84px; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; border: 2px solid transparent; opacity: .65; transition: .2s; background: #e9edf3; }
.pd-thumbs button.on, .pd-thumbs button:hover { opacity: 1; border-color: var(--primary); }
.pd-thumbs img { width: 100%; height: 100%; object-fit: cover; }
.pd-info .brand-name { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); }
.pd-info h1 { font: 700 clamp(26px, 3.2vw, 38px)/1.15 var(--display); margin-top: 8px; }
.pd-info .variant { color: var(--muted); margin-top: 6px; }
.pd-price { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 22px 0 6px; }
.pd-price .price { font-size: 34px; }
.qty { display: inline-flex; align-items: center; border: 1px solid var(--line-strong); border-radius: 12px; overflow: hidden; height: 46px; }
.qty button { width: 42px; height: 100%; display: grid; place-items: center; color: var(--text-2); transition: background .2s; }
.qty button:hover { background: rgba(255, 255, 255, .06); color: #fff; }
.qty input { width: 48px; height: 100%; text-align: center; border: 0; background: none; outline: none; font-weight: 700; -moz-appearance: textfield; }
.qty input::-webkit-outer-spin-button, .qty input::-webkit-inner-spin-button { -webkit-appearance: none; }
.buy-row { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.buy-row .btn { flex: 1; min-width: 160px; }
.perks { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 22px; }
.perk { display: flex; gap: 10px; align-items: center; padding: 12px 14px; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); font-size: 13.5px; color: var(--text-2); }
.perk svg { color: var(--accent); }
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 24px; overflow-x: auto; scrollbar-width: none; }
.tabs button { padding: 14px 18px; font-weight: 600; color: var(--muted); position: relative; white-space: nowrap; transition: color .2s; }
.tabs button:hover { color: #fff; }
.tabs button.on { color: #fff; }
.tabs button.on::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; background: var(--grad); border-radius: 2px; }
.tab-panel { display: none; animation: fadeUp .4s var(--ease); }
.tab-panel.on { display: block; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* Review detail */
.score-panel { display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: center; padding: 28px; }
.score-panel .verdict { font: 600 18px/1.45 var(--display); color: var(--text); }
.bars { display: grid; gap: 12px; margin-top: 18px; }
.bar-row { display: grid; grid-template-columns: 110px 1fr 36px; gap: 12px; align-items: center; font-size: 13.5px; color: var(--text-2); }
.bar-row .track { height: 8px; border-radius: 8px; background: rgba(255, 255, 255, .08); overflow: hidden; }
.bar-row .fill { height: 100%; width: 0; border-radius: 8px; background: var(--grad); transition: width 1.2s var(--ease); }
.bar-row b { text-align: right; font-family: var(--display); color: #fff; }
.pros-cons { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 28px 0; }
.pc-box { padding: 22px; border-radius: 18px; border: 1px solid rgba(34, 197, 94, .3); background: rgba(34, 197, 94, .06); }
.pc-box.cons { border-color: rgba(244, 63, 94, .3); background: rgba(244, 63, 94, .06); }
.pc-box h3 { font-size: 15px; display: flex; gap: 8px; align-items: center; margin-bottom: 12px; }
.pc-box ul { list-style: none; display: grid; gap: 10px; font-size: 14.5px; color: var(--text-2); }
.pc-box li { display: flex; gap: 10px; }
.pc-box li svg { flex: none; margin-top: 4px; width: 16px; height: 16px; color: var(--success); }
.pc-box.cons li svg { color: var(--danger); }
.toc { display: grid; gap: 4px; }
.toc a { display: block; padding: 8px 12px; border-radius: 10px; font-size: 14px; color: var(--text-2); border-left: 2px solid var(--line); transition: .2s; }
.toc a:hover, .toc a.on { color: #fff; border-left-color: var(--primary); background: rgba(124, 92, 255, .08); }
.read-progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; z-index: 100; background: var(--grad); box-shadow: 0 0 12px rgba(124, 92, 255, .8); }
.article-cover { border-radius: var(--r-xl); overflow: hidden; border: 1px solid var(--line); margin-bottom: 32px; aspect-ratio: 21 / 9; box-shadow: var(--shadow-lg); }
.article-cover img { width: 100%; height: 100%; object-fit: cover; }
.author { display: flex; align-items: center; gap: 12px; }
.author .av { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: var(--grad); color: #fff; font: 700 16px var(--display); }
.author b { display: block; font-size: 14px; }
.author small { color: var(--muted); font-size: 12.5px; }

/* 9. OVERLAY -------------------------------------------------------------- */
.overlay { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 20px; background: rgba(3, 5, 9, .7); backdrop-filter: blur(6px); opacity: 0; pointer-events: none; transition: opacity .3s; }
.overlay.open { opacity: 1; pointer-events: auto; }
.modal { width: 100%; max-width: 520px; max-height: calc(100vh - 40px); overflow-y: auto; border-radius: var(--r-xl); background: var(--surface); border: 1px solid var(--line-strong); box-shadow: var(--shadow-lg); transform: translateY(16px) scale(.97); transition: transform .4s var(--ease); }
.modal.lg { max-width: 760px; }
.overlay.open .modal { transform: none; }
.modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 22px; border-bottom: 1px solid var(--line); position: sticky; top: 0; background: var(--surface); z-index: 2; }
.modal-head h3 { font-size: 18px; }
.modal-body { padding: 22px; }
.success-ico { width: 72px; height: 72px; border-radius: 22px; margin: 4px auto 16px; display: grid; place-items: center; background: rgba(34, 197, 94, .14); color: #4ade80; border: 1px solid rgba(34, 197, 94, .35); animation: pop .6s var(--ease); }
.success-ico svg { width: 34px; height: 34px; }
@keyframes pop { 0% { transform: scale(.4) rotate(-20deg); opacity: 0; } 100% { transform: none; opacity: 1; } }
.invoice { padding: 16px; border-radius: 14px; background: var(--bg-soft); border: 1px solid var(--line); margin: 16px 0; }
.lightbox img { max-width: min(1200px, 92vw); max-height: 82vh; border-radius: 16px; box-shadow: var(--shadow-lg); }
.lightbox .icon-btn { position: absolute; top: 20px; right: 20px; background: var(--surface-3); }

.drawer { position: fixed; inset: 0; z-index: 110; pointer-events: none; overflow: hidden; visibility: hidden; transition: visibility 0s .5s; }
.drawer.open { visibility: visible; transition: none; }
.drawer-backdrop { position: absolute; inset: 0; background: rgba(3, 5, 9, .6); opacity: 0; transition: opacity .3s; backdrop-filter: blur(3px); }
.drawer-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(440px, 100vw); background: var(--surface); border-left: 1px solid var(--line); display: flex; flex-direction: column; transform: translateX(100%); transition: transform .45s var(--ease); }
.drawer.open { pointer-events: auto; }
.drawer.open .drawer-backdrop { opacity: 1; }
.drawer.open .drawer-panel { transform: none; }
.drawer-head { display: flex; align-items: center; justify-content: space-between; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.drawer-head h3 { font-size: 18px; display: flex; gap: 10px; align-items: center; }
.drawer-body { flex: 1; overflow-y: auto; padding: 18px 22px; }
.drawer-foot { padding: 18px 22px 22px; border-top: 1px solid var(--line); background: var(--surface-2); }
.ship-bar { font-size: 12.5px; color: var(--text-2); margin-bottom: 14px; }
.ship-bar .track { height: 6px; border-radius: 6px; background: rgba(255, 255, 255, .08); overflow: hidden; margin-top: 8px; }
.ship-bar .fill { height: 100%; background: var(--grad); border-radius: 6px; transition: width .6s var(--ease); }
.citem { display: grid; grid-template-columns: 76px 1fr; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); animation: fadeUp .35s var(--ease); }
.citem img { width: 76px; height: 76px; border-radius: 12px; object-fit: cover; background: #e9edf3; }
.citem b { font-size: 14px; line-height: 1.35; display: block; }
.citem small { color: var(--muted); font-size: 12.5px; }
.citem .row { margin-top: 10px; justify-content: space-between; }
.citem .qty { height: 34px; border-radius: 10px; }
.citem .qty button { width: 32px; }
.citem .qty input { width: 34px; font-size: 13px; }
.citem .rm { color: var(--muted); width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; }
.citem .rm:hover { color: var(--danger); background: rgba(244, 63, 94, .1); }

.search-ov { align-items: start; padding-top: 10vh; }
.search-box { width: 100%; max-width: 680px; border-radius: 22px; background: var(--surface); border: 1px solid var(--line-strong); box-shadow: var(--shadow-lg); overflow: hidden; transform: translateY(-10px); transition: transform .35s var(--ease); }
.overlay.open .search-box { transform: none; }
.search-input-row { display: flex; align-items: center; gap: 12px; padding: 0 18px; border-bottom: 1px solid var(--line); }
.search-input-row svg { color: var(--muted); width: 22px; height: 22px; }
.search-input-row input { flex: 1; height: 62px; background: none; border: 0; outline: none; font-size: 17px; }
.search-results { max-height: 60vh; overflow-y: auto; padding: 10px; }
.sr-group h4 { font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); padding: 10px 10px 6px; }
.sr-item { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: 12px; }
.sr-item:hover, .sr-item.hl { background: rgba(124, 92, 255, .12); }
.sr-item img { width: 44px; height: 44px; border-radius: 10px; object-fit: cover; flex: none; background: #e9edf3; }
.sr-item b { display: block; font-size: 14.5px; }
.sr-item small { color: var(--muted); font-size: 12.5px; }
.sr-item .go { margin-left: auto; color: var(--muted); }
.sr-hint { padding: 26px; text-align: center; color: var(--muted); font-size: 14px; }

.toasts { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 150; display: grid; gap: 10px; justify-items: center; pointer-events: none; }
.toast { display: flex; align-items: center; gap: 12px; padding: 12px 18px 12px 14px; border-radius: 14px; background: #1b2232; border: 1px solid var(--line-strong); box-shadow: var(--shadow-lg); font-size: 14px; font-weight: 600; animation: toastIn .45s var(--ease); pointer-events: auto; }
.toast .ti { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; background: rgba(34, 197, 94, .16); color: #4ade80; }
.toast.err .ti { background: rgba(244, 63, 94, .16); color: #fb7f97; }
.toast.out { animation: toastOut .35s var(--ease) forwards; }
@keyframes toastIn { from { opacity: 0; transform: translateY(16px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes toastOut { to { opacity: 0; transform: translateY(10px) scale(.96); } }
.fly { position: fixed; z-index: 160; width: 56px; height: 56px; border-radius: 14px; object-fit: cover; pointer-events: none; box-shadow: var(--shadow-lg); transition: transform .8s cubic-bezier(.5, -.3, .7, 1), opacity .8s; }

/* 10. EFEK 3D & ANIMASI --------------------------------------------------- */
.tilt { --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%; transform: perspective(900px) rotateX(var(--rx)) rotateY(var(--ry)) translateZ(0); transform-style: preserve-3d; transition: transform .5s var(--ease), border-color .3s, box-shadow .3s; will-change: transform; }
.tilt.tilting { transition: transform .08s linear, border-color .3s, box-shadow .3s; }
.tilt::before { content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none; border-radius: inherit; background: radial-gradient(420px circle at var(--mx) var(--my), rgba(255, 255, 255, .12), transparent 45%); opacity: 0; transition: opacity .3s; }
.tilt.tilting::before { opacity: 1; }
.tilt .pop { transform: translateZ(30px); }
/* Reveal memakai properti translate/scale (bukan transform) agar tidak bentrok dengan tilt 3D */
[data-reveal] { opacity: 0; translate: 0 28px; scale: .985; transition: opacity .8s var(--ease) var(--d, 0s), translate .8s var(--ease) var(--d, 0s), scale .8s var(--ease) var(--d, 0s), transform .5s var(--ease), border-color .3s, box-shadow .3s; }
[data-reveal].in { opacity: 1; translate: none; scale: none; }
img.broken { opacity: 0; }
.float-y { animation: float 6s ease-in-out infinite; }
.skeleton { background: linear-gradient(90deg, var(--surface) 0%, var(--surface-3) 50%, var(--surface) 100%); background-size: 200% 100%; animation: shimmer 1.4s infinite; border-radius: 12px; }
@keyframes shimmer { to { background-position: -200% 0; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  [data-reveal] { opacity: 1; translate: none; scale: none; }
  .ring { animation: none; transform: rotateX(-8deg); }
}

/* 11. RESPONSIVE ---------------------------------------------------------- */
@media (max-width: 1340px) {
  .search-trigger { min-width: 0; width: 42px; padding: 0; justify-content: center; border-color: transparent; background: none; }
  .search-trigger span, .search-trigger .kbd { display: none; }
  .search-trigger svg { width: 20px; height: 20px; }
  .nav { gap: 18px; }
  .nav-link { padding: 9px 10px; font-size: 14px; }
}
@media (max-width: 1024px) {
  .nav-links { display: none; }
  .burger { display: grid; }
  .nav { justify-content: space-between; }
  .hero-grid { grid-template-columns: 1fr; }
  .ring-stage { height: 440px; margin-top: 10px; }
  .features, .steps { grid-template-columns: repeat(2, 1fr); }
  .spotlight { grid-template-columns: 1fr; }
  .spot-list { flex-direction: row; overflow-x: auto; padding: 0 24px 24px; scrollbar-width: none; }
  .spot-thumb { min-width: 240px; }
  .spot-thumb.on { transform: none; }
  .layout-2 { grid-template-columns: 1fr; }
  .aside-sticky { position: static; }
  .product-layout { grid-template-columns: 1fr; gap: 28px; }
  .pd-gallery { position: static; }
  .footer-grid { grid-template-columns: repeat(3, 1fr); }
  .footer-about { grid-column: 1 / -1; }
  .faq-layout { grid-template-columns: 1fr; }
  .faq-nav { position: static; display: flex; overflow-x: auto; scrollbar-width: none; }
  .faq-nav button { white-space: nowrap; }
  .faq-nav button span.n { display: none; }
  .cta-band, .footer-cta { grid-template-columns: 1fr; }
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .acard.wide { grid-template-columns: 1fr; }
  .acard.wide .acard-media { min-height: 220px; }
}
@media (max-width: 720px) {
  body { font-size: 14.5px; }
  .container { padding: 0 16px; }
  .section { padding: 64px 0; }
  .header-top-btn { display: none; }
  .nav { gap: 10px; }
  .nav-actions { gap: 0; }
  .nav-actions .icon-btn, .search-trigger { width: 40px; }
  .brand-logo { height: 44px; }
  .hero { padding-bottom: 64px; }
  .hero .lead { font-size: 16px; }
  .hero-stats { grid-template-columns: repeat(2, 1fr); gap: 20px; }
  .ring-stage { height: 360px; perspective: 1000px; }
  .ring-item { width: 120px; height: 180px; left: -60px; top: -90px; }
  .ring-card { display: none; }
  .ring-floor { width: 320px; }
  .features, .steps { grid-template-columns: 1fr; }
  .grid-topup { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .grid-games, .grid-products, .grid-reviews, .grid-articles, .grid-3, .grid-2 { grid-template-columns: 1fr; }
  .grid-products.two { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .grid-products.two .pcard-body { padding: 12px; }
  .grid-products.two .pcard-body .tl { display: none; }
  .grid-products.two .pcard-foot { flex-direction: column; align-items: stretch; }
  .grid-products.two .pcard-foot .add { width: 100%; }
  .spot-body { padding: 28px 20px; min-height: 380px; }
  .spot-list { padding: 0 16px 16px; }
  .footer-grid { grid-template-columns: repeat(2, 1fr); gap: 28px; }
  .footer-cta { padding: 28px 22px; margin-top: -56px; }
  .newsletter { flex-direction: column; }
  .cta-band { padding: 32px 22px; }
  .detail-head { flex-direction: column; align-items: flex-start; gap: 18px; }
  .detail-head .poster { width: 120px; transform: none; }
  .detail-hero { min-height: 0; }
  .hl-grid, .pros-cons, .perks { grid-template-columns: 1fr; }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .trailer-list { grid-template-columns: 1fr; }
  .trailer-play .ico { width: 60px; height: 60px; }
  .tu-head .icon { width: 80px; height: 80px; border-radius: 20px; }
  .denoms { grid-template-columns: repeat(2, 1fr); }
  .pays { grid-template-columns: 1fr; }
  .score-panel { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .bar-row { grid-template-columns: 90px 1fr 32px; text-align: left; }
  .toolbar { position: static; }
  .toolbar .select { flex: 1; }
  .wa-float { width: 54px; padding: 0; justify-content: center; }
  .wa-float span { display: none; }
  .article-cover { aspect-ratio: 16 / 9; }
  .page-hero { padding-bottom: 40px; }
}
