/* INVITO confetti: the special section (Round 14). Three variants share one rule:
   heading, play and result fit ONE phone screen (390x664). Nothing here animates a
   filter; every shadow is baked into the art or drawn once. */
.sp{padding-block:28px 30px}
.sp>.w{z-index:2}
.sp [hidden]{display:none!important}
.sp .eyebrow{margin:0 0 2px;font-size:17px;line-height:1.35}
.sp .ttl{font-size:clamp(34px,9.4vw,64px);line-height:1.04;margin:0 0 6px}
:lang(ru) .sp .ttl{font-size:clamp(30px,8.2vw,54px)}
:lang(ar) .sp .ttl{line-height:1.2}
.sp-lead{margin:0 auto;max-width:32ch;font-size:17px;line-height:1.45;color:var(--ink2);text-wrap:balance}
.sp-note{margin:8px auto 0;max-width:34ch;min-height:1.4em;font-size:15px;line-height:1.4;color:var(--ink2);text-wrap:balance}
.sp-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;font:500 15px/1.2 var(--f-body);color:var(--hi);
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;border-radius:99px}
.sp-link:active{transform:scale(.96)}

/* ---------- A: the wish balloon ---------- */
.spa-st{position:relative;width:100%;max-width:560px;height:clamp(250px,calc(100svh - 360px),400px);margin:6px auto 0;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.spa-st canvas{position:absolute;left:0;top:0;width:100%;height:100%;display:block;pointer-events:none}
.spa-hit{position:absolute;left:0;top:0;width:10px;height:10px;border-radius:50% 50% 46% 46%;touch-action:none;cursor:grab;will-change:transform}
.spa-hit:active{cursor:grabbing}
.spa-hit[disabled]{pointer-events:none}
.spa-io{max-width:420px;min-height:54px;margin:10px auto 0}
.spa-row{display:flex;align-items:center;gap:10px;margin:0}
.spa-in{flex:1;min-width:0;height:54px;padding:0 20px;border-radius:99px;font:inherit;font-size:17px;color:var(--ink);text-align:start;outline:none;-webkit-appearance:none;appearance:none;
  background:color-mix(in srgb,#fff 72%,transparent);border:1px solid color-mix(in srgb,var(--ink) 18%,transparent);transition:border-color .3s ease,background-color .3s ease}
html[data-dark="1"] .spa-in{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.spa-in:focus{border-color:var(--hi);background:color-mix(in srgb,#fff 92%,transparent)}
html[data-dark="1"] .spa-in:focus{background:color-mix(in srgb,var(--ink) 12%,transparent)}
.spa-in::placeholder{color:var(--ink2);opacity:.8}
.spa-go{flex:none;display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:var(--hi);color:var(--bg);
  box-shadow:0 12px 24px -12px color-mix(in srgb,var(--hi) 80%,transparent);transition:transform .45s var(--ez),opacity .3s ease}
.spa-go:active{transform:scale(.9);transition-duration:.1s}
.spa-go svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.spa-row.dim .spa-go{opacity:.5}
.spa-res{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 6px;min-height:54px}
.spa-res b{font-family:var(--f-disp);font-weight:var(--dw);font-size:24px;line-height:1.2;color:var(--ink)}

/* ---------- B: party bingo ---------- */
.spb{overflow:hidden}
.spb-fx{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;pointer-events:none}
.spb-wrap{position:relative;max-width:400px;margin:12px auto 0;perspective:900px}
.spb-card{position:relative;padding:12px 12px 10px;border-radius:8px;background:var(--grain),#fffdf8;color:#1b1530;transform:rotate(-1.2deg);
  box-shadow:0 1px 0 rgba(0,0,0,.05),0 26px 44px -24px rgba(40,20,50,.45),0 6px 12px -6px rgba(40,20,50,.18)}
html[data-dark="1"] .spb-card{background:var(--grain),#f6efe2;box-shadow:0 30px 50px -24px rgba(0,0,0,.8)}
.spb-card::after{content:"";position:absolute;inset:0;border-radius:8px;pointer-events:none;background:linear-gradient(155deg,rgba(255,255,255,.5),transparent 35%,transparent 70%,rgba(0,0,0,.035))}
.spb-ch{display:flex;flex-direction:column;align-items:center;padding:0 4px 8px}
.spb-pre{font-size:14px;font-weight:600;line-height:1.3;color:var(--hi)}
.spb-nm{display:block;max-width:100%;font-family:var(--f-disp);font-weight:var(--dw);font-size:30px;line-height:1.08;white-space:nowrap;unicode-bidi:isolate}
.spb-grid{position:relative;display:grid;grid-template-columns:repeat(3,1fr);border:2px solid #1b1530;border-radius:4px;overflow:hidden;background:#fffdf8}
.spb-cell{position:relative;height:clamp(62px,calc((100svh - 420px) / 3),96px);display:flex;align-items:center;justify-content:center;padding:4px 5px;
  font:500 14.5px/1.2 var(--f-body);color:#1b1530;text-wrap:balance;overflow:hidden;
  border-inline-start:1px solid rgba(27,21,48,.22);border-top:1px solid rgba(27,21,48,.22);transition:background-color .4s ease}
.spb-cell:nth-child(3n+1){border-inline-start:0}
.spb-cell:nth-child(-n+3){border-top:0}
.spb-cell span{position:relative;z-index:2}
.spb-cell canvas{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;z-index:1;mix-blend-mode:multiply;pointer-events:none}
.spb-cell.free{flex-direction:column;gap:1px;color:var(--hi);font-family:var(--f-disp);font-weight:var(--dw);font-size:18px}
.spb-cell.free svg{width:28px;height:28px;fill:var(--hi)}
.spb-cell.win{background:color-mix(in srgb,var(--soft) 22%,#fffdf8)}
.spb-cell .gl{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.85) 50%,transparent 65%);transform:translateX(-120%)}
.spb-cf{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:7px;font-size:13.5px;line-height:1.3;color:rgba(27,21,48,.7)}
.spb-dot{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.6}
/* the rubber stamp that lands across the card on a bingo */
.spb-win{position:absolute;left:50%;top:52%;z-index:5;pointer-events:none;visibility:hidden;transform:translate(-50%,-50%) rotate(-11deg)}
.spb-win span{display:block;padding:.06em .4em .1em;border:5px double var(--hi);border-radius:14px;font-family:var(--f-disp);font-weight:var(--dw);font-size:clamp(54px,16vw,84px);line-height:1;white-space:nowrap;color:var(--hi);
  background:color-mix(in srgb,#fffdf8 78%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,#fffdf8 60%,transparent)}
.spb-ln{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;overflow:visible}
.spb-ln path{fill:none;stroke:var(--hi);stroke-width:5;stroke-linecap:round;opacity:.62;mix-blend-mode:multiply}
.spb-win.cnr{left:16%;top:30px;transform:translate(-50%,-50%) rotate(-9deg) scale(.44)}
html[dir="ltr"] .spb-win.cnr{left:84%;transform:translate(-50%,-50%) rotate(9deg) scale(.44)}
.spb-foot{display:flex;flex-direction:column;align-items:center;min-height:62px;margin-top:6px}
.spb-foot .sp-note{margin-top:4px}
.spb-foot .sp-link{min-height:36px;margin-top:-2px}

/* ---------- C: the surprise popper ---------- */
.spc-ins{position:relative;z-index:3;margin:2px 0 0}
.spc-ins b{display:block;font-family:var(--f-disp);font-weight:var(--dw);font-size:clamp(24px,6.8vw,34px);line-height:1.15}
.spc-ins span{display:block;margin-top:2px;font-size:15px;color:var(--ink2)}
.spc-st{position:relative;overflow:clip;width:100%;max-width:560px;height:clamp(300px,calc(100svh - 300px),440px);margin:4px auto 0;touch-action:pan-y;-webkit-user-select:none;user-select:none}
.spc-st.held,.spc-st.held *{touch-action:none}
.spc-cf{position:absolute;left:0;top:0;width:100%;height:100%;z-index:6;pointer-events:none;-webkit-mask-image:linear-gradient(transparent,#000 40px);mask-image:linear-gradient(transparent,#000 40px)}
.spc-halo{position:absolute;left:0;top:0;width:250px;height:250px;margin:-125px 0 0 -125px;border-radius:50%;pointer-events:none;opacity:.75;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--soft) 38%,transparent),color-mix(in srgb,var(--accent) 10%,transparent) 60%,transparent)}
html[data-dark="1"] .spc-halo{background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 24%,transparent),transparent)}
.spc-pop{position:absolute;left:0;top:0;max-width:none;z-index:3;will-change:transform;pointer-events:none}
.spc-pop2{opacity:0}
.spc-str{position:absolute;left:0;top:0;overflow:visible;z-index:4;pointer-events:none}
.spc-str .s0{fill:none;stroke:rgba(40,25,35,.3);stroke-linecap:round}
.spc-str .s1{fill:none;stroke:#f5efe4;stroke-linecap:round}
.spc-str .s2{fill:none;stroke:rgba(120,100,80,.55);stroke-linecap:round;stroke-dasharray:1.3 2.4}
html[data-dark="1"] .spc-str .s0{stroke:rgba(0,0,0,.55)}
.spc-str .kn{fill:#efe7d8;stroke:rgba(60,40,30,.4);stroke-width:.8}
.spc-hit{position:absolute;left:0;top:0;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;z-index:7;touch-action:none;cursor:grab}
.spc-hit::after{content:"";position:absolute;inset:26px;border-radius:50%;box-shadow:0 0 0 2px color-mix(in srgb,var(--hi) 55%,transparent);animation:ping 2.4s var(--ez) infinite 1.2s}
.spc-st.held .spc-hit::after,.spc-st.done .spc-hit::after{animation:none;opacity:0}
.spc-hand{position:absolute;left:0;top:0;width:96px;height:auto;max-width:none;opacity:0;z-index:8;pointer-events:none;will-change:transform,opacity}
.spc-puff{position:absolute;left:0;top:0;width:200px;height:200px;margin:-100px 0 0 -100px;border-radius:50%;opacity:0;pointer-events:none;z-index:5;
  background:radial-gradient(closest-side,rgba(255,250,240,.95),color-mix(in srgb,var(--soft) 50%,transparent) 40%,transparent)}
/* the note that rides out of the popper and unrolls */
.spc-card{position:absolute;left:50%;top:6px;width:min(90%,340px);z-index:9;visibility:hidden;transform:translateX(-50%);transform-origin:50% 0}
.spc-card .pp{position:relative;padding:24px 20px 6px;border-radius:12px;background:var(--grain),#fffdf8;color:#1b1530;text-align:center;overflow:hidden;
  box-shadow:0 1px 0 rgba(0,0,0,.05),0 30px 46px -24px rgba(40,20,50,.55),0 6px 12px -6px rgba(40,20,50,.2)}
html[data-dark="1"] .spc-card .pp{background:var(--grain),#f6efe2;box-shadow:0 34px 56px -24px rgba(0,0,0,.85)}
.spc-card .pp::before{content:"";position:absolute;left:0;right:0;top:0;height:8px;background:repeating-linear-gradient(90deg,var(--accent) 0 14px,var(--soft) 14px 28px,var(--c2) 28px 42px,var(--c3) 42px 56px)}
.spc-card .pp::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(155deg,rgba(255,255,255,.5),transparent 35%)}
.spc-card .roll{position:absolute;left:-6px;right:-6px;top:-11px;height:22px;border-radius:11px;pointer-events:none;
  background:linear-gradient(#bdb3a0,#f4eee3 30%,#fffdf8 48%,#e6dece 72%,#a99f8b);box-shadow:0 10px 16px -8px rgba(40,20,40,.45)}
.spc-card .tear{position:relative;display:block;height:20px;margin:14px -20px 0}
.spc-card .tear::before{content:"";position:absolute;left:14px;right:14px;top:50%;border-top:2px dashed rgba(27,21,48,.2)}
.spc-card .tear::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 0 50%,var(--bg) 0 9px,transparent 9.5px),radial-gradient(circle at 100% 50%,var(--bg) 0 9px,transparent 9.5px)}
.spc-card .stub{position:relative;padding:4px 0 0}
.spc-card .stp{position:absolute;top:0;inset-inline-end:-4px;width:60px;height:60px;display:grid;place-items:center;color:var(--hi);opacity:.75;transform:rotate(-14deg)}
.spc-card .stp svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:3}
.spc-card .stp .d{stroke-width:1.4;stroke-dasharray:3 3}
.spc-card .stp b{position:relative;font:700 12px/1.15 var(--f-body);text-align:center}
.spc-card .wh{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:0 10px;margin:0;padding-inline:58px;font-size:14.5px;font-weight:500;line-height:1.35;color:rgba(27,21,48,.78)}
.spc-card .wh i{width:4px;height:4px;border-radius:50%;background:var(--hi);opacity:.7}
.spc-card .k{display:block;font-size:15px;font-weight:600;line-height:1.35;color:var(--hi)}
.spc-card .q{margin:8px 0 0;font-family:var(--f-disp);font-weight:var(--dw);font-size:25px;line-height:1.22;text-wrap:balance}
:lang(ru) .spc-card .q{font-size:21px}
.spc-card .rl{display:block;width:72px;height:6px;margin:12px auto 2px;
  background:radial-gradient(circle,var(--hi) 0 1.6px,transparent 2px) 0 50%/12px 6px repeat-x;opacity:.55}
.spc-card .gf{display:flex;flex-direction:column;align-items:center;gap:8px}
.spc-card .s{font-size:15px;line-height:1.3;color:rgba(27,21,48,.72)}
.spc-card .gb{display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:0 24px;border-radius:99px;background:var(--hi);color:#fff;text-decoration:none;
  font-family:var(--f-disp);font-weight:var(--dw);font-size:19px;line-height:1;box-shadow:0 14px 26px -14px var(--hi);transition:transform .4s var(--ez)}
html[data-palette="c"] .spc-card .gb{color:#1b1530}
.spc-card .gb:active{transform:scale(.95)}
.spc-card .gb svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.spc-card .sg{margin:6px 0 0;padding-inline:58px;font-size:15px;line-height:1.3;color:rgba(27,21,48,.72)}
.spc-card .sg b{font-family:var(--f-disp);font-weight:var(--dw);font-size:19px;color:#1b1530}
.spc-card .sp-link{min-height:40px;margin-top:2px}

@media (min-width:900px){
  .sp{padding-block:72px}
  .spa-st{height:400px}
  .spc-st{height:420px}
}
@media (prefers-reduced-motion:reduce){.spc-hit::after{animation:none}}

/* game on: confetti puffs and a ring around the thing to touch */
.cf-fl{position:absolute;z-index:4;width:7px;height:10px;margin:-5px 0 0 -3.5px;border-radius:1.5px;pointer-events:none;will-change:transform,opacity}
.cf-ping{position:absolute;z-index:4;pointer-events:none;border:2.5px solid var(--sa,var(--accent));box-shadow:0 0 0 6px color-mix(in srgb,var(--sa,var(--accent)) 22%,transparent);will-change:transform,opacity}
.cf-ping.rd{border-radius:50%}
