/* 1xBet Cricket Bonus — mobile-first PWA lander
   Designed for 360-430px Android portrait viewports. */

:root{
  --xb-navy:#061627;
  --xb-navy2:#0a2a4d;
  --xb-blue:#2f9bff;
  --xb-blue-deep:#1272c4;
  --gold:#2f9bff;
  --gold-deep:#1272c4;
  --white:#f4f8fd;
  --glow:#9be24f;
  --bd-red:#f42a41;
  --tap:44px;
  --safe-t:env(safe-area-inset-top);
  --safe-b:env(safe-area-inset-bottom);
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{
  height:100%;
  width:100%;
  overflow:hidden;
  overscroll-behavior:none;
  background:var(--xb-navy);
  color:var(--white);
  font-family:'Hind Siliguri','Noto Sans Bengali',system-ui,-apple-system,'Segoe UI',sans-serif;
  touch-action:manipulation;
  user-select:none;
  -webkit-user-select:none;
  -webkit-font-smoothing:antialiased;
}

/* full-viewport 3D canvas + FX overlay */
#scene{position:fixed;inset:0;z-index:1;width:100%;height:100%;display:block}
#fx{position:fixed;inset:0;z-index:9;pointer-events:none;width:100%;height:100%}

/* UI layer */
.ui{
  position:fixed;inset:0;z-index:2;pointer-events:none;
  display:flex;flex-direction:column;
  padding-top:var(--safe-t);
  padding-bottom:var(--safe-b);
}

/* ---------- Header ---------- */
.topbar{
  display:flex;justify-content:space-between;align-items:center;
  padding:10px 14px 4px;
}
.brand{display:flex;align-items:center;gap:8px}
.xblogo{
  font-family:Inter,Arial,sans-serif;font-weight:900;font-style:italic;
  font-size:clamp(18px,4.6vw,21px);letter-spacing:-.5px;color:#fff;
  background:linear-gradient(120deg,var(--xb-blue-deep),var(--xb-blue));
  padding:3px 12px 3px 9px;border-radius:6px;
  box-shadow:0 2px 10px rgba(47,155,255,.45);
}
.xblogo b{color:#cfe9ff;font-weight:900}
.hdr-right{display:flex;align-items:center;gap:12px}
.attempts{display:flex;gap:6px;align-items:center}
.att{
  width:12px;height:12px;border-radius:50%;
  background:rgba(255,255,255,.2);
  border:1.5px solid rgba(255,255,255,.35);
  transition:all .3s;
}
.att.used{background:var(--bd-red);border-color:var(--bd-red)}
.att.won{background:var(--glow);border-color:var(--glow);box-shadow:0 0 14px var(--glow)}
.soundtoggle{
  pointer-events:auto;background:none;border:none;color:var(--white);
  opacity:.7;font-size:20px;padding:6px;min-width:var(--tap);min-height:var(--tap);
}

.online{
  display:flex;align-items:center;justify-content:center;gap:6px;
  margin:2px 14px 0;padding:4px 10px;
  font-size:11.5px;color:#cfe9ff;opacity:.9;
}
.pulse{
  width:7px;height:7px;border-radius:50%;background:var(--glow);
  box-shadow:0 0 8px var(--glow);animation:pulse-dot 1.4s infinite;
}
@keyframes pulse-dot{0%,100%{opacity:.6}50%{opacity:1}}

/* ---------- Message area ---------- */
.msg{
  position:absolute;top:16%;left:0;right:0;
  text-align:center;padding:0 22px;
  transition:opacity .3s;
  pointer-events:none;
}
.msg h1{
  font-size:clamp(22px,6.4vw,28px);
  font-weight:800;line-height:1.25;
  text-shadow:0 2px 20px rgba(0,0,0,.85);
}
.msg h1 span{color:var(--gold)}
.msg p{
  margin-top:6px;
  font-size:clamp(13px,3.6vw,15px);
  opacity:.92;text-shadow:0 1px 8px rgba(0,0,0,.8);
}
.msg.flash h1{animation:pop .5s ease}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.12)}100%{transform:scale(1)}}

