/* GAMIFICATION — live score chip + streak */
.hud-stack{position:absolute;top:3.4rem;right:2rem;display:flex;flex-direction:column;align-items:flex-end;gap:.4rem;z-index:40;pointer-events:none}
.score-chip{display:inline-flex;align-items:center;gap:.45rem;background:var(--parchment2);border:1px solid var(--strip);padding:.32rem .7rem;font-family:'Lora',serif;font-size:.85rem;color:var(--text1);transition:transform .28s cubic-bezier(.2,.7,.3,1),background .25s,border-color .25s;transform-origin:right center}
.score-chip .chip-lbl{font-family:'IBM Plex Mono',monospace;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text2);opacity:.7}
.score-chip .chip-val{font-weight:500;min-width:1.1rem;text-align:right;color:var(--text1)}
.score-chip.bump{transform:scale(1.15);background:var(--sage-light);border-color:var(--sage)}
.streak-row{display:flex;gap:5px;align-items:center;height:14px}
.streak-dot{width:7px;height:7px;border-radius:50%;background:var(--strip);transition:background .25s,transform .25s cubic-bezier(.2,.7,.3,1)}
.streak-dot.lit{background:var(--sage);transform:scale(1.2)}
.streak-mult{display:inline-block;margin-left:.45rem;padding:.05rem .42rem;font-family:'IBM Plex Mono',monospace;font-size:.6rem;letter-spacing:.1em;background:var(--terra-light);color:var(--terra);border:1px solid var(--terra);opacity:0;transform:translateX(4px);transition:opacity .3s,transform .3s cubic-bezier(.2,.7,.3,1)}
.streak-mult.show{opacity:1;transform:translateX(0)}

/* GAMIFICATION — ink-bloom feedback (radial wash inside the task viewport) */
.ink-bloom{position:absolute;left:50%;top:50%;width:60%;aspect-ratio:1;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.6);filter:blur(6px);z-index:30}
.ink-bloom.fire{animation:ink-bloom-anim .55s cubic-bezier(.2,.7,.3,1) forwards}
.ink-bloom.sage{background:radial-gradient(circle,rgba(122,148,114,.45) 0%,rgba(122,148,114,0) 70%)}
.ink-bloom.terra{background:radial-gradient(circle,rgba(181,117,90,.40) 0%,rgba(181,117,90,0) 70%)}
@keyframes ink-bloom-anim{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}35%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.5)}}

/* GAMIFICATION — dynamic timer bar */
.timer-fill{transition:width .1s linear,background .8s ease}
.timer-bar.bar-urgent{animation:bar-pulse 1s ease-in-out infinite}
@keyframes bar-pulse{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.7)}}

/* GAMIFICATION — reveal stagger */
.score-box{transition:opacity .35s ease,transform .35s cubic-bezier(.2,.7,.3,1)}
.score-box.enter{opacity:0;transform:translateY(8px)}
.score-box.enter.in{opacity:1;transform:translateY(0)}
.calibration-badge{transition:transform .35s cubic-bezier(.2,.7,.3,1),opacity .3s ease}
.calibration-badge.enter{opacity:0;transform:scale(.82)}
.calibration-badge.enter.in{opacity:1;transform:scale(1)}

/* PROFILE — stat count-ups + weakness fill */
.p-stat{transition:opacity .35s ease,transform .35s cubic-bezier(.2,.7,.3,1)}
.p-stat.enter{opacity:0;transform:translateY(6px)}
.p-stat.enter.in{opacity:1;transform:translateY(0)}
.weakness-fill{transition:width .7s cubic-bezier(.2,.7,.3,1)}
