/* ── Streak system ── */
#streak-wrap{position:fixed;z-index:9999;pointer-events:none;text-align:center;transform:translate(-50%,-110%);display:none;background:rgba(20,8,18,0.82);border:1px solid rgba(255,128,192,0.25);border-radius:8px;padding:5px 12px 7px;white-space:nowrap;}
#streak-msg{font-size:18px;font-weight:700;color:#ff80c0;text-shadow:0 0 8px rgba(255,128,192,0.7);min-height:22px;}
#streak-prestige-msg{font-size:13px;font-weight:700;color:#a080ff;text-shadow:0 0 6px rgba(160,128,255,0.75),0 0 12px rgba(120,96,220,0.5);margin-top:2px;letter-spacing:0.03em;}
#streak-bar-bg{width:140px;height:6px;background:#2a1020;border-radius:3px;margin:3px auto 0;overflow:hidden;}
#streak-bar-fill{height:100%;width:100%;background:linear-gradient(to right,#e060c0,#ff80d0);border-radius:3px;transition:none;}
@keyframes streakPulse{0%{transform:scale(1);}50%{transform:scale(1.15);}100%{transform:scale(1);}}
.streak-pulse{animation:streakPulse 0.3s ease-out;}
/* ── Torsion event ── */
@keyframes torsionPulse{0%{filter:brightness(1) drop-shadow(0 0 16px rgba(255,0,0,0.95));}25%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(160,0,0,0.55));}50%{filter:brightness(0);}75%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(160,0,0,0.55));}100%{filter:brightness(1) drop-shadow(0 0 16px rgba(255,0,0,0.95));}}
.torsion-pulse{animation:torsionPulse 0.8s ease-in-out infinite!important;}
@keyframes torsionPulseP2{0%{filter:brightness(1) drop-shadow(0 0 16px rgba(255,110,20,0.95));}25%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(160,70,0,0.55));}50%{filter:brightness(0);}75%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(160,70,0,0.55));}100%{filter:brightness(1) drop-shadow(0 0 16px rgba(255,110,20,0.95));}}
.torsion-pulse-p2{animation:torsionPulseP2 0.8s ease-in-out infinite!important;}
@keyframes torsionPulseP3{0%{filter:brightness(1) drop-shadow(0 0 16px rgba(200,0,255,0.95));}25%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(120,0,160,0.55));}50%{filter:brightness(0);}75%{filter:brightness(0.22) drop-shadow(0 0 6px rgba(120,0,160,0.55));}100%{filter:brightness(1) drop-shadow(0 0 16px rgba(200,0,255,0.95));}}
.torsion-pulse-p3{animation:torsionPulseP3 0.8s ease-in-out infinite!important;}
.torsion-separating{transition:transform 0.5s cubic-bezier(0.34,1.4,0.64,1);}
.torsion-hit-zone{position:absolute;width:180px;height:180px;border-radius:50%;transform:translate(-50%,-50%);z-index:105;pointer-events:auto;background:transparent;cursor:grab;clip-path:circle(50%);-webkit-clip-path:circle(50%);}
.torsion-hit-zone:active{cursor:grabbing;}
.torsion-dot-wrap{position:absolute;z-index:102;pointer-events:none;display:flex;gap:9px;transform:translateX(-50%);}
.torsion-dot{width:13px;height:13px;border-radius:50%;border:2px solid;transition:opacity 0.2s,box-shadow 0.2s;}
.torsion-toast{position:absolute;left:50%;top:280px;z-index:100;font-size:28px;font-weight:700;color:#ff2020;text-shadow:0 0 12px rgba(255,0,0,0.8),0 0 24px rgba(255,0,0,0.5);pointer-events:none;white-space:nowrap;animation:milestoneFloat 2s ease-out forwards;}
@keyframes arrowFlash{0%{opacity:1;transform:translate(-50%,-50%) scale(1);text-shadow:0 0 10px rgba(255,30,0,0.8),0 0 22px rgba(255,0,0,0.4);}50%{opacity:0.88;transform:translate(-50%,-50%) scale(1.22);text-shadow:0 0 18px #ff2000,0 0 36px rgba(255,40,0,0.9),0 0 62px rgba(255,0,0,0.5);}100%{opacity:1;transform:translate(-50%,-50%) scale(1);text-shadow:0 0 10px rgba(255,30,0,0.8),0 0 22px rgba(255,0,0,0.4);}}
.torsion-arrow{position:absolute;z-index:101;font-size:104px;font-weight:900;color:#ff2020;pointer-events:none;animation:arrowFlash 0.6s ease-in-out infinite;}
.torsion-relieved-toast{position:absolute;left:50%;top:420px;z-index:100;font-size:38px;font-weight:700;color:#40e060;text-shadow:0 0 14px rgba(40,220,80,0.9),0 0 28px rgba(0,180,60,0.6);pointer-events:none;white-space:nowrap;transform:translateX(-50%);animation:milestoneFloat 2s ease-out forwards;}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,0.75);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000000;}
.modal-box{background:radial-gradient(ellipse at 50% 0%,#3c1530 0%,#221018 65%);border:1px solid #6a3050;border-radius:14px;padding:24px 28px;min-width:300px;max-width:440px;text-align:center;animation:fadeInScale 0.25s ease;box-shadow:0 8px 40px rgba(0,0,0,0.7),inset 0 1px 0 rgba(255,120,190,0.1);}
.modal-box.rainbow{border-width:3px;animation:fadeInScale 0.25s ease,rainbowPulse 1.4s linear infinite;}
.modal-title{font-size:17px;font-weight:500;color:#f0c0d0;margin-bottom:10px;}
.modal-btn{background:#4a1a30;border:0.5px solid #8a3060;border-radius:8px;padding:7px 20px;font-size:13px;font-weight:500;color:#f0c0d0;cursor:pointer;transition:background 0.15s;}
.modal-btn:hover{background:#6a2545;}
.modal-body{font-size:13px;color:#a07088;margin-bottom:18px;line-height:1.7;white-space:pre-line;}
.modal-close{background:#3a0808;border:1px solid #7a1010;border-radius:6px;padding:7px 22px;font-size:12px;font-weight:700;color:#ff6060;cursor:pointer;line-height:1;transition:background 0.12s,border-color 0.12s;}
.modal-close:hover{background:#5a0c0c;border-color:#cc2020;}
.big-reward{font-size:44px;margin:10px 0;}
.vip-modal{background:#1a0d30;border:1.5px solid #9060e0;border-radius:16px;min-width:360px;max-width:460px;overflow:hidden;animation:fadeInScale 0.25s ease;}
.vip-header{background:#2a1050;padding:18px 22px 14px;text-align:center;border-bottom:1px solid #4a2580;}
.vip-crown{font-size:38px;margin-bottom:6px;}
.vip-header h2{font-size:19px;font-weight:500;color:#e0c8ff;margin-bottom:3px;}
.vip-header p{font-size:16px;color:#9070c0;}
.vip-perks{padding:10px 16px;display:flex;flex-direction:column;gap:6px;}
.vip-perk{display:flex;align-items:center;gap:7px;background:#2a1545;border-radius:7px;padding:6px 8px;border:0.5px solid #5a3090;}
.vip-perk-icon{font-size:15px;flex-shrink:0;}
.vip-perk-text{font-size:14px;color:#d0b8f8;}
.vip-perk-text strong{color:#f0e0ff;font-weight:500;}
.vip-price{padding:0 22px 14px;text-align:center;}
.vip-price-tag{font-size:26px;font-weight:500;color:#e0c8ff;margin-bottom:3px;}
.vip-price-sub{font-size:14px;color:#7a5090;margin-bottom:12px;}
.vip-buy-btn{background:#7030c0;border:1px solid #c080ff;border-radius:10px;padding:11px 28px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;width:100%;transition:background 0.15s;}
.vip-buy-btn:hover{background:#9040e0;}
.vip-active-badge{background:#3a2060;border:1px solid #9060e0;border-radius:10px;padding:11px;text-align:center;font-size:17px;color:#c0a0f0;}
.vip-footer{padding:8px 22px 16px;text-align:center;font-size:14px;color:#5a4080;}
.vip-modal-tabs{display:flex;border-bottom:1px solid #4a2580;}
.vip-modal-tab{flex:1;padding:11px;font-size:13px;font-weight:500;cursor:pointer;text-align:center;border:none;background:none;color:#9070c0;transition:all 0.2s;border-bottom:2px solid transparent;}
.vip-modal-tab.active{color:#e0c8ff;border-bottom-color:#9060e0;background:#1e1030;}
.daily-modal{background:rgba(42,16,32,0.8);border:1px solid #6a3050;border-radius:16px;min-width:520px;max-width:650px;overflow:hidden;animation:fadeInScale 0.25s ease;}
.daily-tabs{display:flex;border-bottom:1px solid #3a1530;}
.daily-tab{flex:1;padding:14px;font-size:22px;font-weight:700;cursor:pointer;text-align:center;border:none;background:none;color:#7a5080;transition:all 0.15s;border-bottom:2px solid transparent;}
.daily-tab.active{color:#f0c0d0;border-bottom-color:#c060a0;background:#2e1222;}
.daily-tab.vip-tab{color:#9070c0;}
.daily-tab.vip-tab.active{color:#d0a8ff;border-bottom-color:#9060e0;background:#1e1030;}
.daily-content{padding:23px 29px;}
.daily-greeting{font-size:24px;font-weight:700;color:#f0c0d0;margin-bottom:3px;}
.daily-subtitle{font-size:20px;font-weight:700;color:#7a5080;margin-bottom:14px;}
.reward-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:34px;}
.reward-day{border-radius:8px;padding:7px 3.9px;text-align:center;border:0.5px solid #4a2035;background:#1e0e18;display:flex;flex-direction:column;align-items:center;gap:2px;}
.reward-day.claimed{background:#2a1530;border-color:#6a3050;opacity:0.55;}
.reward-day.today{border-color:#c060a0;background:#2e1228;}
.reward-day.future{opacity:0.4;}
.reward-day .rd-num{font-size:15px;font-weight:700;color:#6a4060;}
.reward-day .rd-icon{font-size:29px;line-height:1;}
.reward-day .rd-val{font-size:15px;font-weight:700;color:#c090a8;}
.vip-reward-day{border-radius:8px;padding:7px 3.9px;text-align:center;border:0.5px solid #5a3090;background:#1a0a28;display:flex;flex-direction:column;align-items:center;gap:2px;}
.vip-reward-day.claimed{opacity:0.45;}
.vip-reward-day.today{border-color:#c090ff;background:#260d40;}
.vip-reward-day.future{opacity:0.3;}
.vip-reward-day .rd-num{font-size:15px;font-weight:700;color:#7a50a0;}
.vip-reward-day .rd-icon{font-size:30px;line-height:1;}
.vip-reward-day .rd-val{font-size:15px;font-weight:700;color:#b080e0;}
/* Weekly milestone days (7, 14, 21, 28) get a soft golden glow regardless of
   claimed/today/future state. Placed after the state rules so the gold border
   wins. */
.reward-grid > .reward-day:nth-child(7n),
.reward-grid > .vip-reward-day:nth-child(7n){
  border-color:#ffd86b;
  box-shadow:0 0 12px rgba(255,200,80,0.55),inset 0 0 8px rgba(255,200,80,0.22);
}
.reward-grid > .reward-day:nth-child(7n) .rd-num,
.reward-grid > .vip-reward-day:nth-child(7n) .rd-num{color:#ffd86b;}
.claim-btn{width:100%;padding:13px;border-radius:10px;font-size:22px;font-weight:700;cursor:pointer;border:none;position:relative;overflow:hidden;}
.claim-btn.free-claim{background:linear-gradient(180deg,#a8265e 0%,#7a1840 50%,#54102a 100%);color:#fff;border:0.5px solid #ffb0d8;animation:claimGlowFree 1.4s ease-in-out infinite;text-shadow:0 1px 2px rgba(0,0,0,0.55),0 0 6px rgba(255,180,220,0.4);box-shadow:inset 0 1px 0 rgba(255,255,255,0.35),inset 0 -2px 0 rgba(0,0,0,0.4);}
.claim-btn.free-claim:hover:not(:disabled){background:linear-gradient(180deg,#c8307a 0%,#8a2055 50%,#5a1230 100%);}
.claim-btn.vip-claim{background:linear-gradient(180deg,#9040d8 0%,#6a20b0 50%,#3e0e80 100%);color:#fff;border:0.5px solid #d8b8ff;animation:claimGlowVip 1.4s ease-in-out infinite;text-shadow:0 1px 2px rgba(0,0,0,0.55),0 0 6px rgba(216,184,255,0.4);box-shadow:inset 0 1px 0 rgba(255,255,255,0.35),inset 0 -2px 0 rgba(0,0,0,0.4);}
.claim-btn.vip-claim:hover:not(:disabled){background:linear-gradient(180deg,#a850e8 0%,#8030e0 50%,#5018a8 100%);}
.claim-btn:disabled{opacity:0.4;cursor:not-allowed;animation:none;}
/* Diagonal shine sweep that travels across the claim button on a loop. */
.claim-btn::before{content:"";position:absolute;top:0;left:-150%;width:80%;height:100%;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,0.45) 50%,transparent 100%);animation:claimShineSweep 2.6s ease-in-out infinite;pointer-events:none;}
@keyframes claimShineSweep{0%{left:-150%;}55%{left:150%;}100%{left:150%;}}
@keyframes claimGlowFree{0%,100%{box-shadow:inset 0 1px 0 rgba(255,255,255,0.35),inset 0 -2px 0 rgba(0,0,0,0.4),0 0 8px rgba(220,80,140,0.5),0 0 18px rgba(220,80,140,0.25);transform:scale(1);}50%{box-shadow:inset 0 1px 0 rgba(255,255,255,0.5),inset 0 -2px 0 rgba(0,0,0,0.4),0 0 20px rgba(240,90,160,1),0 0 38px rgba(220,60,130,0.65);transform:scale(1.03);}}
@keyframes claimGlowVip{0%,100%{box-shadow:inset 0 1px 0 rgba(255,255,255,0.35),inset 0 -2px 0 rgba(0,0,0,0.4),0 0 8px rgba(180,90,255,0.5),0 0 18px rgba(180,90,255,0.25);transform:scale(1);}50%{box-shadow:inset 0 1px 0 rgba(255,255,255,0.5),inset 0 -2px 0 rgba(0,0,0,0.4),0 0 20px rgba(200,100,255,1),0 0 38px rgba(160,70,240,0.65);transform:scale(1.03);}}
.daily-modal-close{background:#3a0808!important;border:1px solid #7a1010!important;border-radius:6px!important;color:#ff6060!important;font-size:14px!important;font-weight:700!important;line-height:1!important;transition:background 0.12s,border-color 0.12s!important;}
.daily-modal-close:hover{background:#5a0c0c!important;border-color:#cc2020!important;}
.claim-claimed{font-size:20px;font-weight:700;color:#6a4060;margin-top:7px;text-align:center;}
/* Daily Reward popup (after collecting): 20% bigger text, bold, 20%
   transparent background, pulsing Collect button, green text for cash
   rewards. */
.daily-claim-popup{transform:scale(1.3);transform-origin:center center;background:radial-gradient(ellipse at 50% 0%,rgba(60,21,48,0.8) 0%,rgba(34,16,24,0.8) 65%);}
.daily-claim-popup .modal-title{font-size:20px;font-weight:700;}
.daily-claim-popup .modal-body{font-size:16px;font-weight:700;}
.daily-claim-popup .daily-claim-day{font-weight:700;font-size:1.1em;}
.daily-claim-popup .daily-claim-label{font-size:22px;font-weight:700;color:#60a0ff;animation:dailyClaimLabelGlow 1.2s ease-in-out infinite;display:inline-block;}
.daily-claim-popup .daily-claim-label.cash-reward{color:#4ee07a;animation:dailyClaimLabelGlowCash 1.2s ease-in-out infinite;}
.daily-claim-popup .modal-close.daily-collect-btn{font-size:14px;font-weight:700;animation:dailyCollectPulse 1.1s ease-in-out infinite;}
@keyframes dailyClaimLabelGlow{0%,100%{text-shadow:0 0 6px rgba(96,160,255,0.6),0 0 12px rgba(96,160,255,0.35);transform:scale(1);}50%{text-shadow:0 0 14px rgba(96,160,255,1),0 0 26px rgba(96,160,255,0.8);transform:scale(1.06);}}
@keyframes dailyClaimLabelGlowCash{0%,100%{text-shadow:0 0 6px rgba(78,224,122,0.6),0 0 12px rgba(78,224,122,0.35);transform:scale(1);}50%{text-shadow:0 0 14px rgba(78,224,122,1),0 0 26px rgba(78,224,122,0.8);transform:scale(1.06);}}
@keyframes dailyCollectPulse{0%,100%{transform:scale(1);box-shadow:0 0 8px rgba(255,80,80,0.45);}50%{transform:scale(1.07);box-shadow:0 0 18px rgba(255,80,80,0.85),0 0 32px rgba(220,40,40,0.4);}}
.vip-lock-notice{background:#1a0a28;border:0.5px solid #4a2580;border-radius:10px;padding:17px;text-align:center;margin-top:7px;}
.vip-lock-notice p{font-size:16px;color:#7a50a0;margin-bottom:9px;}
.vip-lock-notice button{background:#5020a0;border:0.5px solid #9060e0;border-radius:8px;padding:8px 21px;font-size:16px;color:#d0b0f0;cursor:pointer;}
.ad-box{background:#2a1020;border:1px solid #6a3050;border-radius:14px;min-width:442px;max-width:572px;overflow:hidden;animation:fadeInScale 0.25s ease;}
.ad-header{background:#3a0f25;padding:17px 26px 12px;border-bottom:1px solid #5a2040;}
.ad-header h2{font-size:21px;font-weight:700;color:#f0c0d0;margin-bottom:3px;}
.ad-header p{font-size:17px;color:#a07088;}
.ad-body{padding:23px;text-align:center;}
.ad-ticket-preview{background:#2a1040;border:2px solid #8040c0;border-radius:12px;padding:28px;margin:0 auto 22px;display:inline-block;}
.tp-row{display:flex;gap:11px;margin-bottom:8px;}
.tp-cell{width:66px;height:66px;background:#5a2080;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:33px;border:1px solid #8050b0;}
.ad-tagline{font-size:20px;color:#c090d0;margin-bottom:7px;font-weight:500;}
.ad-sub{font-size:17px;color:#7a5090;margin-bottom:18px;line-height:1.5;}
.ad-footer{display:flex;justify-content:space-between;align-items:center;padding:14px 23px;border-top:1px solid #3a1530;}
.ad-close-btn{font-size:14px;font-weight:700;color:#7a5080;cursor:pointer;background:none;border:none;}
.ad-buy-btn{background:#8020c0;border:none;border-radius:8px;padding:9px 21px;font-size:17px;font-weight:500;color:#fff;cursor:pointer;animation:adBuyPulse 1.2s ease-in-out infinite;}
.ad-buy-btn.ad-buy-free{background:linear-gradient(135deg,#108040,#30c060);animation:adBuyFreePulse 1.2s ease-in-out infinite;}
@keyframes adBuyPulse{0%,100%{box-shadow:0 0 6px rgba(192,80,255,0.5),0 0 14px rgba(192,80,255,0.25);transform:scale(1);}50%{box-shadow:0 0 18px rgba(220,120,255,1),0 0 34px rgba(180,80,255,0.65);transform:scale(1.05);}}
@keyframes adBuyFreePulse{0%,100%{box-shadow:0 0 6px rgba(80,240,140,0.5),0 0 14px rgba(80,240,140,0.25);transform:scale(1);}50%{box-shadow:0 0 18px rgba(120,255,180,1),0 0 34px rgba(80,240,140,0.65);transform:scale(1.05);}}
.scratch-box{background:#2a1020;border:1px solid #6a3050;border-radius:14px;width:588px;max-width:96vw;overflow:hidden;animation:fadeInScale 0.25s ease;position:relative;}
.scratch-x-btn{position:absolute;top:8px;right:10px;background:#3a0808;border:1px solid #7a1010;border-radius:6px;color:#ff6060;font-size:20px;font-weight:700;cursor:pointer;z-index:10;line-height:1;padding:3px 9px;transition:background 0.12s,border-color 0.12s;font-family:Calibri,sans-serif;}
.scratch-x-btn:hover{background:#5a0c0c;border-color:#cc2020;}
.scratch-header{background:#3a0f25;padding:13px 20px;border-bottom:1px solid #5a2040;display:flex;align-items:center;justify-content:space-between;}
.scratch-header h2{font-size:25px;font-weight:700;color:#f0c0d0;font-family:Calibri,sans-serif;}
.scratch-close{background:#3a0808;border:1px solid #7a1010;border-radius:6px;padding:4px 12px;font-size:19px;font-weight:700;color:#ff6060;cursor:pointer;line-height:1;transition:background 0.12s,border-color 0.12s;font-family:Calibri,sans-serif;}
.scratch-close:hover{background:#5a0c0c;border-color:#cc2020;}
.scratch-body{padding:22px;text-align:center;}
.scratch-grid{display:grid;grid-template-columns:repeat(3,144px);grid-template-rows:repeat(3,144px);gap:10px;margin:0 auto 18px;width:fit-content;}
.scratch-cell{width:144px;height:144px;border-radius:12px;position:relative;overflow:hidden;border:2px solid #6a3060;background:#1a0818;}
.scratch-cell canvas{position:absolute;top:0;left:0;width:100%;height:100%;cursor:crosshair;z-index:2;}
.scratch-cell .prize{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:56px;z-index:1;}
.scratch-cell.done-pulse{animation:goldPulse 1s ease forwards;}
.scratch-cell.win-pulse{animation:goldPulseLoop 1s ease infinite;}
.scratch-cell.cell-revealed{border-color:#ffd032;animation:goldPulseRevealed 1s ease forwards;}
@keyframes goldPulseRevealed{0%{box-shadow:0 0 0 3px rgba(255,210,50,0);border-color:#6a3060;}40%{box-shadow:0 0 0 5px rgba(255,210,50,0.9);border-color:#ffd032;}100%{box-shadow:0 0 0 0 rgba(255,210,50,0);border-color:#ffd032;}}
.scratch-cell.win-triple{animation:goldPulseWin 0.75s ease infinite;border:4px solid #ffd032 !important;}
@keyframes goldPulseWin{0%{box-shadow:0 0 4px 3px rgba(255,210,50,0.35);border-color:#ffd032;}50%{box-shadow:0 0 18px 8px rgba(255,210,50,0.95),0 0 32px 4px rgba(255,180,0,0.5);border-color:#ffee44;}100%{box-shadow:0 0 4px 3px rgba(255,210,50,0.35);border-color:#ffd032;}}
.scratch-result{font-size:23px;font-weight:700;color:#f0c0d0;min-height:24px;margin-bottom:12px;font-family:Calibri,sans-serif;}
.scratch-done-btn{background:#5a1535;border:0.5px solid #c060a0;border-radius:6px;padding:7px 22px;font-size:20px;color:#f0c0d0;cursor:pointer;display:none;font-family:Calibri,sans-serif;font-weight:700;}
.scratch-done-btn:hover{background:#8a2055;}
.scratch-prizes{border-top:1px solid #3a1530;margin-top:14px;padding-top:10px;}
.sp-title{font-size:17px;color:#906878;text-transform:uppercase;letter-spacing:1.2px;margin-bottom:7px;font-family:Calibri,sans-serif;font-weight:700;}
.sp-row{display:flex;justify-content:space-between;align-items:center;padding:3px 8px;font-size:20px;font-family:Calibri,sans-serif;font-weight:700;}
.sp-sym{font-size:23px;letter-spacing:1px;}
.sp-prize{color:#f0c040;font-weight:700;font-family:Calibri,sans-serif;}

/* Cylinder & kiwi hover/squeeze/flash glow — shape-following box-shadows on
   pseudo-elements sized to match each silhouette (rounded rect for the
   cylinder, circles for each kiwi). Driven by CSS vars set in squeeze.js:
   --sqz-a1/a2 are the two layer alphas (0→~0.5 hover, up to ~0.95 on full
   drag). Color defaults to gold; --sqz-rgb1/2 override for red (fail) or
   white (success) flashes. z-index:-1 keeps the glow behind the art but
   inside the wrap's stacking context. */
#cylinder-wrap::before{content:"";position:absolute;inset:0;border-radius:45px;pointer-events:none;z-index:-1;box-shadow:0 0 calc(12px + var(--sqz-a1,0) * 44px) rgba(var(--sqz-rgb1,255,210,90),calc(var(--sqz-a1,0) * 1.3)),0 0 calc(36px + var(--sqz-a2,0) * 88px) rgba(var(--sqz-rgb2,255,160,50),calc(var(--sqz-a2,0) * 0.95));}
#kiwi-left-wrap,#kiwi-right-wrap{isolation:isolate;}
/* Kiwi glow pseudo — sized to match the actual SVG ellipse. The SVG is a
   100×100 viewBox containing an ellipse rx=38 ry=42 around (50,52), rendered
   at 128×128 and CSS-rotated ±90deg. After the rotation, the on-screen
   ellipse is ~107.5 wide × ~97.3 tall — i.e. wider than it is tall. The
   inset values below carve a 108×98 ellipse centred in the wrap so the
   box-shadow halo follows the same silhouette as the kiwi itself. */
#kiwi-left-wrap::before,#kiwi-right-wrap::before{content:"";position:absolute;inset:15px 10px 15px 10px;border-radius:50%;pointer-events:none;z-index:-1;box-shadow:0 0 calc(12px + var(--sqz-a1,0) * 40px) rgba(var(--sqz-rgb1,255,210,90),calc(var(--sqz-a1,0) * 1.3)),0 0 calc(32px + var(--sqz-a2,0) * 76px) rgba(var(--sqz-rgb2,255,160,50),calc(var(--sqz-a2,0) * 0.95));}

/* ── Scratch: wild, bomb, jackpot, pot, double-or-nothing, silver flakes, confetti ── */
.scratch-cell.wild-cell{border:4px solid #b090ff !important;box-shadow:0 0 14px rgba(180,150,255,0.75),inset 0 0 10px rgba(180,150,255,0.4);animation:wildPulseKF 1.1s ease infinite;}
@keyframes wildPulseKF{0%,100%{box-shadow:0 0 10px rgba(180,150,255,0.55),inset 0 0 8px rgba(180,150,255,0.3);}50%{box-shadow:0 0 22px rgba(200,170,255,0.95),inset 0 0 14px rgba(200,170,255,0.55);}}
.scratch-cell.bomb-cell{border:4px solid #ff3838 !important;background:rgba(160,20,20,0.3);animation:bombShakeKF 0.5s ease;}
@keyframes bombShakeKF{0%,100%{transform:translateX(0);}15%{transform:translateX(-8px);}30%{transform:translateX(8px);}45%{transform:translateX(-6px);}60%{transform:translateX(6px);}75%{transform:translateX(-3px);}90%{transform:translateX(3px);}}
.scratch-box.jackpot-flash{animation:jackpotFlashKF 1.8s ease;}
@keyframes jackpotFlashKF{0%{box-shadow:0 0 0 0 rgba(255,210,60,0);}10%{box-shadow:0 0 90px 30px rgba(255,230,100,1),inset 0 0 60px 10px rgba(255,220,80,0.6);}25%{box-shadow:0 0 70px 20px rgba(255,210,60,0.85);}55%{box-shadow:0 0 50px 15px rgba(255,200,50,0.5);}100%{box-shadow:0 0 0 0 rgba(255,210,60,0);}}
.scratch-pot{text-align:center;font-size:19px;color:#f0c040;margin-bottom:10px;padding:6px 10px;background:linear-gradient(90deg,#2a1025,#4a2035,#2a1025);border:1px solid #5a2040;border-radius:5px;letter-spacing:0.3px;font-family:Calibri,sans-serif;font-weight:700;}
.scratch-pot .pot-val{color:#ffe070;font-weight:700;font-size:23px;text-shadow:0 0 6px rgba(255,220,100,0.7);font-family:Calibri,sans-serif;}
.scratch-dbl-btn{background:linear-gradient(90deg,#5a1535,#8a2055);border:1px solid #ff60a0;border-radius:6px;padding:7px 16px;font-size:19px;color:#ffe0f0;cursor:pointer;letter-spacing:0.5px;font-weight:700;font-family:Calibri,sans-serif;}
.scratch-dbl-btn:hover:not(:disabled){background:linear-gradient(90deg,#8a2055,#b03070);box-shadow:0 0 10px rgba(255,100,180,0.5);}
.scratch-dbl-btn:disabled{opacity:0.5;cursor:not-allowed;}
.scratch-flake{position:fixed;pointer-events:none;width:7px;height:7px;background:radial-gradient(circle,#fff 0%,#d8d8e8 55%,transparent 70%);border-radius:50%;z-index:1000002;animation:flakeDriftKF 0.65s ease-out forwards;}
@keyframes flakeDriftKF{0%{opacity:1;transform:translate(0,0) scale(1);}100%{opacity:0;transform:translate(var(--fx,0),var(--fy,0)) scale(0.3);}}
.scratch-confetti{position:fixed;width:8px;height:14px;pointer-events:none;z-index:1000001;animation:confettiDropKF 2.6s ease-out forwards;}
@keyframes confettiDropKF{0%{opacity:1;transform:translate(0,-40px) rotate(0deg);}15%{opacity:1;}100%{opacity:0;transform:translate(var(--cx,0),720px) rotate(900deg);}}

