.scratch{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s ease;padding:20px}
.scratch.is-open{opacity:1;pointer-events:auto}
.scratch__backdrop{position:absolute;inset:0;background:rgba(17,17,17,.72)}
.scratch__card{position:relative;background:var(--paper);color:var(--ink);width:100%;max-width:360px;padding:32px 28px 28px;text-align:center;transform:scale(.94);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.scratch.is-open .scratch__card{transform:scale(1)}
.scratch__close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid rgba(17,17,17,.15);background:var(--paper);cursor:pointer;font-family:var(--display);font-size:.95rem;line-height:1}
.scratch__close:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.scratch__eyebrow{display:block;color:var(--forest);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px}
.scratch__title{font-size:clamp(1.3rem,4vw,1.6rem);margin-bottom:20px;line-height:1.2}
.scratch__panel{position:relative;width:100%;height:180px;margin:0 auto 16px;overflow:hidden}
.scratch__reveal{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--ecru);border:1px solid rgba(17,17,17,.12)}
.scratch__percent{font-family:var(--display);font-size:2.6rem;font-weight:800;line-height:1}
.scratch__off{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--forest);margin-top:6px}
.scratch__canvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab;touch-action:none;transition:opacity .25s ease}
.scratch__canvas.is-cleared{opacity:0}
.scratch__hint{font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--forest);margin-bottom:6px}
.scratch__skip{display:inline-block;background:none;border:none;padding:0;font-family:var(--mono);font-size:.62rem;letter-spacing:.06em;text-decoration:underline;color:var(--forest);cursor:pointer;margin-bottom:4px}
.scratch__result{opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}
.scratch__result.is-in{opacity:1;transform:translateY(0)}
.scratch__sub{font-size:.82rem;line-height:1.5;color:var(--forest);margin:8px 0 18px}
