.logo{width:76px;height:76px}
h1{margin:0;font-family:var(--disp);font-size:clamp(32px,8.5vw,52px);line-height:.9}
.intro{color:var(--muted);font-size:14.5px;line-height:1.55;max-width:42ch}
.intro b{color:var(--ink)}
.card{width:100%;border:1px solid var(--line);border-radius:16px;background:var(--card);padding:18px 16px 20px;display:flex;flex-direction:column;gap:14px;text-align:left}
.k{font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}
.hash{font-family:var(--mono);font-size:13px;line-height:1.5;color:#9fe8d4;word-break:break-all;background:#0a1016;border:1px solid var(--line);border-radius:8px;padding:11px 12px}
.frag{display:flex;flex-wrap:wrap;gap:6px}
.cell{width:34px;height:44px;display:grid;place-items:center;border-radius:7px;font-family:var(--mono);font-size:20px}
.fix{background:#0e1822;border:1px solid var(--line);color:#c3ced8}
.inp{background:#0a1016;border:1px solid rgba(60,210,165,.5);color:var(--ac);text-align:center;caret-color:var(--ac);font-family:var(--mono);font-size:20px;outline:none;padding:0}
.inp:focus{border-color:var(--ac);box-shadow:0 0 0 3px rgba(60,210,165,.18)}
.inp.filled{color:var(--cy)}
.ctrl{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.crack{flex:1;min-height:50px;font-family:var(--disp);font-size:15px;letter-spacing:.04em;background:var(--ac);color:#06110d;border:0;border-radius:11px;cursor:pointer}
.crack:hover{filter:brightness(1.08)}
.crack:disabled{opacity:.55;cursor:default}
.hintbtn{background:none;border:0;color:var(--dim);font-family:var(--mono);font-size:12px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.msg{font-family:var(--mono);font-size:12.5px;min-height:16px}
.msg.bad{color:var(--bad)}
.msg.hint{color:var(--muted)}
.shake{animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}
.ok{display:none;width:100%;flex-direction:column;gap:16px;align-items:center}
.ok.show{display:flex}
.okbadge{font-family:var(--mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ac);border:1px solid rgba(60,210,165,.4);border-radius:999px;padding:7px 14px}
.reveal{font-family:var(--disp);font-size:clamp(30px,8vw,50px);line-height:.95}
.okmsg{font-size:16px;font-weight:600;color:var(--ink);max-width:28ch;line-height:1.4}
.okmsg span{color:var(--muted);font-weight:500;display:block;margin-top:4px;font-size:.88em}
.lead{width:100%;display:flex;flex-direction:column;gap:9px;margin-top:4px}
.lead .lbl{font-family:var(--mono);font-size:12px;color:var(--muted)}
.field{display:flex;gap:8px;flex-wrap:wrap}
.field input{flex:1;min-width:0;background:rgba(10,16,22,.9);border:1px solid var(--line);color:var(--ink);font-family:var(--ff);font-size:16px;padding:14px 15px;border-radius:11px}
.field input:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px rgba(60,210,165,.15)}
.field button{font-family:var(--disp);font-size:14px;background:var(--ac);color:#06110d;border:0;padding:0 20px;min-height:50px;border-radius:11px;cursor:pointer;white-space:nowrap}
.consent{font-size:11px;color:var(--dim);line-height:1.5}
.done{display:none;border:1px solid rgba(60,210,165,.4);background:rgba(60,210,165,.08);border-radius:12px;padding:16px;width:100%;color:var(--ac);font-weight:600}
.done.show{display:block}
