/* play.css  (Oct 2026, v79)  /play: live game cards (each card runs its game
   with a bot), leaderboards, the daily spin beside them, and the game stage
   (countdown, overtime, power-ups, results with your rank).
   Earning buttons wear the sale's gradient (orange for Halloween, dark ink:
   4.7:1 at the darkest stop), practice buttons stay solid. Both themes.
   Overtime gold: #FFC53D with #2B1100 ink (12:1). */
.pl [hidden],.pl-wheel[hidden],.pl-prize[hidden],.pl-result[hidden],.pl-modal[hidden],.pl-nudge[hidden]{display:none!important;}
.pl{position:relative;padding-bottom:var(--s8,64px);
  --pl-earn:var(--grad,linear-gradient(90deg,#6241C2,#2E4FA8,#0C8CCE));--pl-earn-ink:#FFFFFF;--pl-earn-shadow:rgba(78,43,164,.28);
  --pl-hot:var(--c-accent,#4E2BA4);--pl-quiet:#6B6B6B;--pl-gold:#FFC53D;--pl-gold-ink:#2B1100;}
html.vp-dark .pl{--pl-hot:#B9AEF0;--pl-quiet:#9E9E9E;}
html.vp-camp-halloween .pl,html.vp-camp-halloween .pl-stage,html.vp-camp-halloween .pl-modal,html.vp-camp-halloween .pl-nudge{
  --pl-earn:linear-gradient(90deg,#CE5A0C 0%,#E87420 50%,#CE5A0C 100%);--pl-earn-ink:#0C0C0C;--pl-earn-shadow:rgba(206,90,12,.32);--pl-hot:#B5470A;}
html.vp-camp-halloween.vp-dark .pl,html.vp-camp-halloween.vp-dark .pl-stage,html.vp-camp-halloween.vp-dark .pl-modal,html.vp-camp-halloween.vp-dark .pl-nudge{
  --pl-earn:linear-gradient(90deg,#F28C38 0%,#FFB86E 50%,#F28C38 100%);--pl-hot:#F28C38;}
.pl-stage,.pl-modal,.pl-nudge{--pl-earn:var(--grad,linear-gradient(90deg,#6241C2,#2E4FA8,#0C8CCE));--pl-earn-ink:#FFFFFF;--pl-quiet:#6B6B6B;--pl-gold:#FFC53D;--pl-gold-ink:#2B1100;--pl-hot:var(--c-accent,#4E2BA4);}
html.vp-dark .pl-stage,html.vp-dark .pl-modal,html.vp-dark .pl-nudge{--pl-quiet:#9E9E9E;--pl-hot:#B9AEF0;}

/* ── buttons: gradient = earning, solid = practice ───────────────────────── */
.pl-play,.pl-spin{border:0;font-weight:800;}
.pl-play.is-earn,.pl-spin.is-earn,.pl-help-ok,#pl-nudge-go,#pl-start.is-earn,#pl-again.is-earn,#pl-otp-go{
  background:var(--pl-earn)!important;background-size:200% 100%!important;color:var(--pl-earn-ink)!important;
  border:0!important;box-shadow:0 6px 18px var(--pl-earn-shadow);animation:plShine 3.2s ease-in-out infinite;}
.pl-play.is-earn:hover,.pl-spin.is-earn:hover,.pl-help-ok:hover,#pl-nudge-go:hover{transform:translateY(-1px);filter:saturate(1.08) brightness(1.03);}
.pl-play.is-practice,#pl-start.is-practice,#pl-again.is-practice,.pl-spin.is-practice{
  background:var(--c-solid)!important;color:var(--c-solid-ink)!important;border:1.5px solid var(--c-solid)!important;box-shadow:none;}
.pl-spin:disabled{opacity:.5;cursor:not-allowed;animation:none;}
#pl-otp-go{background:linear-gradient(90deg,#FFB020,#FFC53D 50%,#FFB020)!important;background-size:200% 100%!important;color:var(--pl-gold-ink)!important;box-shadow:0 8px 22px rgba(255,176,32,.35);}
@keyframes plShine{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}
@media(prefers-reduced-motion:reduce){.pl-play.is-earn,.pl-spin.is-earn,.pl-help-ok,#pl-nudge-go,#pl-otp-go{animation:none;}}

/* ── top: one compact row ─────────────────────────────────────────────────── */
.pl-top{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 28px;align-items:end;padding:28px 0 22px;}
@media(max-width:980px){.pl-top{grid-template-columns:1fr;padding-top:20px;}}
.pl-title{position:relative;}
.pl-eyebrow{display:flex;align-items:center;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--pl-hot);margin:0 0 8px;}
.pl-new{display:inline-block;padding:3px 8px;border-radius:999px;background:var(--pl-earn);color:var(--pl-earn-ink);font-size:.62rem;letter-spacing:.12em;}
.pl-title h1{font-size:clamp(1.65rem,3.2vw,2.35rem);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin:0 0 6px;}
.pl-title h1 span{background:var(--grad,linear-gradient(90deg,#4E2BA4,#0C7CC0));-webkit-background-clip:text;background-clip:text;color:transparent;}
html.vp-camp-halloween .pl-title h1 span{background-image:var(--camp-run);}
.pl-lead{margin:0;color:var(--c-ink-3);font-size:.95rem;max-width:52ch;}
.pl-bat{z-index:1;} .pl-bat-a{left:min(62%,420px);top:-4px;} .pl-bat-b{left:min(72%,500px);top:26px;}
@media(max-width:600px){.pl-bat-a{left:auto;right:6%;top:0;}.pl-bat-b{display:none!important;}}

/* stats */
.pl-me{min-width:0;}
.pl-stats{display:grid;grid-template-columns:repeat(3,minmax(140px,auto));gap:10px;}
@media(max-width:980px){.pl-stats{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:560px){.pl-stats{grid-template-columns:1fr 1fr;}.pl-stats .pl-stat:nth-child(2){grid-column:1/-1;order:3;}}
.pl-stat{background:var(--c-card);border:1px solid var(--c-line);border-radius:16px;padding:11px 14px;box-shadow:var(--sh-xs);min-width:0;}
.pl-stat .k{display:block;font-size:.66rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--c-ink-3);}
.pl-stat b{display:block;font-size:1.35rem;font-weight:800;letter-spacing:-.02em;line-height:1.15;margin:3px 0 2px;white-space:nowrap;}
.pl-stat b small{font-size:.78rem;font-weight:700;color:var(--c-ink-3);letter-spacing:0;}
.pl-stat .s{display:block;font-size:.72rem;color:var(--pl-quiet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;}
/* v85: the points card leads with what they are worth. Dollars in the
   gradient (the sale's orange while it runs, 3:1+ as large text in both
   themes), a touch bigger than the other stats; the points go underneath. */
.pl-stat-cash{position:relative;overflow:hidden;}
.pl-stat-cash b{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 6px;position:relative;white-space:normal;}
@media(max-width:560px){.pl-cash{font-size:1.45rem!important;}}
.pl-cash{font-size:1.62rem;font-weight:900;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums;
  background-image:var(--grad,linear-gradient(90deg,#6241C2,#2E4FA8,#0C8CCE));-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;}
html.vp-camp-halloween .pl-cash{background-image:var(--camp-run);}
.pl-stat-cash b small{font-size:.72rem;font-weight:800;letter-spacing:.02em;color:var(--c-ink-2);}
.pl-stat-cash .s{color:var(--c-ink-3);}
.pl-cash-pts{font-weight:700;color:var(--c-ink-2);}
.pl-cash-pop{position:absolute;right:0;top:-4px;font-style:normal;font-size:.72rem;font-weight:800;color:var(--c-ok);opacity:0;pointer-events:none;animation:plCashPop 2s var(--ease-out) forwards;}
@keyframes plCashPop{0%{opacity:0;transform:translateY(6px);}15%{opacity:1;transform:translateY(0);}75%{opacity:1;}100%{opacity:0;transform:translateY(-8px);}}
@media(prefers-reduced-motion:reduce){.pl-cash-pop{animation:none;opacity:1;}}
.pl-bar{height:6px;border-radius:999px;background:var(--c-panel);overflow:hidden;margin:4px 0 4px;}
.pl-bar i{display:block;height:100%;border-radius:999px;background:var(--pl-earn);transition:width .5s;}
.pl-out{display:flex;align-items:center;gap:12px 18px;flex-wrap:wrap;background:var(--c-card);border:1px solid var(--c-line);border-radius:16px;padding:12px 14px;box-shadow:var(--sh-xs);}
.pl-out p{margin:0;font-size:.84rem;color:var(--c-ink-2);max-width:40ch;}
.pl-out p b{color:var(--c-ink);}
.pl-out .btns{display:flex;gap:8px;}
.pl-out .btn{padding:9px 16px;font-size:.82rem;}

/* ── layout: games + leaderboards, the spin beside them ───────────────────── */
.pl-layout{display:grid;grid-template-columns:minmax(0,1fr) 22rem;gap:28px;align-items:start;}
.pl-layout.no-wheel{grid-template-columns:minmax(0,1fr);}
.pl-main{min-width:0;display:grid;gap:34px;}
@media(max-width:1060px){.pl-layout{grid-template-columns:minmax(0,1fr) 20rem;gap:22px;}}
@media(max-width:900px){.pl-layout{grid-template-columns:minmax(0,1fr);}.pl-wheel{order:-1;}}
.pl-sec-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin:0 0 14px;}
.pl-sec-head h2{font-size:1.45rem;font-weight:800;letter-spacing:-.03em;margin:0;line-height:1.2;}
.pl-sec-sub{flex-basis:100%;margin:0;font-size:.84rem;color:var(--c-ink-3);}
.pl-help{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--c-line-2,#CFCFCF);background:var(--c-card);color:var(--c-ink);
  font-weight:800;font-size:.86rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:border-color .2s,transform .2s;}
.pl-help:hover{border-color:var(--pl-hot);color:var(--pl-hot);transform:scale(1.06);}

/* ── game cards: each one plays itself ────────────────────────────────────── */
.pl-game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
@media(min-width:1100px){.pl-game-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}}
.pl-game{position:relative;background:var(--c-card);border:1px solid var(--c-line);border-radius:22px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:var(--sh-sm);transition:transform .3s var(--ease-out,ease),box-shadow .3s,border-color .3s;}
.pl-game:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(12,12,12,.12);}
html.vp-dark .pl-game:hover{box-shadow:0 18px 40px rgba(0,0,0,.55);}
.pl-game.is-earn{border-color:color-mix(in srgb,var(--pl-hot) 45%,var(--c-line));}
.pl-game.pulse{animation:plPulse 1.2s ease-in-out 2;}
@keyframes plPulse{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--pl-hot) 35%,transparent);}}
.pl-screen{position:relative;margin:8px 8px 0;aspect-ratio:3/4;border-radius:16px;overflow:hidden;isolation:isolate;
  background:linear-gradient(180deg,#EAF2FB,#FFFFFF);box-shadow:inset 0 0 0 1px rgba(12,12,12,.06);}
html.vp-dark .pl-screen{background:linear-gradient(180deg,#151A26,#0C0C0C);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);}
html.vp-camp-halloween .pl-screen{background:linear-gradient(180deg,#2A1B44,#120D1C);}
.pl-screen-fishing{background:linear-gradient(180deg,#DCEBFF 0 20%,#3FA9E0 20%,#0B4F86);}
.pl-screen canvas{position:absolute;inset:0;width:100%;height:100%;display:block;}
@media(max-width:560px){.pl-screen{aspect-ratio:4/5;margin:6px 6px 0;border-radius:14px;}}
.pl-lvl{position:absolute;top:8px;left:8px;z-index:2;display:inline-flex;align-items:center;gap:5px;font-size:.6rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  padding:4px 9px 4px 8px;border-radius:999px;background:rgba(12,12,12,.74);color:#FFFFFF;backdrop-filter:blur(4px);pointer-events:none;}
.pl-lvl::before{content:"";width:6px;height:6px;border-radius:50%;background:#4ADE80;}
.pl-lvl[data-lvl="2"]::before{background:#FBBF24;} .pl-lvl[data-lvl="3"]::before{background:#F87171;}
.pl-pb{position:absolute;right:8px;bottom:8px;z-index:2;font-size:.64rem;font-weight:800;padding:4px 9px;border-radius:999px;background:rgba(12,12,12,.74);color:#FFFFFF;
  pointer-events:none;font-variant-numeric:tabular-nums;backdrop-filter:blur(4px);}
.pl-screen-go{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;border:0;padding:0;margin:0;background:transparent;cursor:pointer;border-radius:inherit;}
.pl-go-ico{width:62px;height:62px;border-radius:50%;background:rgba(12,12,12,.72);box-shadow:0 10px 30px rgba(0,0,0,.35),inset 0 0 0 2px rgba(255,255,255,.65);
  opacity:0;transform:scale(.8);transition:opacity .25s,transform .25s var(--ease-out,ease);position:relative;backdrop-filter:blur(4px);}
.pl-go-ico::after{content:"";position:absolute;left:24px;top:19px;border-left:19px solid #FFFFFF;border-top:12px solid transparent;border-bottom:12px solid transparent;}
.pl-screen-go:hover .pl-go-ico,.pl-screen-go:focus-visible .pl-go-ico{opacity:1;transform:scale(1);}
.pl-screen-go:focus-visible{outline:3px solid var(--pl-hot);outline-offset:-3px;}
@media(hover:none){.pl-go-ico{display:none;}}
.pl-game-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:4px;flex:1;}
.pl-game h3{font-size:1.04rem;font-weight:800;margin:0;letter-spacing:-.01em;}
.pl-game-desc{margin:0;font-size:.8rem;line-height:1.45;color:var(--c-ink-3);min-height:2.9em;}
.pl-val{margin:2px 0 0;font-size:.8rem;font-weight:800;color:var(--c-ink);}
.pl-val em{font-style:normal;color:var(--pl-hot);}
.pl-state{margin:0 0 8px;font-size:.74rem;font-weight:600;color:var(--pl-quiet);min-height:1.3em;font-variant-numeric:tabular-nums;}
.pl-state.ready{color:var(--c-ink-2);}
.pl-state.ready::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--pl-hot);margin-right:6px;vertical-align:1px;box-shadow:0 0 0 3px color-mix(in srgb,var(--pl-hot) 22%,transparent);}
.pl-game .btn.pl-play{margin-top:auto;width:100%;padding:11px 16px;}
@media(min-width:1100px){.pl-game-body{padding:11px 12px 12px;} .pl-game h3{font-size:.98rem;} .pl-game-desc{font-size:.76rem;}}
@media(max-width:560px){.pl-game-grid{gap:10px;} .pl-game{border-radius:18px;} .pl-game-desc{display:none;} .pl-game-body{padding:9px 10px 11px;gap:3px;}
  .pl-game h3{font-size:.92rem;} .pl-val{font-size:.76rem;} .pl-state{font-size:.7rem;margin-bottom:6px;}
  .pl-game .btn.pl-play{padding:10px 6px;font-size:.8rem;} .pl-lvl{top:6px;left:6px;} .pl-pb{right:6px;bottom:6px;}}

/* ── leaderboards ─────────────────────────────────────────────────────────── */
.pl-lb-card{background:var(--c-card);border:1px solid var(--c-line);border-radius:22px;box-shadow:var(--sh-sm);padding:14px;}
.pl-lb-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.pl-lb-games{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px;margin:-2px;max-width:100%;}
.pl-lb-games::-webkit-scrollbar{display:none;}
.pl-lb-g{flex:0 0 auto;border:1px solid var(--c-line);background:var(--c-card);color:var(--c-ink-2);font:inherit;font-size:.8rem;font-weight:700;padding:8px 14px;border-radius:999px;cursor:pointer;transition:all .2s;}
.pl-lb-g:hover{border-color:var(--c-line-2);color:var(--c-ink);}
.pl-lb-g[aria-selected="true"]{background:var(--c-solid);color:var(--c-solid-ink);border-color:var(--c-solid);}
.pl-seg{display:inline-flex;padding:3px;border-radius:999px;background:var(--c-panel);gap:2px;}
.pl-seg button{border:0;background:transparent;color:var(--c-ink-3);font:inherit;font-size:.76rem;font-weight:800;padding:6px 12px;border-radius:999px;cursor:pointer;transition:all .2s;}
.pl-seg button[aria-selected="true"]{background:var(--c-card);color:var(--c-ink);box-shadow:0 1px 4px rgba(12,12,12,.12);}
html.vp-dark .pl-seg button[aria-selected="true"]{background:#2A292D;box-shadow:none;}
@media(max-width:560px){.pl-lb-bar{flex-direction:column;align-items:stretch;}.pl-seg{align-self:flex-start;}}
.pl-lb-list{list-style:none;margin:0;padding:0;display:grid;gap:4px;}
.pl-lb-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;font-size:.88rem;}
.pl-lb-row:nth-child(odd){background:var(--c-panel-2,#F8F8F8);}
html.vp-dark .pl-lb-row:nth-child(odd){background:rgba(255,255,255,.03);}
.pl-lb-row .rk{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800;color:var(--c-ink-3);font-variant-numeric:tabular-nums;}
.pl-lb-row.r1 .rk{background:linear-gradient(135deg,#FFE08A,#F5B62A);color:#3A2600;box-shadow:0 2px 8px rgba(245,182,42,.4);}
.pl-lb-row.r2 .rk{background:linear-gradient(135deg,#F1F3F6,#B9C0CA);color:#1F2937;}
.pl-lb-row.r3 .rk{background:linear-gradient(135deg,#F2C9A5,#C98A57);color:#3B1F0A;}
.pl-lb-row .nm{font-weight:700;color:var(--c-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pl-lb-row .nm small{font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--pl-hot);margin-left:6px;}
.pl-lb-row .sc{font-weight:900;font-size:1rem;font-variant-numeric:tabular-nums;color:var(--c-ink);}
html.vp-camp-halloween:not(.vp-dark) .pl-lb-row.me .nm small,html.vp-camp-halloween:not(.vp-dark) .pl-pod .you{color:#8A3510;}
.pl-lb-row.me{background:color-mix(in srgb,var(--pl-hot) 12%,var(--c-card))!important;box-shadow:inset 3px 0 0 var(--pl-hot);}
/* the podium: 2nd, 1st, 3rd; gold / silver / bronze steps */
.pl-podium{list-style:none;display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:10px;padding:8px 6px 14px;margin-bottom:4px;border-bottom:1px solid var(--c-line);}
.pl-pod{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;text-align:center;animation:plRise .45s var(--ease-out,ease) backwards;}
.pl-pod.p1{animation-delay:.08s;} .pl-pod.p3{animation-delay:.16s;}
.pl-pod .md{position:relative;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:1rem;margin-bottom:4px;
  background:linear-gradient(135deg,#F1F3F6,#B9C0CA);color:#1F2937;box-shadow:0 4px 12px rgba(12,12,12,.14);}
.pl-pod.p1 .md{width:54px;height:54px;font-size:1.3rem;background:linear-gradient(135deg,#FFE08A,#F5B62A);color:#3A2600;box-shadow:0 6px 18px rgba(245,182,42,.45);}
.pl-pod.p1 .md::before{content:"";position:absolute;top:-17px;left:50%;width:30px;height:18px;transform:translateX(-50%);background:#F5B62A;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 18'%3E%3Cpath d='M2 16 4 3l7 6 4-8 4 8 7-6 2 13z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 18'%3E%3Cpath d='M2 16 4 3l7 6 4-8 4 8 7-6 2 13z'/%3E%3C/svg%3E") center/contain no-repeat;}
.pl-pod.p3 .md{background:linear-gradient(135deg,#F2C9A5,#C98A57);color:#3B1F0A;}
.pl-pod .nm{font-weight:800;font-size:.86rem;color:var(--c-ink);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pl-pod .you{font-size:.6rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--pl-hot);}
.pl-pod .sc{font-weight:900;font-size:1.35rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--c-ink);line-height:1.1;}
.pl-pod.p1 .sc{font-size:1.6rem;}
.pl-pod .st{display:block;width:100%;height:34px;margin-top:6px;border-radius:12px 12px 4px 4px;background:linear-gradient(180deg,rgba(185,192,202,.55),rgba(185,192,202,.12));}
.pl-pod.p1 .st{height:58px;background:linear-gradient(180deg,rgba(245,182,42,.6),rgba(245,182,42,.12));}
.pl-pod.p3 .st{height:22px;background:linear-gradient(180deg,rgba(201,138,87,.55),rgba(201,138,87,.12));}
.pl-pod.me .md{outline:3px solid var(--pl-hot);outline-offset:2px;}
@media(max-width:560px){.pl-podium{gap:6px;padding:6px 0 12px;} .pl-pod .nm{font-size:.76rem;} .pl-pod .sc{font-size:1.1rem;} .pl-pod.p1 .sc{font-size:1.3rem;}
  .pl-pod .md{width:34px;height:34px;font-size:.9rem;} .pl-pod.p1 .md{width:44px;height:44px;font-size:1.1rem;}}
.pl-lb-gap{list-style:none;text-align:center;color:var(--c-ink-4,#8E8E8E);font-weight:800;letter-spacing:.3em;font-size:.7rem;padding:2px 0;}
.pl-lb-empty{list-style:none;padding:26px 12px;text-align:center;border-radius:14px;background:var(--c-panel-2,#F8F8F8);display:grid;gap:10px;justify-items:center;}
html.vp-dark .pl-lb-empty{background:rgba(255,255,255,.03);}
.pl-lb-empty p{margin:0;font-size:.88rem;color:var(--c-ink-3);}
.pl-lb-empty b{color:var(--c-ink);font-size:1rem;}
.pl-lb-empty .btn{padding:9px 18px;font-size:.82rem;}
.pl-lb-skel{height:44px;border-radius:12px;background:linear-gradient(90deg,var(--c-panel) 25%,var(--c-panel-2,#F8F8F8) 50%,var(--c-panel) 75%);background-size:200% 100%;animation:plSkel 1.2s linear infinite;list-style:none;}
@keyframes plSkel{to{background-position:-200% 0;}}
@media(prefers-reduced-motion:reduce){.pl-lb-skel{animation:none;}}
.pl-lb-foot{display:flex;align-items:center;justify-content:space-between;gap:10px 16px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--c-line);font-size:.78rem;color:var(--c-ink-3);}
.pl-lb-foot p{margin:0;}
.pl-lb-foot a:not(.btn){color:var(--pl-hot);font-weight:800;text-decoration:underline;text-underline-offset:3px;}
.pl-lb-foot .btn{padding:8px 16px;font-size:.8rem;}
.pl-tog{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:700;color:var(--c-ink-2);}
.pl-tog input{appearance:none;-webkit-appearance:none;width:34px;height:20px;border-radius:999px;background:var(--c-line-2,#D6D6D6);position:relative;cursor:pointer;margin:0;transition:background .2s;flex:0 0 auto;}
.pl-tog input::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#FFFFFF;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s;}
.pl-tog input:checked{background:var(--pl-hot);}
.pl-tog input:checked::after{transform:translateX(14px);}
.pl-tog input:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px;}

/* ── LTM: Halloween teaser strip (sale only) ──────────────────────────────── */
.pl-ltm{display:none;}
html.vp-camp-halloween .pl-ltm{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px 18px;
  background:radial-gradient(circle at 100% 0%,rgba(232,116,32,.22),transparent 55%),#0C0C0C;border:1px solid #26222E;border-radius:20px;padding:16px 18px;color:#F4F4F4;}
@media(max-width:700px){html.vp-camp-halloween .pl-ltm{grid-template-columns:1fr auto;}.pl-ltm-text{grid-column:1/-1;}}
.pl-ltm-text h2{font-size:1.1rem;font-weight:800;letter-spacing:-.02em;margin:6px 0 2px;color:#F4F4F4;}
.pl-ltm-text p{margin:0;font-size:.8rem;color:#C9C3D3;}
.pl-ltm-tag{display:inline-block;font-size:.6rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:linear-gradient(90deg,#CE5A0C,#E87420);color:#0C0C0C;}
.pl-ltm-q{display:flex;gap:8px;}
.pl-ltm-q i{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:12px;font-style:normal;font-weight:900;font-size:1.4rem;color:#F28C38;
  background:repeating-linear-gradient(135deg,#141117 0 8px,#110F14 8px 16px);border:1px solid #2E2836;text-shadow:0 0 14px rgba(242,140,56,.6);animation:plQ 2.6s ease-in-out infinite;}
.pl-ltm-q i:nth-child(2){animation-delay:.5s;} .pl-ltm-q i:nth-child(3){animation-delay:1s;}
@keyframes plQ{50%{text-shadow:0 0 26px rgba(242,140,56,.95);transform:translateY(-2px);}}
@media(prefers-reduced-motion:reduce){.pl-ltm-q i{animation:none;}}
.pl-ltm-when{margin:0;padding:9px 14px;border-radius:12px;background:#1E1A24;border:1px solid #3A3442;font-size:.76rem;font-weight:800;color:#E6E0EE;white-space:nowrap;}

/* the wheel card */
.pl-wheel{position:sticky;top:132px;background:var(--c-card);border:1px solid var(--c-line);border-radius:22px;padding:16px 18px 14px;box-shadow:var(--sh-sm);text-align:center;overflow:hidden;}
@media(max-width:900px){.pl-wheel{position:relative;top:auto;}}
html.vp-camp-halloween .pl-wheel{background:radial-gradient(circle at 50% 0%,rgba(232,116,32,.10),transparent 55%),var(--c-card);border-color:color-mix(in srgb,#E87420 40%,var(--c-line));}
.pl-wheel .pl-eyebrow{justify-content:center;margin-bottom:4px;}
.pl-wheel h2{font-size:1.3rem;font-weight:800;letter-spacing:-.02em;margin:0;}
.pl-wheel-sub{margin:4px auto 6px;font-size:.8rem;color:var(--c-ink-3);max-width:32ch;}
.pl-wheel-frame{position:relative;width:min(100%,300px);aspect-ratio:1/1;margin:6px auto 10px;}
.pl-wheel-frame canvas{width:100%;height:100%;display:block;}
.pl-spin{width:min(100%,300px);padding:13px 18px;font-size:.95rem;}
.pl-spin-sub{margin:7px 0 0;font-size:.74rem;color:var(--pl-quiet);font-variant-numeric:tabular-nums;}
.pl-result{margin:10px 0 0;padding:10px 12px;border-radius:14px;background:var(--c-panel);}
.pl-result p{margin:0;font-size:.78rem;color:var(--c-ink-3);}
.pl-result .pl-result-h{font-size:1.05rem;font-weight:800;color:var(--c-ink);margin-bottom:2px;}
.pl-result.big{background:color-mix(in srgb,#E87420 14%,var(--c-card));box-shadow:inset 0 0 0 1.5px #E87420;}
.pl-prize{margin-top:10px;padding:12px;border-radius:14px;text-align:left;background:var(--c-card);box-shadow:inset 0 0 0 1.5px #E87420;display:grid;gap:8px;}
.pl-prize p{margin:0;} .pl-prize-h{font-weight:800;font-size:.9rem;} .pl-prize-sub{font-size:.74rem;color:var(--c-ink-3);}
.pl-prize .btn{padding:9px 14px;font-size:.8rem;}
.pl-odds{list-style:none;padding:0;margin:12px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:5px;}
.pl-odds li{display:flex;justify-content:space-between;gap:6px;padding:6px 9px;border-radius:9px;background:var(--c-panel);font-size:.72rem;font-weight:600;}
.pl-odds li i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:0;box-shadow:inset 0 0 0 1px rgba(12,12,12,.12);}
html.vp-dark .pl-odds li i{box-shadow:0 0 0 1px rgba(255,255,255,.4);}
.pl-odds b{font-weight:800;}
.pl-link{margin-top:10px;background:none;border:0;padding:4px;font:inherit;font-size:.76rem;font-weight:700;color:var(--c-ink-2);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.pl-link:hover{color:var(--pl-hot);}

/* Halloween cobwebs (sale only, .camp-corner shows only while it runs) */
.pl-web{--w:120px;z-index:0;pointer-events:none;}
.pl-web-l{left:calc(50% - 50vw);top:-6px;}
.pl-web-r{right:calc(50% - 50vw);top:-6px;transform:scaleX(-1);}
.pl-web-card{--w:86px;right:-6px;top:-6px;transform:scaleX(-1);}
@media(max-width:600px){.pl-web{--w:78px;}.pl-web-card{--w:64px;}.pl-web-l{left:calc(50% - 50vw);}.pl-web-r{right:calc(50% - 50vw);}}

.pl-fine{max-width:100ch;margin:30px auto 0;text-align:center;font-size:.68rem;line-height:1.55;color:var(--c-ink-3);}

/* ── modals ───────────────────────────────────────────────────────────────── */
.pl-modal{position:fixed;inset:0;z-index:2050;background:rgba(8,8,10,.62);display:flex;align-items:center;justify-content:center;padding:18px;animation:plFade .2s ease;}
.pl-modal-box{position:relative;width:min(100%,460px);max-height:calc(100dvh - 36px);overflow:auto;background:var(--c-card);border-radius:22px;padding:26px 24px 22px;box-shadow:0 30px 80px rgba(0,0,0,.4);animation:plRise .28s var(--ease-out,ease);}
.pl-modal-box h2{font-size:1.5rem;font-weight:800;letter-spacing:-.03em;margin:0 0 8px;}
.pl-modal-x{position:absolute;right:12px;top:12px;}
.pl-help-lead{margin:0 0 14px;font-size:.92rem;color:var(--c-ink-2);}
.pl-help-list{list-style:none;padding:0;margin:0 0 14px;display:grid;gap:8px;}
.pl-help-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:12px;background:var(--c-panel);font-size:.84rem;font-weight:600;}
.pl-help-list li b{font-weight:800;white-space:nowrap;}
.pl-help-list li span small{display:block;font-size:.7rem;font-weight:600;color:var(--c-ink-3);}
.pl-help-rules{margin:0 0 14px;font-size:.84rem;line-height:1.55;color:var(--c-ink-3);}
.pl-help-rules b{color:var(--c-ink);}
.pl-help-ot{margin:0 0 18px;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,#FFC53D 16%,var(--c-card));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,#FFC53D 70%,transparent);}
.pl-help-ot p{margin:0;font-size:.82rem;line-height:1.5;color:var(--c-ink-2);}
.pl-help-ot .pl-help-ot-h{font-size:.7rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink);margin-bottom:3px;}
.pl-help-rules a,.pl-panel-earn a,.pl-panel-pts a,.pl-over-rank a,.pl-otp-t a,.pl-out a:not(.btn){color:var(--pl-hot);font-weight:800;text-decoration:underline;text-underline-offset:3px;}
.pl-help-ok{width:100%;}
.pl-rules-list{margin:6px 0 0;padding-left:18px;} .pl-rules-list li{font-size:.84rem;line-height:1.55;color:var(--c-ink-3);margin:6px 0;}
.pl-nudge{position:fixed;right:18px;bottom:18px;z-index:2040;width:min(calc(100vw - 36px),340px);background:var(--c-card);border:1px solid var(--c-line);border-radius:20px;padding:18px 18px 16px;
  box-shadow:0 24px 60px rgba(0,0,0,.28);animation:plRise .35s var(--ease-out,ease);}
html.vp-camp-halloween .pl-nudge{box-shadow:0 24px 60px rgba(0,0,0,.28),inset 0 0 0 1.5px #E87420;}
.pl-nudge-x{position:absolute;right:10px;top:10px;width:32px;height:32px;font-size:1.2rem;}
.pl-nudge-h{margin:0 30px 4px 0;font-weight:800;font-size:1.05rem;}
.pl-nudge-t{margin:0 0 12px;font-size:.84rem;color:var(--c-ink-3);}
#pl-nudge-go{width:100%;}
@media(max-width:560px){.pl-nudge{left:12px;right:12px;bottom:12px;width:auto;}}
@keyframes plFade{from{opacity:0;}} @keyframes plRise{from{opacity:0;transform:translateY(14px);}}

/* ── game stage ──────────────────────────────────────────────────────────── */
html.pl-lock,html.pl-lock body{overflow:hidden;}
.pl-stage{position:fixed;inset:0;z-index:2000;background:rgba(8,8,10,.78);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;animation:plFade .2s ease;}
.pl-stage[hidden]{display:none;}
.pl-stage-box{position:relative;width:min(100%,460px);height:min(calc(100dvh - 32px),760px);background:var(--c-card);border-radius:24px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 30px 80px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.06);animation:plRise .28s var(--ease-out,ease);}
.pl-stage-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px 9px 16px;border-bottom:1px solid var(--c-line);}
.pl-stage-id{min-width:0;}
.pl-stage-title{font-weight:800;font-size:1rem;margin:0;}
.pl-stage-mode{font-size:.7rem;font-weight:700;color:var(--pl-quiet);margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pl-stage-mode.earn{color:var(--c-ink-2);}
.pl-hud{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.pl-ot-badge{font-size:.6rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;padding:5px 9px;border-radius:999px;background:var(--pl-gold);color:var(--pl-gold-ink);
  box-shadow:0 0 0 0 rgba(255,197,61,.6);animation:plGlow 1.8s ease-out infinite;}
@keyframes plGlow{0%{box-shadow:0 0 0 0 rgba(255,197,61,.55);}100%{box-shadow:0 0 0 10px rgba(255,197,61,0);}}
.pl-score-box{display:flex;flex-direction:column;align-items:center;min-width:52px;padding:3px 10px;border-radius:12px;background:var(--c-panel);}
.pl-score{font-weight:900;font-size:1.2rem;line-height:1.1;font-variant-numeric:tabular-nums;display:inline-block;}
.pl-score.bump{animation:plBump .28s var(--ease-out,ease);}
.pl-score.x2{color:#8A5A0B;} html.vp-dark .pl-score.x2{color:#FFC53D;}
@keyframes plBump{40%{transform:scale(1.28);}}
.pl-score-pts{font-size:.6rem;font-weight:800;color:var(--c-ink-3);white-space:nowrap;}
.pl-score-pts:empty{display:none;}
.pl-timer{font-weight:800;font-size:.86rem;color:var(--c-ink-2);font-variant-numeric:tabular-nums;}
.pl-timer.low{color:#E5484D;}
.pl-lives{display:flex;gap:3px;} .pl-lives i{width:14px;height:14px;display:block;background:#E5484D;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21s-7.5-4.6-10-9.2C.3 8.4 2.3 4 6.3 4c2.2 0 3.7 1.2 4.7 2.6C12 5.2 13.5 4 15.7 4c4 0 6 4.4 4.3 7.8C19.5 16.4 12 21 12 21z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 21s-7.5-4.6-10-9.2C.3 8.4 2.3 4 6.3 4c2.2 0 3.7 1.2 4.7 2.6C12 5.2 13.5 4 15.7 4c4 0 6 4.4 4.3 7.8C19.5 16.4 12 21 12 21z'/%3E%3C/svg%3E") center/contain no-repeat;}
.pl-lives i.off{background:var(--c-line-2,#CFCFCF);}
.pl-x{width:36px;height:36px;border-radius:50%;border:1px solid var(--c-line);background:var(--c-card);color:var(--c-ink);font-size:1.35rem;line-height:1;cursor:pointer;flex:0 0 auto;}
/* the run's points: fills up to the run max, turns gold in overtime */
.pl-meter{height:4px;background:var(--c-panel);position:relative;overflow:hidden;}
.pl-meter i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--pl-earn);transition:width .35s var(--ease-out,ease);}
.pl-meter.full i{background:repeating-linear-gradient(135deg,#FFC53D 0 10px,#FFB020 10px 20px);background-size:28px 100%;animation:plStripe .8s linear infinite;}
@keyframes plStripe{to{background-position:28px 0;}}
.pl-canvas-wrap{position:relative;flex:1 1 auto;min-height:0;}
.pl-canvas-wrap>canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none;}
.pl-chip{position:absolute;left:50%;top:12px;z-index:4;transform:translateX(-50%);margin:0;max-width:calc(100% - 24px);padding:8px 14px;border-radius:999px;
  background:rgba(12,12,12,.82);color:#FFFFFF;font-size:.76rem;font-weight:800;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.25);animation:plChip .3s var(--ease-out,ease);pointer-events:none;}
.pl-chip.gold{background:var(--pl-gold);color:var(--pl-gold-ink);}
@keyframes plChip{from{opacity:0;transform:translate(-50%,-8px);}}
.pl-panel{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:28px;
  background:color-mix(in srgb,var(--c-card) 93%,transparent);backdrop-filter:blur(4px);animation:plFade .2s ease;}
.pl-panel[hidden]{display:none;}
.pl-panel[data-p="none"]{display:none;}
.pl-panel-h{font-weight:800;font-size:1.15rem;margin:0;}
.pl-panel-t{font-size:.9rem;line-height:1.5;color:var(--c-ink-3);margin:0;max-width:34ch;}
.pl-panel-earn{margin:0;font-size:.82rem;font-weight:700;color:var(--c-ink-2);max-width:34ch;}
.pl-panel-k{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--c-ink-3);margin:0;}
.pl-panel-score{font-size:3.6rem;font-weight:900;letter-spacing:-.04em;line-height:1;margin:0;font-variant-numeric:tabular-nums;}
.pl-panel-pts{font-weight:800;margin:0;color:var(--c-ink);}
.pl-panel-pts.won{font-size:1.15rem;}
.pl-panel-btns{display:flex;gap:10px;margin-top:4px;flex-wrap:wrap;justify-content:center;}
.pl-panel-best{margin:0;font-size:.76rem;font-weight:700;color:var(--c-ink-3);}
.pl-panel-best:empty{display:none;}
.pl-panel-best.new{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--pl-earn);color:var(--pl-earn-ink);font-weight:800;animation:plPop .5s var(--ease-out,ease);}
@keyframes plPop{0%{transform:scale(.6);opacity:0;}70%{transform:scale(1.08);}}
#pl-start{min-width:200px;}
/* start panel: today's top 3 for this game */
.pl-mini{width:min(100%,300px);display:grid;gap:4px;}
.pl-mini:empty{display:none;}
.pl-mini-h{margin:0 0 2px;font-size:.66rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink-3);}
.pl-mini .pl-lb-row{padding:5px 8px;font-size:.8rem;grid-template-columns:26px minmax(0,1fr) auto;background:color-mix(in srgb,var(--c-panel) 80%,transparent)!important;}
.pl-mini .pl-lb-row .rk{width:22px;height:22px;font-size:.68rem;}
.pl-mini .pl-lb-row .sc{font-size:.86rem;}
.pl-mini-note{margin:2px 0 0;font-size:.74rem;color:var(--c-ink-3);}
/* 3-2-1 */
.pl-count{background:color-mix(in srgb,var(--c-card) 55%,transparent);backdrop-filter:blur(2px);}
.pl-count-n{font-size:6rem;font-weight:900;letter-spacing:-.05em;line-height:1;background:var(--pl-earn);-webkit-background-clip:text;background-clip:text;color:transparent;}
.pl-count-n.tick{animation:plCount .62s var(--ease-out,ease);}
@keyframes plCount{0%{transform:scale(1.7);opacity:0;}35%{transform:scale(1);opacity:1;}100%{transform:scale(.9);opacity:.85;}}
/* overtime popup */
.pl-otp{background:radial-gradient(circle at 50% 18%,rgba(255,197,61,.28),transparent 60%),color-mix(in srgb,var(--c-card) 90%,transparent);gap:10px;}
.pl-otp-k{margin:0;display:inline-block;padding:5px 12px;border-radius:999px;background:var(--pl-gold);color:var(--pl-gold-ink);font-size:.66rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase;animation:plPop .5s var(--ease-out,ease);}
.pl-otp-h{margin:0;font-size:1.7rem;font-weight:900;letter-spacing:-.03em;line-height:1.1;}
.pl-otp-t{margin:0;font-size:.9rem;line-height:1.5;color:var(--c-ink-2);max-width:32ch;}
.pl-otp-pus{list-style:none;margin:4px 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;max-width:320px;}
.pl-otp-pus li{display:flex;flex-direction:column;align-items:center;gap:4px;width:64px;font-size:.62rem;font-weight:800;color:var(--c-ink-2);line-height:1.2;animation:plRise .4s var(--ease-out,ease) backwards;}
.pl-otp-pus li:nth-child(2){animation-delay:.06s;} .pl-otp-pus li:nth-child(3){animation-delay:.12s;} .pl-otp-pus li:nth-child(4){animation-delay:.18s;} .pl-otp-pus li:nth-child(5){animation-delay:.24s;}
.pl-otp-pus canvas{width:40px;height:40px;}
.pl-otp-bar{width:min(100%,220px);height:4px;border-radius:999px;background:var(--c-panel);overflow:hidden;}
.pl-otp-bar i{display:block;height:100%;width:0;background:var(--pl-gold);}
.pl-otp-bar.run i{animation:plFill var(--otp,3.2s) linear forwards;}
@keyframes plFill{to{width:100%;}}
/* results */
.pl-over{gap:8px;}
.pl-over-split{margin:-2px 0 0;font-size:.78rem;font-weight:700;color:var(--c-ink-3);}
.pl-over-split:empty,.pl-over-rank:empty{display:none;}
.pl-over-split b{color:#8A5A0B;} html.vp-dark .pl-over-split b{color:#FFC53D;}
.pl-over-rank{margin:2px 0;padding:8px 14px;border-radius:14px;background:var(--c-panel);font-size:.84rem;font-weight:700;color:var(--c-ink-2);max-width:32ch;animation:plRise .4s var(--ease-out,ease);}
.pl-over-rank b{color:var(--c-ink);font-weight:900;}
.pl-over-rank.top{background:linear-gradient(135deg,#FFE08A,#F5B62A);color:#3A2600;}
.pl-over-rank.top b{color:#3A2600;}
.pl-over-back{margin-top:0;}
@media(max-width:520px){.pl-stage{padding:0;}.pl-stage-box{width:100%;height:100dvh;border-radius:0;}.pl-panel-score{font-size:3.2rem;}}

.pl-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,30px);opacity:0;pointer-events:none;z-index:2100;max-width:min(92vw,520px);
  padding:12px 18px;border-radius:14px;background:#0C0C0C;color:#fff;font-size:.86rem;font-weight:600;transition:all .3s;}
html.vp-dark .pl-toast{background:#F4F4F4;color:#0C0C0C;}
.pl-toast.on{opacity:1;transform:translate(-50%,0);}

/* ---- Halloween limited-time games (v80): three cards above the classics,
   locked with a countdown until launch (admins play early) ---- */
.pl-main{grid-template-columns:minmax(0,1fr);}
.pl-hallo{position:relative;min-width:0;max-width:100%;scroll-margin-top:130px;}
.pl-hallo .pl-game-grid-3{min-width:0;max-width:100%;}
.pl-hallo-tag{display:inline-block;vertical-align:middle;margin:0 10px 3px 0;font-size:.6rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:linear-gradient(90deg,#CE5A0C,#E87420);color:#0C0C0C;}
.pl-game-grid.pl-game-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(min-width:1100px){.pl-game-grid.pl-game-grid-3{gap:16px;}}
@media(max-width:759px){
  .pl-game-grid.pl-game-grid-3{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding:2px 2px 10px;margin:0 -2px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
  .pl-game-grid-3::-webkit-scrollbar{display:none;}
  .pl-game-grid-3 .pl-game{flex:0 0 74%;scroll-snap-align:start;}
  .pl-game-grid-3 .pl-game-desc{display:block;font-size:.76rem;}
}
.pl-game-ltm{border-color:rgba(232,116,32,.5);box-shadow:0 0 0 1px rgba(232,116,32,.16),0 16px 36px -20px rgba(232,116,32,.6);}
.pl-screen.pl-screen-ltm{background:linear-gradient(180deg,#2A1B44,#120D1C);}
.pl-lvl.pl-lvl-ltm::before{background:#FF8A3D;}
.pl-early{position:absolute;top:8px;right:8px;z-index:2;font-size:.56rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:999px;background:#FFC53D;color:#2B1100;}
.pl-early[hidden]{display:none;}
.pl-lockov{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:14px;text-align:center;background:rgba(12,6,22,.68);color:#FFFFFF;border-radius:inherit;}
.pl-lockov[hidden]{display:none;}
.pl-lockov svg{color:#FFB36B;}
.pl-lockov b{font-size:.92rem;font-weight:900;letter-spacing:-.01em;}
.pl-lockov span{font-size:1.4rem;font-weight:900;font-variant-numeric:tabular-nums;color:#FFB36B;min-height:1.2em;}
.pl-game.is-locked .pl-game-body .btn.pl-play{opacity:.72;cursor:not-allowed;}
.pl-lb-g.hw::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#E87420;margin-right:6px;vertical-align:1px;}

/* ---- v81 growth: streak, Founding Players, open spots, weekly prizes,
   share / challenge. Gold (#FFC53D, ink #2B1100: 12:1) means prizes. ---- */
.pl-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.pl-streak,.pl-fp-me{display:inline-flex;align-items:center;gap:8px;margin:0;padding:7px 12px 7px 10px;border-radius:999px;background:var(--c-card);border:1px solid var(--c-line);
  font-size:.76rem;line-height:1.35;color:var(--c-ink-2);box-shadow:var(--sh-xs);max-width:100%;}
.pl-streak b,.pl-fp-me b{color:var(--c-ink);font-weight:800;}
.pl-streak.on{border-color:color-mix(in srgb,var(--pl-hot) 45%,var(--c-line));background:color-mix(in srgb,var(--pl-hot) 9%,var(--c-card));}
.pl-streak.warn{border-color:color-mix(in srgb,#F5B62A 60%,var(--c-line));background:color-mix(in srgb,#F5B62A 12%,var(--c-card));}
.pl-streak-ico{flex:0 0 auto;width:16px;height:16px;background:var(--pl-hot);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c1 3.5-1.5 5-1.5 7.5 0 1.4 1 2.5 2.3 2.5 1.6 0 2.5-1.3 2.2-3.2C17.6 10.6 19 13 19 15.5 19 19.1 15.9 22 12 22s-7-2.9-7-6.5C5 10.6 9.8 7.9 12 2z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c1 3.5-1.5 5-1.5 7.5 0 1.4 1 2.5 2.3 2.5 1.6 0 2.5-1.3 2.2-3.2C17.6 10.6 19 13 19 15.5 19 19.1 15.9 22 12 22s-7-2.9-7-6.5C5 10.6 9.8 7.9 12 2z'/%3E%3C/svg%3E") center/contain no-repeat;}
.pl-streak.warn .pl-streak-ico{background:#B7791F;} html.vp-dark .pl-streak.warn .pl-streak-ico{background:#FFC53D;}
.pl-fp-me.soft{box-shadow:none;}
/* the Founding badge: on the boards, the podium and your own panel */
.pl-fp{flex:0 0 auto;display:inline-block;padding:2px 7px;border-radius:999px;font-size:.58rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;
  color:var(--pl-hot);background:color-mix(in srgb,var(--pl-hot) 10%,var(--c-card));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--pl-hot) 42%,transparent);}
/* v85: the Verapep team's title on the boards and the podium: solid ink, so it
   never reads as a prize or a Founding seat (white on #151515 / the reverse: 17:1) */
.pl-dev{flex:0 0 auto;display:inline-block;padding:2px 7px;border-radius:999px;font-size:.58rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;line-height:1.5;
  color:var(--c-solid-ink);background:var(--c-solid);}
.pl-pod .pl-dev{margin-top:1px;}
.pl-out-fp{display:block;margin-top:5px;font-weight:700;color:var(--c-ink-2);}
.pl-foot-fp{font-weight:700;color:var(--c-ink-2);}
/* names in a row: the name gives way first, badges keep their size */
.pl-lb-row .nm{display:flex;align-items:center;gap:6px;min-width:0;}
.pl-lb-row .nm-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pl-lb-row .nm small{flex:0 0 auto;margin-left:0;}
.pl-pod .pl-fp{margin-top:1px;}
/* open spots: places nobody holds yet */
.pl-lb-row.open{background:transparent!important;}
.pl-lb-row.open .rk{box-shadow:inset 0 0 0 1.5px var(--c-line-2,#CFCFCF);}
.pl-lb-row.open .nm-t{color:var(--c-ink-3);font-weight:600;}
.pl-open-t{font-size:.68rem!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--c-ink-3)!important;}
.pl-lb-row.open + .pl-lb-row.open{border-top:1px dashed var(--c-line);border-radius:0;}
.pl-pod.open .md{background:transparent!important;color:var(--c-ink-3)!important;box-shadow:inset 0 0 0 2px var(--c-line-2,#CFCFCF)!important;}
.pl-pod.p1.open .md::before{opacity:.35;}
.pl-pod.open .nm{color:var(--c-ink-3);font-weight:700;}
.pl-pod.open .pl-open-t{display:block;}
.pl-pod.open .st{opacity:.45;}
/* weekly prizes */
.pl-prize-ico{flex:0 0 auto;width:18px;height:18px;background:#B7791F;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 3h12v2h3v2c0 2.6-1.9 4.7-4.4 5-.8 1.7-2.3 2.9-3.6 3.2V18h3.5v3h-9v-3H11v-2.8C9.7 14.9 8.2 13.7 7.4 12 4.9 11.7 3 9.6 3 7V5h3V3zm0 4H5c0 1.2.7 2.3 1.6 2.8C6.2 9 6 8 6 7zm12 0c0 1-.2 2-.6 2.8.9-.5 1.6-1.6 1.6-2.8h-1z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 3h12v2h3v2c0 2.6-1.9 4.7-4.4 5-.8 1.7-2.3 2.9-3.6 3.2V18h3.5v3h-9v-3H11v-2.8C9.7 14.9 8.2 13.7 7.4 12 4.9 11.7 3 9.6 3 7V5h3V3zm0 4H5c0 1.2.7 2.3 1.6 2.8C6.2 9 6 8 6 7zm12 0c0 1-.2 2-.6 2.8.9-.5 1.6-1.6 1.6-2.8h-1z'/%3E%3C/svg%3E") center/contain no-repeat;}
html.vp-dark .pl-prize-ico{background:#FFC53D;}
.pl-lb-prize{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin:0 0 10px;padding:9px 12px;border-radius:14px;
  background:color-mix(in srgb,#FFC53D 14%,var(--c-card));box-shadow:inset 0 0 0 1px color-mix(in srgb,#F5B62A 45%,transparent);}
.pl-lb-prize p{margin:0;flex:1 1 220px;font-size:.8rem;color:var(--c-ink-2);}
.pl-lb-prize p b{color:var(--c-ink);}
.pl-lb-prize .pl-link,.pl-winners .pl-link{margin:0;padding:2px 0;font-size:.76rem;}
.pl-winners{margin:0 0 12px;padding:12px 14px;border-radius:18px;background:color-mix(in srgb,#FFC53D 12%,var(--c-card));box-shadow:inset 0 0 0 1px color-mix(in srgb,#F5B62A 45%,transparent);
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;}
.pl-win-p{margin:0;flex:1 1 260px;font-size:.82rem;line-height:1.5;color:var(--c-ink-2);}
.pl-win-p b{color:var(--c-ink);}
.pl-win-top{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;width:100%;}
.pl-win-h{margin:0;flex:1 1 auto;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-size:.86rem;}
.pl-win-h b{color:var(--c-ink);font-weight:800;}
.pl-win-h span{font-size:.74rem;color:var(--c-ink-3);font-weight:700;}
.pl-win-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;width:100%;}
.pl-win-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 8px;align-items:baseline;padding:8px 11px;border-radius:12px;background:var(--c-card);box-shadow:var(--sh-xs);}
.pl-win-list .g{grid-column:1/-1;font-size:.62rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-3);}
.pl-win-list b{font-weight:800;color:var(--c-ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pl-win-list b small{font-size:.6rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--pl-hot);}
.pl-win-list .sc{font-weight:900;font-variant-numeric:tabular-nums;color:var(--c-ink);}
.pl-win-list li.me{box-shadow:inset 0 0 0 1.5px var(--pl-hot),var(--sh-xs);}
.pl-win-next{margin:0;width:100%;font-size:.74rem;color:var(--c-ink-3);}
.pl-prize-tag{align-self:flex-start;margin:0 0 2px;font-size:.58rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;
  background:#FFC53D;color:#2B1100;line-height:1.5;}
.pl-prize-tag[hidden]{display:none;}
.pl-prizes-next{margin:12px 0 16px;font-size:.84rem;font-weight:700;color:var(--c-ink-2);}
.pl-prizes-next:empty{display:none;}
/* challenge banner (from a shared link) */
.pl-chal{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 22px;padding:10px 10px 10px 14px;border-radius:16px;background:var(--c-card);
  border:1px solid color-mix(in srgb,var(--pl-hot) 40%,var(--c-line));box-shadow:var(--sh-sm);}
.pl-chal[hidden]{display:none;}
.pl-chal p{margin:0;flex:1 1 200px;font-size:.9rem;color:var(--c-ink-2);}
.pl-chal p b{color:var(--c-ink);font-weight:900;font-variant-numeric:tabular-nums;}
.pl-chal-k{flex:0 0 auto;font-size:.6rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:#FFC53D;color:#2B1100;}
.pl-chal .btn{padding:9px 16px;font-size:.82rem;}
.pl-chal-x{width:32px;height:32px;font-size:1.15rem;}
@media(max-width:560px){.pl-chal{padding:10px;} .pl-chal .btn{flex:1 1 auto;}}
/* game over: the challenge result and the share button */
.pl-over-ch{margin:0;font-size:.8rem;font-weight:700;color:var(--c-ink-2);max-width:32ch;}
.pl-over-ch:empty{display:none;}
.pl-over-ch.won{padding:6px 12px;border-radius:999px;background:#FFC53D;color:#2B1100;}
.pl-over-ch b{font-weight:900;}
.pl-share{display:inline-flex;align-items:center;gap:7px;margin-top:2px;padding:8px 15px;border-radius:999px;border:1.5px solid var(--c-line-2,#CFCFCF);background:var(--c-card);
  color:var(--c-ink);font:inherit;font-size:.8rem;font-weight:800;cursor:pointer;transition:border-color .2s,transform .2s;}
.pl-share:hover{border-color:var(--pl-hot);transform:translateY(-1px);}
.pl-share:focus-visible{outline:3px solid var(--c-focus,var(--pl-hot));outline-offset:2px;}
.pl-share[hidden]{display:none;}

/* ---- after Halloween (html.vp-play-after, from Nov 1): the three newer
   games keep their section, without the orange ---- */
html.vp-play-after .pl-game-ltm{border-color:color-mix(in srgb,var(--pl-hot) 35%,var(--c-line));box-shadow:var(--sh-sm);}
html.vp-play-after .pl-screen.pl-screen-ltm{background:linear-gradient(180deg,#ECE8FF,#F8F7FC);}
html.vp-play-after.vp-dark .pl-screen.pl-screen-ltm{background:linear-gradient(180deg,#151225,#0C0C0C);}
html.vp-play-after .pl-lvl.pl-lvl-ltm::before{background:#9C88FF;}
html.vp-play-after .pl-hallo-tag{background:#4E2BA4;color:#FFFFFF;}
html.vp-play-after.vp-dark .pl-hallo-tag{background:#B9AEF0;color:#1A1035;}
html.vp-play-after .pl-lb-g.hw::before{background:#7B5CFF;}
html.vp-play-after .pl-lockov svg,html.vp-play-after .pl-lockov span{color:#C9BDFF;}
html.vp-play-after .pl-hallo-tag.prize,html.vp-play-after.vp-dark .pl-hallo-tag.prize{background:#FFC53D;color:#2B1100;}
/* v82: an empty podium place keeps its slot and shows nothing (no "Open spot") */
.pl-pod.vacant{visibility:hidden;}

/* v101: before play.js has drawn the wheel, boot.js has decided whether it
   shows (html.vp-wheel-on / -off, the same test play.js makes before the
   server answers), so the spin and the games hold their places from the first
   paint. The points box shows the signed-out card from the first paint
   (play.html; hidden, its room kept, while a session is loading), and the box
   and the spin keep the height they had last time here (boot.js vpRoomSave). */
html.vp-wheel-on #pl-wheel[hidden]{display:block!important;}
html.vp-wheel-off .pl-layout{grid-template-columns:minmax(0,1fr);}
html.vp-has-session #pl-me > .pl-out[data-pre]{visibility:hidden;}
#pl-me{min-height:var(--vp-room-pl-me,0px);}
#pl-wheel{min-height:var(--vp-room-pl-wheel,0px);}
/* the game cards: the points line keeps its line before play.js writes it
   (the play buttons start in the practice look play.js gives a signed-out
   visitor, play.html, so they keep their height too) */
.pl-val:empty::before{content:"\a0";}
/* the cards' state line and the spin's line keep one line each; the odds
   list keeps three rows of one line (the room it had last time here, once
   measured: it is taller where a label wraps) */
.pl-state:empty::before,.pl-spin-sub:empty::before{content:"\a0";}
#pl-odds{min-height:var(--vp-room-pl-odds,0px);}
#pl-odds:empty{min-height:var(--vp-room-pl-odds,calc(3 * (12px + 1.62 * .72rem) + 10px));}
