.completion[hidden]{display:none!important}.completion{position:fixed;inset:0;background:rgba(5,5,8,.82);display:grid;place-items:center;padding:20px;z-index:50}.completion-card{width:min(440px,100%);background:#191A23;border:1px solid #323542;border-radius:24px;padding:28px;text-align:center}.success-mark{display:grid;place-items:center;width:54px;height:54px;margin:0 auto 12px;border-radius:50%;background:#22C55E;color:#fff;font-size:28px}.completion-card h2{font-size:30px;margin:8px 0}.completion-eyebrow{display:block;margin:0 0 7px;color:rgba(255,255,255,.48);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.completion-copy{margin:10px auto 0;max-width:340px;color:rgba(255,255,255,.66);line-height:1.45;text-align:center}.completion-progress{width:fit-content;margin:16px auto 0;padding:7px 12px;border-radius:999px;background:rgba(169,143,255,.12);color:#c6b7ff;font-weight:800;font-variant-numeric:tabular-nums}.completion-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0}.completion-stats div{background:#101118;border-radius:14px;padding:14px}.completion-stats span{display:block;font-size:12px;color:#8D90A1}.completion-stats strong{font-size:20px}.completion-primary,.completion-secondary{width:100%;min-height:52px;border-radius:14px;font-weight:800}.completion-primary{display:grid;place-items:center;background:#6C40FF;color:#fff;text-decoration:none;border:0}.completion-secondary{display:flex;align-items:center;justify-content:center;margin-top:10px;border:1px solid #E9E9EE;background:transparent;color:#fff;cursor:pointer}.completion-card .record-badge{width:fit-content;margin:12px auto 0;padding:6px 10px;border-radius:999px;background:#22C55E;color:#08150C;font-size:10px;font-weight:900;text-transform:uppercase}.done.completion{left:0;right:0;top:0;bottom:0;width:auto;transform:none;border:0;border-radius:0;padding:20px;background:rgba(5,5,8,.82);box-shadow:none;text-align:initial}.done.completion .completion-card{display:block}.done.completion .next-puzzle{background:transparent;border:1px solid #E9E9EE}.done.completion>a{margin-top:0;color:#fff;font-size:inherit;text-decoration:none}.done.completion .done-title{font-size:30px}.done.completion .done-time{margin:0;color:inherit}.done.completion .done-stats{margin:22px 0}.done.completion .done-stats div{background:#101118;padding:14px;border-radius:14px}.done.completion .done-stats small{font-size:12px;color:#8D90A1}.done.completion .done-stats b{font-size:20px}.done .completion-copy{display:block}.done .completion-progress{display:block}@media(max-width:767px){.completion-card{padding:24px 18px}.completion-card h2,.done.completion .done-title{font-size:26px}.completion-copy{max-width:300px}.completion-progress{margin-top:14px}.completion-primary,.completion-secondary{min-height:50px}}
/* Engagement reward summary on all game completion dialogs */
.completion-reward-summary{display:flex;flex-direction:column;align-items:center;gap:5px;margin:12px 0 18px;padding:12px;border:1px solid #CDD9F1;background:#F0F5FF;border-radius:10px;color:#264FAD;text-align:center}
.completion-reward-summary strong{font-size:20px;line-height:1.2}
.completion-reward-summary span{font-size:12px;line-height:1.35}
.completion-reward-summary .completion-new-badge{font-weight:850;color:#7E550E}
.completion-reward-summary[hidden]{display:none}
.completion-rewards-link{display:block;text-align:center;margin-top:11px;padding:8px;color:#3156B3;font-weight:750;font-size:12px}


.completion{overflow-y:auto}.completion-card{max-height:calc(100dvh - 40px);overflow-y:auto}
.completion-share{width:100%;min-height:48px;margin-top:12px;padding:11px 16px;border:1px solid #b9c9ef;border-radius:12px;background:#edf3ff;color:#264fad;font:inherit;font-weight:800;cursor:pointer}
.completion-share:disabled{opacity:.6;cursor:wait}.completion-share[hidden]{display:none}
.completion-share-status{margin:7px 0 0;font-size:12px;line-height:1.45;color:inherit}.completion-share-status:empty{display:none}
.share-manual-fallback{margin:12px 0;text-align:left;min-width:0}.share-manual-fallback[hidden]{display:none}.share-manual-fallback label{display:block;margin-bottom:7px;font-size:12px;font-weight:700}
.share-manual-fallback textarea{display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;min-height:120px;padding:10px;border:1px solid #b9c9ef;border-radius:8px;background:#fff;color:#17264a;font:inherit;font-size:12px;line-height:1.5;resize:vertical;overflow-wrap:anywhere}

/* PUZLI victory v3 — a 2.4s cinematic celebration, never a blocking screen.
   Colour follows the current game, no external images, audio or libraries. */
.completion{
  --puzli-win-accent:#a78bfa;
  --puzli-win-accent-light:#e6d9ff;
  --puzli-win-ink:#1b1430;
  --puzli-win-text:#d8cafa;
  --puzli-win-tint:rgba(167,139,250,.11);
  isolation:isolate;
}
body.game-korony .completion{--puzli-win-accent:#edc477;--puzli-win-accent-light:#fff0bf;--puzli-win-ink:#301b30;--puzli-win-text:#ffe0a2;--puzli-win-tint:rgba(237,196,119,.14)}
body.game-duet .completion{--puzli-win-accent:#58d1cb;--puzli-win-accent-light:#d0fff5;--puzli-win-ink:#173b3c;--puzli-win-text:#9ff4e8;--puzli-win-tint:rgba(29,157,154,.13)}
body.game-bloki .completion{--puzli-win-accent:#c8acff;--puzli-win-accent-light:#f0e7ff;--puzli-win-ink:#25163d;--puzli-win-text:#dac7ff;--puzli-win-tint:rgba(196,166,255,.15)}
body.game-latarnie .completion{--puzli-win-accent:#f3c779;--puzli-win-accent-light:#fff3c4;--puzli-win-ink:#342414;--puzli-win-text:#ffe2a8;--puzli-win-tint:rgba(243,199,121,.15)}
body.game-zip .completion{--puzli-win-accent:#93b8ff;--puzli-win-accent-light:#dce9ff;--puzli-win-ink:#1a2851;--puzli-win-text:#c4d8ff;--puzli-win-tint:rgba(147,184,255,.16)}
body.game-sudoku .completion{--puzli-win-accent:#99e2b6;--puzli-win-accent-light:#e1ffe7;--puzli-win-ink:#1a3628;--puzli-win-text:#b4f1cf;--puzli-win-tint:rgba(153,226,182,.13)}

.completion .completion-card{position:relative;z-index:1;isolation:isolate}
.completion.is-celebrating::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle 300px at var(--puzli-win-x,50%) var(--puzli-win-y,35%),
    color-mix(in srgb,var(--puzli-win-accent) 40%,transparent),transparent 80%);
  animation:puzli-win-backdrop 1.75s ease-out both;
}
.completion.is-celebrating .completion-card{
  animation:puzli-win-card .86s cubic-bezier(.16,1,.28,1) both;
}
.completion.is-celebrating .completion-card::before{
  content:"";position:absolute;inset:-1px;z-index:3;pointer-events:none;
  border-radius:inherit;opacity:0;
  background:linear-gradient(112deg,transparent 26%,rgba(255,255,255,.16) 47%,transparent 65%);
  transform:translateX(-100%);animation:puzli-win-sweep 1.25s ease-in-out .48s both;
}
.completion .success-mark{
  position:relative;isolation:isolate;width:76px;height:76px;
  margin:4px auto 18px;border-radius:23px;
  background:linear-gradient(135deg,var(--puzli-win-accent-light),var(--puzli-win-accent));
  color:var(--puzli-win-ink);font-size:39px;font-weight:950;
  border:1px solid rgba(255,255,255,.42);
  box-shadow:0 0 0 7px var(--puzli-win-tint),0 10px 32px rgba(0,0,0,.25);
}
.completion .success-mark::before{
  content:"";position:absolute;inset:-13px;z-index:-1;border:2px solid var(--puzli-win-accent);
  border-radius:31px;opacity:.35;pointer-events:none;
}
.completion .success-mark::after{
  content:"";position:absolute;inset:2px;border-radius:20px;
  border-top:2px solid rgba(255,255,255,.65);pointer-events:none;
}
.completion.is-celebrating .success-mark{
  animation:puzli-win-mark .94s cubic-bezier(.16,1.6,.27,1) .1s both;
}
.completion.is-celebrating .success-mark::before{
  animation:puzli-win-mark-border 1.3s ease-out .13s both;
}
.completion.is-celebrating .completion-card h2{
  animation:puzli-win-headline .88s cubic-bezier(.17,1,.27,1) .23s both;
}
.completion.is-celebrating .completion-stats{
  animation:puzli-win-reveal .72s cubic-bezier(.2,1,.28,1) .45s both;
}
.completion.is-celebrating .completion-reward-summary{
  animation:puzli-win-points .85s cubic-bezier(.14,1.4,.29,1) .58s both;
}
.completion.is-celebrating .completion-reward-summary strong{
  animation:puzli-win-number .9s cubic-bezier(.2,1.5,.26,1) .65s both;
}
@keyframes puzli-win-backdrop{
  0%{opacity:0;transform:scale(.55)}
  13%{opacity:1}
  55%{opacity:.7}
  100%{opacity:0;transform:scale(1.45)}
}
@keyframes puzli-win-card{
  0%{opacity:.45;transform:translateY(36px) scale(.90)}
  47%{opacity:1;transform:translateY(-5px) scale(1.025)}
  75%{transform:translateY(2px) scale(.997)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes puzli-win-mark{
  0%{opacity:0;transform:scale(.25) rotate(-32deg)}
  38%{opacity:1;transform:scale(1.27) rotate(9deg)}
  68%{transform:scale(.94) rotate(-3deg)}
  100%{opacity:1;transform:scale(1) rotate(0)}
}
@keyframes puzli-win-mark-border{
  0%{opacity:1;transform:scale(.45)}
  100%{opacity:0;transform:scale(1.85)}
}
@keyframes puzli-win-headline{
  0%{opacity:0;transform:translateY(18px) scale(.94)}
  70%{opacity:1;transform:translateY(-2px) scale(1.015)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes puzli-win-reveal{
  0%{opacity:0;transform:translateY(16px)}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes puzli-win-points{
  0%{opacity:0;transform:translateY(17px) scale(.91)}
  65%{opacity:1;transform:translateY(-3px) scale(1.025)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes puzli-win-number{
  0%{transform:scale(.75)}
  65%{transform:scale(1.13)}
  100%{transform:scale(1)}
}
@keyframes puzli-win-sweep{
  0%,6%{opacity:0;transform:translateX(-100%)}
  24%{opacity:1}
  78%,100%{opacity:0;transform:translateX(100%)}
}
/* Entire celebration layer is outside the scrolling result card, so
   particles remain visible on small phones instead of being clipped. */
.puzli-victory-sky{
  position:absolute;width:0;height:0;z-index:4;pointer-events:none;
  overflow:visible;isolation:isolate;
}
.puzli-victory-wave{
  position:absolute;left:0;top:0;width:100px;height:100px;
  border:3px solid var(--puzli-win-accent-light);border-radius:50%;
  box-shadow:0 0 24px var(--puzli-win-accent),inset 0 0 20px var(--puzli-win-accent);
  transform:translate(-50%,-50%) scale(.15);opacity:0;
}
.completion.is-celebrating .wave-1{animation:puzli-win-wave 1.14s cubic-bezier(.2,.7,.2,1) .11s both}
.completion.is-celebrating .wave-2{animation:puzli-win-wave 1.27s cubic-bezier(.2,.7,.2,1) .32s both}
@keyframes puzli-win-wave{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.15)}
  18%{opacity:.95}
  100%{opacity:0;transform:translate(-50%,-50%) scale(4.5)}
}
.puzli-victory-rays{
  position:absolute;left:-165px;top:-165px;width:330px;height:330px;
  border-radius:50%;opacity:0;
  background:repeating-conic-gradient(from -4deg,
    transparent 0deg 13deg,color-mix(in srgb,var(--puzli-win-accent) 60%,transparent) 14deg 16deg,
    transparent 17deg 30deg);
  -webkit-mask-image:radial-gradient(circle,transparent 0 17%,#000 36%,transparent 75%);
  mask-image:radial-gradient(circle,transparent 0 17%,#000 36%,transparent 75%);
  animation:puzli-win-rays 1.6s ease-out .11s both;
}
@keyframes puzli-win-rays{
  0%{opacity:0;transform:scale(.25) rotate(-22deg)}
  23%{opacity:.83}
  100%{opacity:0;transform:scale(1.47) rotate(14deg)}
}
.puzli-victory-spark{
  position:absolute;left:0;top:0;display:block;width:7px;height:7px;
  background:var(--puzli-win-accent-light);border-radius:50%;
  box-shadow:0 0 7px 2px var(--puzli-win-accent);
  opacity:0;transform:translate(-50%,-50%) scale(.2);
  animation:puzli-win-spark 1.45s cubic-bezier(.18,.65,.23,1) var(--spark-delay) both;
}
.puzli-victory-spark:nth-child(3n){background:var(--puzli-win-accent);width:5px;height:5px}
.puzli-victory-spark.streak{
  width:4px;height:19px;border-radius:3px;
  background:linear-gradient(180deg,var(--puzli-win-accent-light),var(--puzli-win-accent),transparent);
}
.puzli-victory-spark.star{width:9px;height:9px;border-radius:2px;transform:rotate(45deg)}
@keyframes puzli-win-spark{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.1) rotate(0)}
  18%{opacity:1}
  53%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--spark-x)),calc(-50% + var(--spark-y))) scale(.35) rotate(var(--spark-spin))}
}

/* An earned badge is a persistent premium object, not a vanishing toast. */
.puzli-badge-unlock{
  position:relative;overflow:hidden;display:flex;align-items:center;gap:13px;text-align:left;
  margin:16px 0 0;padding:14px;
  border-radius:18px;border:1px solid var(--puzli-win-accent);
  background:linear-gradient(115deg,var(--puzli-win-tint),rgba(255,255,255,.03));
  color:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
}
.puzli-badge-unlock[hidden]{display:none!important}
.puzli-badge-unlock::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 17%,rgba(255,255,255,.37) 47%,transparent 70%);
  opacity:0;transform:translateX(-120%);
}
.puzli-badge-unlock-icon{
  display:grid;place-items:center;flex:0 0 54px;width:54px;height:54px;
  border-radius:16px;background:linear-gradient(150deg,var(--puzli-win-accent-light),var(--puzli-win-accent));
  border:1px solid rgba(255,255,255,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 7px 19px rgba(0,0,0,.20);
  font-size:28px;color:var(--puzli-win-ink);
}
.puzli-badge-unlock-copy{display:flex;flex-direction:column;gap:3px;min-width:0}
.puzli-badge-unlock-copy small{
  font-size:10px;font-weight:900;letter-spacing:.13em;text-transform:uppercase;
  color:var(--puzli-win-text);
}
.puzli-badge-unlock-copy strong{font-size:17px;line-height:1.23;overflow-wrap:anywhere}
.completion.is-celebrating .puzli-badge-unlock{
  animation:puzli-win-badge .95s cubic-bezier(.15,1.34,.3,1) .7s both;
}
.completion.is-celebrating .puzli-badge-unlock-icon{
  animation:puzli-win-medal .9s cubic-bezier(.2,1.4,.28,1) .83s both;
}
.completion.is-celebrating .puzli-badge-unlock::after{
  animation:puzli-win-badge-sheen 1.5s ease-in-out 1.07s both;
}
@keyframes puzli-win-badge{
  0%{opacity:0;transform:translateY(22px) scale(.82)}
  63%{opacity:1;transform:translateY(-4px) scale(1.045)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes puzli-win-medal{
  0%{transform:rotate(-24deg) scale(.35)}
  60%{transform:rotate(7deg) scale(1.19)}
  100%{transform:rotate(0) scale(1)}
}
@keyframes puzli-win-badge-sheen{
  0%{opacity:0;transform:translateX(-120%)}
  30%{opacity:.8}
  100%{opacity:0;transform:translateX(120%)}
}
.completion .completion-reward-summary{
  background:var(--puzli-win-tint);
  border:1px solid color-mix(in srgb,var(--puzli-win-accent) 42%,transparent);
  color:inherit;border-radius:14px;
}
.completion .completion-reward-summary strong{color:var(--puzli-win-text);font-size:23px}
.completion .completion-rewards-link{color:var(--puzli-win-text)}
@media(max-width:420px){
  .completion .success-mark{width:69px;height:69px;font-size:35px;margin-bottom:14px}
  .puzli-badge-unlock{padding:11px 12px;gap:11px}
  .puzli-badge-unlock-icon{flex-basis:47px;width:47px;height:47px}
}
@media(prefers-reduced-motion:reduce){
  .completion .success-mark,.completion .success-mark::before,.completion .completion-card,
  .completion .completion-card::before,.completion .completion-card h2,
  .completion .completion-stats,.completion .completion-reward-summary,
  .completion .completion-reward-summary strong,.puzli-badge-unlock,.puzli-badge-unlock *,
  .puzli-badge-unlock::after{animation:none!important;transition:none!important}
  .puzli-victory-sky,.completion.is-celebrating::before{display:none!important}
}

/* Completion screen consistency: earlier game skin rules painted custom glyphs
   on top of the real checkmark and hid it with font-size:0. The preview had
   no skins, so only live game screens exposed the bug. */
body[class*="game-"] .completion .success-mark{
  font-size:39px;
  color:var(--puzli-win-ink);
  background:linear-gradient(135deg,var(--puzli-win-accent-light),var(--puzli-win-accent));
  box-shadow:0 0 0 7px var(--puzli-win-tint),0 10px 32px rgba(0,0,0,.25);
}
body[class*="game-"] .completion .success-mark::before{
  content:"";
  font-size:0;
  letter-spacing:normal;
  line-height:normal;
  text-shadow:none;
  color:transparent;
}
body[class*="game-"] .completion .success-mark::after{content:""}

/* Hidden must beat explicit display:block from older .done styles. */
.completion .completion-progress[hidden],
.completion .completion-rewards-link[hidden],
.completion .completion-reward-summary[hidden],
.completion .completion-share[hidden]{
  display:none!important;
}

/* Older per-game button styles washed out the share action.
   Use a themed, legible secondary button everywhere. */
body .completion .completion-card .completion-share{
  color:var(--puzli-win-accent-light);
  background:var(--puzli-win-tint);
  border-color:color-mix(in srgb,var(--puzli-win-accent) 60%,transparent);
  min-height:50px;
}
body .completion .completion-card .completion-share:focus-visible{
  outline:2px solid var(--puzli-win-accent-light);
  outline-offset:3px;
}
@media(max-width:420px){
  body[class*="game-"] .completion .success-mark{font-size:35px}
}


/* PUZLI result card v4 — compact three-lane score breakdown, shared by
   Daily completion and victory-preview. Uses the current game's accent. */
.completion .completion-reward-summary{
  display:block;
  box-sizing:border-box;
  width:100%;
  padding:14px 15px 13px;
  margin:10px 0 16px;
  text-align:left;
  overflow:hidden;
  border-radius:17px;
  background:linear-gradient(120deg,var(--puzli-win-tint),rgba(255,255,255,.028));
}
.completion .score-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:13px;
}
.completion .score-headline{display:flex;flex-direction:column;gap:3px;min-width:0}
.completion .score-kicker{
  display:block;
  font-size:10px;
  line-height:1.3;
  letter-spacing:.12em;
  font-weight:850;
  color:var(--puzli-win-accent-light);
  opacity:.85;
}
.completion .completion-reward-summary .score-total{
  display:block;
  color:var(--puzli-win-accent-light);
  font-size:clamp(27px,6.5vw,35px);
  line-height:1.05;
  font-weight:900;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.04em;
}
.completion .score-maximum{
  color:inherit;
  font-size:12px;
  font-weight:750;
  letter-spacing:0;
  opacity:.7;
  white-space:nowrap;
}
.completion .score-peak{
  padding:6px 9px;
  border:1px solid color-mix(in srgb,var(--puzli-win-accent) 45%,transparent);
  border-radius:20px;
  background:var(--puzli-win-tint);
  font-size:10px;
  font-weight:750;
  line-height:1.25;
  color:var(--puzli-win-accent-light);
  text-align:right;
  white-space:nowrap;
}
.completion .score-rows{display:grid;gap:10px}
.completion .score-row{min-width:0}
.completion .score-row-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:5px;
}
.completion .score-row-label{
  font-size:12px;
  line-height:1.1;
  font-weight:680;
  color:inherit;
  opacity:.92;
}
.completion .completion-reward-summary .score-row-value{
  color:var(--puzli-win-accent-light);
  font-size:12px;
  line-height:1.1;
  font-weight:850;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.completion .score-track{
  position:relative;
  height:7px;
  width:100%;
  overflow:hidden;
  border-radius:99px;
  background:color-mix(in srgb,var(--puzli-win-accent) 13%,rgba(10,13,25,.62));
}
.completion .score-fill{
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,
    color-mix(in srgb,var(--puzli-win-accent) 60%,#fff),
    var(--puzli-win-accent-light));
  box-shadow:0 0 12px color-mix(in srgb,var(--puzli-win-accent) 45%,transparent);
}
.completion .score-base .score-fill{opacity:.72}
.completion .score-speed .score-fill{opacity:1}
.completion .score-clean .score-fill{opacity:.88}
.completion .score-note{
  display:block;
  margin-top:10px;
  color:inherit;
  opacity:.7;
  font-size:11px;
  line-height:1.35;
}
.completion .score-set-bonus{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
  margin-top:12px;
  padding-top:11px;
  border-top:1px solid color-mix(in srgb,var(--puzli-win-accent) 25%,transparent);
  color:var(--puzli-win-accent-light);
  font-size:12px;
  font-weight:780;
}
.completion .completion-reward-summary .score-set-bonus strong{
  color:var(--puzli-win-accent-light);
  font-size:14px;
  white-space:nowrap;
}
.completion.is-celebrating .score-fill{
  transform-origin:left center;
  animation:puzli-score-fill .8s cubic-bezier(.16,1,.3,1) .82s both;
}
.completion.is-celebrating .score-row:nth-child(2) .score-fill{animation-delay:.93s}
.completion.is-celebrating .score-row:nth-child(3) .score-fill{animation-delay:1.04s}
@keyframes puzli-score-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:420px){
  .completion .completion-reward-summary{padding:11px 13px;margin:8px 0 13px}
  .completion .score-header{margin-bottom:9px}
  .completion .score-rows{gap:8px}
  .completion .score-row-head{margin-bottom:4px}
}
@media(prefers-reduced-motion:reduce){
  .completion.is-celebrating .score-fill{animation:none!important;transform:none!important}
}


/* Victory score accessibility (v5): light Duet/Sudoku cards need dark scoring ink. */
body.game-duet .completion{
  --puzli-score-ink:#174e53;
  --puzli-score-panel:#e7f4ee;
  --puzli-score-border:#a2cfc2;
  --puzli-score-track:#c4ded4;
  --puzli-score-fill:#127f7b;
  --puzli-score-share:#dcf0e9;
}
body.game-sudoku .completion{
  --puzli-score-ink:#244d39;
  --puzli-score-panel:#eaf3e9;
  --puzli-score-border:#b7d1bb;
  --puzli-score-track:#cbdcca;
  --puzli-score-fill:#317854;
  --puzli-score-share:#dfecdf;
}
:is(body.game-duet,body.game-sudoku) .completion .completion-reward-summary{
  background:var(--puzli-score-panel);
  border-color:var(--puzli-score-border);
  color:var(--puzli-score-ink);
}
:is(body.game-duet,body.game-sudoku) .completion .score-kicker,
:is(body.game-duet,body.game-sudoku) .completion .completion-reward-summary .score-total,
:is(body.game-duet,body.game-sudoku) .completion .completion-reward-summary .score-row-value,
:is(body.game-duet,body.game-sudoku) .completion .score-peak,
:is(body.game-duet,body.game-sudoku) .completion .score-set-bonus,
:is(body.game-duet,body.game-sudoku) .completion .completion-reward-summary .score-set-bonus strong{
  color:var(--puzli-score-ink);
}
:is(body.game-duet,body.game-sudoku) .completion .score-kicker{opacity:1}
:is(body.game-duet,body.game-sudoku) .completion .score-peak{
  background:var(--puzli-score-share);
  border-color:var(--puzli-score-border);
}
:is(body.game-duet,body.game-sudoku) .completion .score-track{
  background:var(--puzli-score-track);
}
:is(body.game-duet,body.game-sudoku) .completion .score-fill{
  background:var(--puzli-score-fill);
  box-shadow:none;
}
:is(body.game-duet,body.game-sudoku) .completion .score-base .score-fill,
:is(body.game-duet,body.game-sudoku) .completion .score-clean .score-fill{opacity:1}
:is(body.game-duet,body.game-sudoku) .completion .score-set-bonus{
  border-top-color:var(--puzli-score-border);
}
:is(body.game-duet,body.game-sudoku) .completion .completion-rewards-link{
  color:var(--puzli-score-ink);
  text-decoration:underline;
  text-underline-offset:2px;
}
:is(body.game-duet,body.game-sudoku) .completion .completion-card .completion-share{
  color:var(--puzli-score-ink);
  background:var(--puzli-score-share);
  border-color:var(--puzli-score-border);
}
:is(body.game-duet,body.game-sudoku) .completion .completion-card .completion-share:focus-visible{
  outline-color:var(--puzli-score-ink);
}
:is(body.game-duet,body.game-sudoku) .completion .puzli-badge-unlock-copy small{
  color:var(--puzli-score-ink);
}
