:root{
  --bg:#ffffff;
  --card: rgba(255,255,255,.90);
  --stroke: rgba(17,24,39,.10);
  --text:#0b1220;
  --muted: rgba(2,6,23,.62);
  --shadow: 0 22px 60px rgba(2,6,23,.10);
  --shadow2: 0 12px 32px rgba(2,6,23,.08);
  --blue:#2563eb;
  --gold1:#f7d37a;
  --gold2:#caa24a;
}

*{box-sizing:border-box}
html,body{height:100%}

body{
  margin:0;
  font-family:"Plus Jakarta Sans",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  color:var(--text);
  background:
    radial-gradient(950px 520px at 15% 5%, rgba(37,99,235,.12), transparent 56%),
    radial-gradient(900px 560px at 86% 8%, rgba(202,162,74,.18), transparent 60%),
    radial-gradient(980px 580px at 50% 98%, rgba(37,99,235,.08), transparent 62%),
    linear-gradient(180deg, #ffffff, #fbfbfe);
  overflow-x:hidden;
}

.wrap{
  width:min(1180px, 100%);
  margin:0 auto;
  padding:22px 16px 26px;
}

.top{
  display:flex;
  align-items:stretch;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
}

.brand{
  flex: 1 1 520px;
  display:flex;
  align-items:center;
  gap:14px;
  padding:16px 16px;
  border:1px solid var(--stroke);
  background:var(--card);
  border-radius:22px;
  box-shadow:var(--shadow2);
  backdrop-filter: blur(10px);
}

.mark{
  width:54px;height:54px;border-radius:18px;
  background:
    radial-gradient(circle at 30% 30%, rgba(255,255,255,.95), rgba(255,255,255,0) 58%),
    linear-gradient(135deg,var(--gold1),var(--gold2));
  box-shadow:0 18px 40px rgba(202,162,74,.22);
  position:relative;
  overflow:hidden;
}
.mark:before{
  content:"";
  position:absolute;
  inset:-22px;
  background:
    radial-gradient(circle at 20% 20%, rgba(255,255,255,.25), rgba(255,255,255,0) 55%),
    conic-gradient(from 180deg, rgba(255,255,255,0), rgba(255,255,255,.24), rgba(255,255,255,0));
  animation:sheen 3.6s linear infinite;
}
@keyframes sheen{to{transform:rotate(360deg)}}

.kicker{
  font-weight:900;
  letter-spacing:.14em;
  font-size:12px;
  color: rgba(2,6,23,.52);
}
.brand h1{
  margin:3px 0 6px;
  font-size: clamp(26px, 3.3vw, 44px);
  line-height:1.02;
  letter-spacing:-.02em;
}
.sub{
  margin:0;
  color: var(--muted);
  font-size:14px;
  line-height:1.45;
}

.controls{
  flex: 0 1 420px;
  display:flex;
  gap:12px;
  align-items:stretch;
}
@media (max-width: 820px){
  .controls{ flex: 1 1 100%; }
}

.phoneCard{
  flex:1;
  border:1px solid var(--stroke);
  background:var(--card);
  border-radius:22px;
  padding:14px 14px;
  box-shadow:var(--shadow2);
  backdrop-filter: blur(10px);
}
.phoneCard label{
  display:block;
  font-weight:900;
  font-size:12px;
  letter-spacing:.08em;
  color: rgba(2,6,23,.55);
}
.phoneCard input{
  width:100%;
  margin-top:8px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid rgba(17,24,39,.14);
  background: rgba(255,255,255,.92);
  outline:none;
  font-size:15px;
  color: var(--text);
  transition: box-shadow .2s ease, border-color .2s ease;
}
.phoneCard input:focus{
  border-color: rgba(37,99,235,.32);
  box-shadow: 0 0 0 4px rgba(37,99,235,.10);
}

.btnGhost{
  border:1px solid rgba(17,24,39,.14);
  background: rgba(255,255,255,.75);
  border-radius:18px;
  padding:12px 14px;
  font-weight:900;
  cursor:pointer;
  box-shadow: var(--shadow2);
  transition: transform .08s ease, box-shadow .2s ease;
  min-width: 110px;
}
.btnGhost:hover{ box-shadow: 0 16px 38px rgba(2,6,23,.10); }
.btnGhost:active{ transform: translateY(1px) scale(.99); }

.stage{
  margin-top:14px;
  border:1px solid var(--stroke);
  background: rgba(255,255,255,.90);
  border-radius:26px;
  padding:14px;
  box-shadow: var(--shadow);
  backdrop-filter: blur(10px);
}

.stageHead{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:6px 6px 12px;
  flex-wrap:wrap;
}
.stageTitle{
  font-weight:1000;
  letter-spacing:-.01em;
  font-size:16px;
}
.chips{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 12px;
  border-radius:999px;
  border:1px solid rgba(17,24,39,.10);
  background: rgba(255,255,255,.82);
  font-weight:900;
  font-size:12px;
  color: rgba(2,6,23,.75);
}
.chipDot{
  width:10px;height:10px;border-radius:999px;
  background: linear-gradient(135deg, var(--gold1), var(--gold2));
  box-shadow: 0 0 0 4px rgba(202,162,74,.12);
}

.grid{
  display:grid;
  grid-template-columns: repeat(4, 1fr);
  gap:14px;
  padding:8px;
}
@media (max-width: 980px){ .grid{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px){ .grid{ grid-template-columns: 1fr; } }

/* ==== Box Card ==== */
.card{
  border:1px solid rgba(17,24,39,.10);
  background: rgba(255,255,255,.86);
  border-radius:22px;
  box-shadow: 0 12px 30px rgba(2,6,23,.08);
  overflow:hidden;
  position:relative;
  transition: transform .18s ease, box-shadow .22s ease;
}
.card:hover{
  transform: translateY(-2px);
  box-shadow: 0 18px 44px rgba(2,6,23,.10);
}

.cardTop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:12px 12px 0;
}
.pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  border-radius:999px;
  background: rgba(2,6,23,.06);
  border:1px solid rgba(2,6,23,.08);
  font-weight:1000;
  font-size:12px;
  color: rgba(2,6,23,.70);
  letter-spacing:.08em;
}
.pillDot{
  width:8px;height:8px;border-radius:999px;
  background: linear-gradient(135deg, var(--gold1), var(--gold2));
  box-shadow: 0 0 0 4px rgba(202,162,74,.10);
}
.boxNo{
  padding:8px 10px;
  border-radius:999px;
  background: rgba(255,255,255,.86);
  border:1px solid rgba(2,6,23,.08);
  font-weight:1000;
  font-size:12px;
  color: rgba(2,6,23,.70);
}