/* ---------- Banner (MISS / FOUR / SIX!) ---------- */
.banner{
  position:absolute;top:38%;left:50%;
  transform:translate(-50%,-50%) scale(0);
  font-size:clamp(42px,12vw,58px);
  font-weight:800;text-shadow:0 4px 28px rgba(0,0,0,.85);
  transition:transform .35s cubic-bezier(.2,1.6,.4,1);
  z-index:3;white-space:nowrap;pointer-events:none;
}
.banner.show{transform:translate(-50%,-50%) scale(1)}
.banner.miss{color:var(--bd-red)}
.banner.four{color:#7ec8ff}
.banner.six{color:var(--glow);font-size:clamp(52px,15vw,76px)}

/* ---------- Timing meter ---------- */
.meter{
  position:absolute;
  bottom:calc(var(--safe-b) + 205px);
  left:50%;transform:translateX(-50%);
  width:min(80%,220px);height:14px;
  border-radius:8px;background:rgba(0,0,0,.55);
  border:1px solid rgba(255,255,255,.28);
  overflow:visible;opacity:0;transition:opacity .25s;
}
.meter.on{opacity:1}
.meter .zone{
  position:absolute;left:37%;width:26%;top:0;bottom:0;
  background:rgba(155,226,79,.4);
  border-left:1px solid var(--glow);border-right:1px solid var(--glow);
  transition:left .3s,width .3s;
}
.meter.big .zone{
  left:31%;width:38%;
  background:rgba(155,226,79,.55);
  box-shadow:0 0 18px rgba(155,226,79,.6);
}
.meter .pin{
  position:absolute;top:-4px;width:5px;height:22px;
  border-radius:2px;background:#fff;
  box-shadow:0 0 10px var(--xb-blue);
}
.meter.big .pin{background:var(--glow);box-shadow:0 0 14px var(--glow)}
.biglbl{
  position:absolute;top:-32px;left:50%;transform:translateX(-50%);
  font-size:clamp(15px,4.4vw,18px);font-weight:800;
  color:var(--glow);text-shadow:0 0 16px rgba(155,226,79,.9);
  white-space:nowrap;display:none;
}
.meter.big .biglbl{display:block;animation:bigpulse .55s ease-in-out infinite alternate}
@keyframes bigpulse{from{transform:translateX(-50%) scale(1)}to{transform:translateX(-50%) scale(1.18)}}

/* ---------- Hit button ---------- */
.hitzone{
  position:absolute;bottom:calc(var(--safe-b) + 66px);left:0;right:0;
  display:flex;justify-content:center;pointer-events:none;
}
.hitbtn{
  pointer-events:auto;
  width:clamp(120px,32vw,140px);
  height:clamp(120px,32vw,140px);
  border-radius:50%;
  border:4px solid rgba(255,255,255,.25);
  background:radial-gradient(circle at 35% 28%,#8fd0ff,var(--gold) 52%,var(--gold-deep));
  color:#04213c;
  font-size:clamp(19px,5.4vw,22px);font-weight:800;
  box-shadow:0 10px 34px rgba(47,155,255,.5),inset 0 -8px 14px rgba(0,0,0,.28);
  transition:transform .1s;
  font-family:inherit;
}
.hitbtn:active{transform:scale(.92)}
.hitbtn.pulse{animation:pulse 1.3s ease-in-out infinite}
@keyframes pulse{
  0%,100%{box-shadow:0 10px 34px rgba(47,155,255,.5)}
  50%{box-shadow:0 10px 60px rgba(47,155,255,.95)}
}
.hitbtn:disabled{filter:grayscale(.7);opacity:.5;animation:none}

/* ---------- Timer strip ---------- */
.timer{
  position:absolute;
  bottom:calc(var(--safe-b) + 32px);
  left:14px;right:14px;
  display:flex;justify-content:space-between;align-items:center;
  padding:6px 12px;border-radius:9px;
  background:rgba(6,22,39,.65);border:1px solid rgba(47,155,255,.2);
  font-size:12.5px;
}
.timer .lbl{opacity:.75}
.timer .clock{font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}

/* ---------- Winners ticker ---------- */
.winners{
  position:absolute;
  bottom:var(--safe-b);
  left:0;right:0;
  overflow:hidden;
  background:rgba(6,22,39,.55);
  border-top:1px solid rgba(47,155,255,.15);
}
.ticker{width:100%;overflow:hidden}
.tickrow{
  display:inline-block;white-space:nowrap;padding:6px 0;
  animation:scroll 26s linear infinite;
  font-size:11.5px;
}
.tickrow .w{margin-right:22px;opacity:.85}
.tickrow .w b{color:var(--glow);font-weight:700}
@keyframes scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- Win modal ---------- */
.modal-bg{
  position:fixed;inset:0;z-index:20;
  background:rgba(2,9,5,.9);backdrop-filter:blur(7px);
  display:none;align-items:center;justify-content:center;
  padding:20px;pointer-events:auto;
  padding-top:calc(var(--safe-t) + 20px);
  padding-bottom:calc(var(--safe-b) + 20px);
}
.modal-bg.show{display:flex}
.modal{
  width:100%;max-width:360px;max-height:100%;overflow:auto;
  background:linear-gradient(160deg,#0d2c50,#061627);
  border:1px solid rgba(47,155,255,.55);border-radius:22px;
  padding:28px 22px;text-align:center;
  animation:rise .5s cubic-bezier(.2,1.4,.4,1);
  position:relative;
}
.modal::before{
  content:'';position:absolute;top:-46px;left:50%;transform:translateX(-50%);
  width:190px;height:92px;border-radius:0 0 190px 190px;
  background:radial-gradient(ellipse at top,rgba(47,155,255,.4),transparent 70%);
}
@keyframes rise{from{transform:translateY(60px) scale(.9);opacity:0}to{transform:none;opacity:1}}
.modal-logo{margin-bottom:10px;position:relative}
.modal-logo .xblogo{font-size:17px}
.modal .crown{font-size:44px;line-height:1;margin-bottom:6px;position:relative}
.won{
  font-size:clamp(20px,5.6vw,24px);font-weight:800;line-height:1.25;
}
.won .g{color:var(--gold)}
.prize{
  margin:18px 0;padding:16px 12px;border-radius:16px;
  background:rgba(47,155,255,.12);border:1.5px dashed var(--gold);
}
.prize .g{
  display:block;font-size:clamp(30px,8.6vw,36px);
  font-weight:800;color:var(--gold);line-height:1;
}
.prize .lbl{
  font-size:12px;letter-spacing:.5px;opacity:.75;margin-top:6px;
}
.progress{
  height:6px;border-radius:3px;background:rgba(255,255,255,.1);
  overflow:hidden;margin:0 0 8px;
}
.progress .bar{
  width:10%;height:100%;background:linear-gradient(90deg,var(--xb-blue),var(--glow));
  transition:width 1s ease;
}
.progress .bar.go{width:90%}
.note{font-size:12.5px;opacity:.85;margin:6px 0 14px}
.cta{
  display:block;width:100%;padding:15px;
  border:none;border-radius:14px;
  background:linear-gradient(180deg,#43d268,#159a3f);
  color:#03140a;font-size:clamp(16px,4.8vw,18px);
  font-weight:800;letter-spacing:.3px;text-decoration:none;
  box-shadow:0 6px 24px rgba(67,210,104,.45);
  animation:pulse2 1.6s infinite;font-family:inherit;
  min-height:52px;
}
@keyframes pulse2{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}
.modal small{display:block;margin-top:10px;font-size:11px;opacity:.55}

/* ---------- iOS install / Chrome sheet ---------- */
.ios{
  position:fixed;inset:0;z-index:30;
  background:rgba(0,0,0,.65);
  display:none;align-items:flex-end;justify-content:center;
  padding:12px;padding-bottom:calc(var(--safe-b) + 12px);
}
.ios.show{display:flex}
.ios-card{
  width:100%;max-width:420px;
  background:#0e2c4e;border:1px solid rgba(47,155,255,.35);
  border-radius:18px;padding:18px 18px 14px;
  color:var(--white);
}
.ios-card h4{font-size:17px;margin-bottom:12px}
.sheet-note{font-size:13px;opacity:.85;margin-bottom:10px}
.sheet-btn{
  display:block;width:100%;padding:13px;border:none;border-radius:12px;
  background:linear-gradient(180deg,#43d268,#159a3f);color:#03140a;
  font-size:16px;font-weight:800;font-family:inherit;
  margin-bottom:6px;min-height:48px;
}
.ios-card .step{display:flex;align-items:flex-start;gap:10px;margin:8px 0;font-size:13.5px}
.ios-card .step .n{
  flex:0 0 28px;width:28px;height:28px;border-radius:50%;
  background:var(--xb-blue);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;
}
.ios-card .step .t{flex:1;line-height:1.4;padding-top:4px}
.ios-close{
  display:block;width:100%;margin-top:10px;padding:11px;
  background:transparent;border:1px solid rgba(255,255,255,.2);
  border-radius:10px;color:var(--white);font-size:14px;font-family:inherit;
  min-height:44px;
}

/* ---------- IAB bar (in-app browser warning) ---------- */
.iab-bar{
  position:fixed;left:8px;right:8px;
  bottom:calc(var(--safe-b) + 8px);
  z-index:40;
  display:none;align-items:center;gap:8px;
  padding:10px 12px;border-radius:12px;
  background:#f42a41;color:#fff;
  box-shadow:0 6px 20px rgba(244,42,65,.4);
  font-size:12.5px;
}
.iab-bar.show{display:flex}
.iab-bar .ic{font-size:16px}
.iab-bar .tx{flex:1;line-height:1.3}
.iab-bar .go{
  padding:6px 12px;border:none;border-radius:8px;
  background:#fff;color:#f42a41;font-weight:800;font-size:12px;font-family:inherit;
}
.iab-bar .x{
  background:transparent;border:none;color:#fff;font-size:18px;
  padding:4px 6px;line-height:1;
}

/* ---------- Small phone tweaks ---------- */
@media (max-height:640px){
  .msg{top:10%}
  .msg h1{font-size:22px}
  .msg p{font-size:12.5px}
  .hitbtn{width:110px;height:110px}
  .meter{bottom:calc(var(--safe-b) + 175px)}
  .hitzone{bottom:calc(var(--safe-b) + 58px)}
}
@media (max-width:340px){
  .brand .xblogo{font-size:17px;padding:2px 10px 2px 7px}
  .attempts .att{width:10px;height:10px}
  .timer{font-size:11.5px}
}
