:root{--bg:#0b0f1a;--bg-soft:#121826;--card:#161d2e;--card-hi:#1d263c;--line:#26304a;--text:#e8ecf6;--muted:#93a0bd;--brand:#5b8cff;--brand-2:#7c5cff;--ok:#2ecc8f;--warn:#ffb020;--err:#ff5d6c}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.container{max-width:1080px;margin:0 auto;padding:24px 20px 64px}.site-head{display:flex;align-items:center;justify-content:space-between;padding:16px 0 8px;border-bottom:1px solid var(--line);margin-bottom:28px}.brand{font-weight:800;font-size:20px;letter-spacing:-.02em;background:linear-gradient(90deg,var(--brand),var(--brand-2));-webkit-background-clip:text;background-clip:text;color:transparent}.brand small{display:block;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);-webkit-text-fill-color:var(--muted)}.hero{padding:28px;border-radius:18px;background:radial-gradient(1200px 300px at 10% -20%,rgba(91,140,255,.28),transparent 60%),radial-gradient(900px 260px at 90% 0,rgba(124,92,255,.22),transparent 60%),var(--bg-soft);border:1px solid var(--line);margin-bottom:28px}.hero h1{margin:0 0 8px;font-size:30px;line-height:1.15;letter-spacing:-.02em}.hero p{margin:0;color:var(--muted);font-size:15px;max-width:60ch}.section-title{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}.grid{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.grid.sm{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;transition:transform .12s ease,border-color .12s ease,background .12s ease}a.card:hover,button.card:hover{transform:translateY(-2px);border-color:var(--brand);background:var(--card-hi)}.card .icon{font-size:34px;line-height:1;margin-bottom:10px}.card h2{margin:0 0 4px;font-size:17px}.card .price{font-weight:700;color:var(--brand);margin-top:8px}.muted{color:var(--muted);font-size:13px}.prod{display:flex;flex-direction:column;gap:6px;text-align:left;width:100%;cursor:pointer;font:inherit;color:inherit}.prod.selected{border-color:var(--brand);background:var(--card-hi);box-shadow:inset 0 0 0 2px rgba(91,140,255,.25)}.prod .sku{font-size:11px;color:var(--muted);font-family:ui-monospace,monospace}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px}input,select{width:100%;padding:11px 13px;border-radius:10px;border:1px solid var(--line);background:var(--bg-soft);color:var(--text);font-size:15px;outline:none}input:focus,select:focus{border-color:var(--brand)}.btn{display:inline-block;width:100%;margin-top:18px;padding:13px 16px;border-radius:11px;border:0;background:linear-gradient(90deg,var(--brand),var(--brand-2));color:#fff;font-size:15px;font-weight:700;cursor:pointer}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text);text-align:center}.alert{margin-top:16px;padding:12px 14px;border-radius:10px;font-size:14px;border:1px solid var(--line);background:var(--bg-soft)}.alert.err{border-color:var(--err);color:#ffd7db}.alert.ok{border-color:var(--ok);color:#ccf6e6}.badge{display:inline-block;padding:5px 11px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid var(--line);background:var(--bg-soft)}.badge.ok{border-color:var(--ok);color:var(--ok)}.badge.warn{border-color:var(--warn);color:var(--warn)}.badge.err{border-color:var(--err);color:var(--err)}.qris-box{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border-radius:14px;background:#fff}.qris-box img{width:260px;height:260px;image-rendering:pixelated}.qris-box .cap{color:#0b0f1a;font-size:13px;font-weight:600;text-align:center}.rows{display:grid;grid-gap:10px;gap:10px;margin-top:8px}.row{display:flex;justify-content:space-between;gap:12px;font-size:14px}.row span:first-child{color:var(--muted)}.row span:last-child{font-weight:600;text-align:right;word-break:break-all}.spin{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.25);border-top-color:#fff;border-radius:50%;display:inline-block;vertical-align:-3px;margin-right:8px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.foot{margin-top:34px;color:var(--muted);font-size:12px;text-align:center}