.art{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px 12px 0;
  position:relative;
}
.art::before{
  content:"";
  position:absolute;
  inset:14px 18px 0;
  border-radius:20px;
  background:
    radial-gradient(220px 160px at 30% 20%, rgba(37,99,235,.10), rgba(37,99,235,0) 60%),
    radial-gradient(220px 160px at 80% 20%, rgba(202,162,74,.12), rgba(202,162,74,0) 60%),
    linear-gradient(180deg, rgba(2,6,23,.02), rgba(2,6,23,0));
  filter: blur(0);
  opacity:.85;
}
.art img{
  width:100%;
  max-width: 240px;
  height:auto;
  display:block;
  filter: drop-shadow(0 22px 42px rgba(2,6,23,.22));
  transform: translateZ(0);
  transition: transform .22s ease, filter .22s ease;
  position:relative;
  z-index:1;
}
.card:hover .art img{
  transform: scale(1.02) translateY(-2px);
}

.badgePrize{
  position:absolute;
  inset:auto 14px 18px 14px;
  z-index:2;
  display:none;
  padding:12px 12px;
  border-radius:18px;
  background: rgba(255,255,255,.78);
  border:1px solid rgba(2,6,23,.10);
  backdrop-filter: blur(10px);
  box-shadow: 0 18px 45px rgba(2,6,23,.10);
  text-align:center;
  font-weight:1000;
  color: rgba(2,6,23,.78);
}
.badgePrize b{
  display:block;
  font-size:18px;
  color: rgba(37,99,235,.95);
  letter-spacing:-.01em;
  margin-top:4px;
}

.cardBottom{
  padding:12px 12px 14px;
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:space-between;
}
.desc{
  font-size:12px;
  color: rgba(2,6,23,.60);
  font-weight:900;
}
.btnOpen{
  border:none;
  border-radius:16px;
  padding:12px 14px;
  font-weight:1000;
  cursor:pointer;
  background: #2563eb;
  color:#fff;
  box-shadow: 0 14px 28px rgba(37,99,235,.18);
  transition: transform .08s ease, opacity .2s ease, filter .2s ease;
}
.btnOpen:active{ transform: translateY(1px) scale(.99); }
.btnOpen:disabled{ opacity:.55; cursor:not-allowed; }

/* Opening FX */
.card.opening img{
  animation: shake .55s ease-in-out both;
}
@keyframes shake{
  0%{ transform: translateY(0) rotate(0deg) scale(1); }
  25%{ transform: translateY(-2px) rotate(-1.4deg) scale(1.02); }
  50%{ transform: translateY(2px) rotate(1.3deg) scale(1.02); }
  75%{ transform: translateY(-1px) rotate(-0.9deg) scale(1.02); }
  100%{ transform: translateY(0) rotate(0deg) scale(1); }
}
.card.opening .art::after{
  content:"";
  position:absolute;
  inset:10px 14px 0;
  border-radius:24px;
  background:
    radial-gradient(circle at 50% 30%, rgba(255,255,255,.80), rgba(255,255,255,0) 55%),
    conic-gradient(from 180deg, rgba(37,99,235,0), rgba(37,99,235,.18), rgba(202,162,74,.20), rgba(37,99,235,0));
  opacity:.65;
  filter: blur(1px);
  animation: glowSpin .7s linear infinite;
  z-index:0;
}
@keyframes glowSpin{ to{ transform: rotate(360deg);} }

.card.opened .btnOpen{
  background: rgba(2,6,23,.10);
  color: rgba(2,6,23,.55);
  box-shadow:none;
}
.card.opened .desc{ color: rgba(22,163,74,.82); }
.card.opened .badgePrize{ display:block; }

/* Confetti Layer */
#fxLayer{
  position:fixed;
  inset:0;
  pointer-events:none;
  overflow:hidden;
  z-index:9999;
}
.fx{
  position:absolute;
  top:-12px;
  width:10px;
  height:16px;
  border-radius:2px;
  opacity:.95;
  transform: translate3d(0,0,0) rotate(0deg);
  animation: fall linear forwards;
  filter: drop-shadow(0 6px 10px rgba(0,0,0,.18));
}
@keyframes fall{
  to{ transform: translate3d(var(--dx), 110vh, 0) rotate(var(--rot)); }
}

/* SweetAlert styling */
.swal2-popup{
  border-radius: 18px !important;
  border:1px solid rgba(17,24,39,.10) !important;
  box-shadow: 0 24px 70px rgba(2,6,23,.16) !important;
}
.swal2-confirm{
  border-radius:14px !important;
  font-weight:1000 !important;
  padding:12px 14px !important;
  background:#2563eb !important;
}

.foot{
  margin-top:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-size:12px;
  color: rgba(2,6,23,.55);
}
.dot{opacity:.55}
.muted{opacity:.85}
