/* PRFKT puzzle captcha (static/captcha.js). One source, copied to site/ and hq/ by tools/sync_captcha.py.
   Tokens follow the page: light paper by default; dark when the page prefers dark, sets data-theme="dark",
   or the widget itself carries data-theme="dark" (the app). Fonts are inherited from the host. */
.cp{--cp-bg:#f6f5f0;--cp-ink:#17191b;--cp-muted:#5f645e;--cp-line:#17191b;--cp-hair:rgba(23,25,27,.16);--cp-lime:#b6d82f;--cp-lime-ink:#1a2200;
  --cp-track:#e9e7df;--cp-ok:#3f6f12;--cp-bad:#b3261e;--cp-veil:rgba(246,245,240,.82);
  box-sizing:border-box;width:100%;max-width:320px;margin:14px 0;padding:12px 12px 10px;border:1px solid var(--cp-line);border-radius:10px;
  background:var(--cp-bg);color:var(--cp-ink);box-shadow:2px 2px 0 var(--cp-hair);font:inherit;line-height:1.4;text-align:left}
.cp[data-theme="dark"],:root[data-theme="dark"] .cp:not([data-theme="light"]){
  --cp-bg:#161a17;--cp-ink:#ecebe4;--cp-muted:#9aa197;--cp-line:#4a554c;--cp-hair:rgba(236,235,228,.14);--cp-lime:#d7f269;--cp-lime-ink:#141a00;
  --cp-track:#0e1110;--cp-ok:#c9ea6a;--cp-bad:#f2b8b5;--cp-veil:rgba(22,26,23,.82)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .cp:not([data-theme="light"]){
  --cp-bg:#161a17;--cp-ink:#ecebe4;--cp-muted:#9aa197;--cp-line:#4a554c;--cp-hair:rgba(236,235,228,.14);--cp-lime:#d7f269;--cp-lime-ink:#141a00;
  --cp-track:#0e1110;--cp-ok:#c9ea6a;--cp-bad:#f2b8b5;--cp-veil:rgba(22,26,23,.82)}}
.cp *{box-sizing:border-box}
.cp[hidden]{display:none}
.cp p{margin:0}
.cp .cp-title{font-weight:700;font-size:14px;margin:0 0 8px}
.cp .cp-stage{position:relative;width:100%;aspect-ratio:2 / 1;overflow:hidden;border-radius:7px;border:1px solid var(--cp-hair);background:var(--cp-track);user-select:none;-webkit-user-select:none}
.cp .cp-bg{position:absolute;inset:0;width:100%;height:100%;display:block}
.cp .cp-piece{position:absolute;top:0;left:0;height:100%;width:20%;display:block;filter:drop-shadow(1px 2px 2px rgba(0,0,0,.45));transition:left .14s ease}
.cp.dragging .cp-piece{transition:none}
.cp .cp-veil{position:absolute;inset:0;display:grid;place-items:center;padding:12px;text-align:center;font-size:13.5px;color:var(--cp-ink);background:var(--cp-veil)}
.cp .cp-veil[hidden]{display:none}
.cp .cp-track{position:relative;height:46px;margin-top:10px;border-radius:23px;border:1px solid var(--cp-hair);background:var(--cp-track);touch-action:none;user-select:none;-webkit-user-select:none}
.cp .cp-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:23px;background:var(--cp-lime);opacity:.35;pointer-events:none}
.cp .cp-hint{position:absolute;inset:0;display:grid;place-items:center;font-size:13px;color:var(--cp-muted);pointer-events:none;transition:opacity .15s;padding-left:34px}
.cp .cp-knob{position:absolute;top:-1px;left:0;width:46px;height:46px;margin:0;padding:0;border-radius:50%;border:1px solid var(--cp-line);background:var(--cp-lime);color:var(--cp-lime-ink);
  display:grid;place-items:center;cursor:grab;touch-action:none;box-shadow:1px 1px 0 var(--cp-line);transition:left .14s ease;font:inherit}
.cp.dragging .cp-knob{cursor:grabbing;transition:none;transform:scale(1.04)}
.cp .cp-knob:focus-visible{outline:3px solid var(--cp-lime);outline-offset:2px}
.cp .cp-knob:disabled{cursor:default;opacity:.85}
.cp.ok .cp-knob{background:var(--cp-ok);color:#fff}
.cp.ok .cp-fill{background:var(--cp-ok);opacity:.3}
.cp.ok .cp-hint{opacity:0}
.cp .cp-status{min-height:1.3em;margin:8px 0 0;font-size:13.5px;color:var(--cp-ok);font-weight:600}
.cp .cp-status:empty{margin:0;min-height:0}
.cp .cp-status.bad{color:var(--cp-bad)}
.cp .cp-note{margin:8px 0 0;font-size:13px;color:var(--cp-muted)}
.cp .cp-foot{margin:8px 0 0;font-size:12.5px;color:var(--cp-muted);display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.cp .cp-foot[hidden]{display:none}
.cp .cp-link{background:none;border:0;padding:0;margin:0;color:var(--cp-ink);text-decoration:underline;text-underline-offset:2px;cursor:pointer;font:inherit;font-size:12.5px;box-shadow:none;width:auto}
.cp .cp-link:focus-visible{outline:2px solid var(--cp-lime);outline-offset:2px}
.cp .cp-email{margin-top:10px;padding-top:10px;border-top:1px solid var(--cp-hair)}
.cp .cp-email[hidden]{display:none}
.cp .cp-row{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.cp .cp-row[hidden]{display:none}
.cp .cp-in{flex:1 1 140px;min-width:0;margin:0;padding:9px 10px;border:1px solid var(--cp-line);border-radius:7px;background:var(--cp-bg);color:var(--cp-ink);font:inherit;font-size:15px;width:auto}
.cp .cp-code{letter-spacing:.12em}
.cp .cp-btn{flex:0 0 auto;margin:0;padding:9px 12px;border:1px solid var(--cp-line);border-radius:7px;background:var(--cp-lime);color:var(--cp-lime-ink);font:inherit;font-weight:700;font-size:14px;cursor:pointer;box-shadow:1px 1px 0 var(--cp-line);width:auto}
.cp .cp-btn:disabled{opacity:.6;cursor:default}
.cp .cp-email .cp-link{margin-top:8px}
.cp.bad .cp-stage{animation:cp-shake .4s ease}
@keyframes cp-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
@media (prefers-reduced-motion:reduce){.cp,.cp *{animation:none!important;transition:none!important}}
