/* Script-less lander: the two spins and both win windows run on two hidden
   checkboxes. Segment 0 (max) sits 18deg from 12 o'clock, the free-spins
   segment is index 3 (126deg) - same landing spots as app.js. */
.nojs-state { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }
.wheel__tap { position: absolute; inset: 0; border-radius: 50%; z-index: 5; cursor: pointer; }
label.spin-btn, label.modal__btn, a.modal__btn {
  display: flex; align-items: center; justify-content: center;
  text-decoration: none; cursor: pointer; text-align: center;
}
.wheel__rotor { transition: transform 4.6s cubic-bezier(0.17, 0.67, 0.10, 1); }
#s1:checked ~ .page .wheel__rotor { transform: rotate(2862deg); }
#s2:checked ~ .page .wheel__rotor { transform: rotate(5634deg); }
#s1:checked ~ .page #spinBtn, #s1:checked ~ .page .wheel__tap { pointer-events: none; animation: none; opacity: 0.6; }
.modal { visibility: hidden; opacity: 0; transition: opacity 0.4s ease, visibility 0s linear 0.4s; }
#s1:checked ~ #modal1, #s2:checked ~ #modal2 {
  visibility: visible; opacity: 1; transition: opacity 0.4s ease 5s, visibility 0s linear 5s;
}
#s2:checked ~ #modal1 { visibility: hidden; opacity: 0; transition: none; }
/* ── The miss (owner 2026-09-20, after GSB flagged /tz/v3/ SOCIAL_ENGINEERING) ──
   The first press (s0) lands on a JARIBU TENA wedge and opens nothing; only the
   second press (s1) pays. CSS cannot randomise, so this lander always misses
   exactly once - the JS landers draw 1 or 2 per visitor.
   Segment i is centred at 18deg + 36deg*i, so the rotor must end at
   (360 - centre) mod 360: miss i=2 -> 270, win i=0 -> 342, free spins i=3 -> 234.
   Each stage adds whole turns on top of the last so every press is a real spin. */
#s0:checked ~ .page .wheel__rotor { transform: rotate(2790deg); }                       /* 7 turns + 270 */
#s0:checked ~ #s1:checked ~ .page .wheel__rotor { transform: rotate(5382deg); }         /* 14 turns + 342 */
#s0:checked ~ #s1:checked ~ #s2:checked ~ .page .wheel__rotor { transform: rotate(8154deg); } /* 22 turns + 234 */

/* before the miss: only the first controls exist */
#spinBtn, .wheel__tap--retry, .cta__note--lose {
  visibility: hidden; opacity: 0; pointer-events: none; position: absolute;
}
/* after the miss: hide the first controls at once... */
#s0:checked ~ .page #spinBtn0, #s0:checked ~ .page .wheel__tap--first,
#s0:checked ~ .page .cta__note--start { display: none; }
/* ...and hand the spin back only once the wheel has stopped (4.6s transition) */
#s0:checked ~ #s1:not(:checked) ~ .page #spinBtn,
#s0:checked ~ #s1:not(:checked) ~ .page .wheel__tap--retry,
#s0:checked ~ #s1:not(:checked) ~ .page .cta__note--lose {
  visibility: visible; opacity: 1; pointer-events: auto; position: relative;
  transition: opacity 0.3s ease 4.8s, visibility 0s linear 4.8s;
}
#s0:checked ~ #s1:not(:checked) ~ .page .wheel__tap--retry { position: absolute; }
/* the winning press locks the controls, as the single-press flow always did */
#s1:checked ~ .page .wheel__tap--retry { pointer-events: none; }

/* a countdown cannot tick without script - a frozen one looks broken */
.banner, .timer { display: none !important; }

/* Funnel pixels without script (patch_nojs_pixels.py, 21/9): the view <img>
   fires on render; the spin pixel is a background that only exists once the
   first press (#s0) is checked. Must stay rendered (no display:none) or the
   browser never fetches it. */
.vx-px { position: absolute; left: 0; top: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
#s0:checked ~ .page .vx-spin { background-image: url("https://t.yopoffers.com/conversion.gif?et=spin"); }
