:root{--bg:#121417;--surface:#1e2227;--surface-2:#282d33;--cell:#23272c;--cell-border:#3a4046;--cell-active-border:#8b97a3;--absent:#4a5057;--absent-letter:#2b3036;--green:#2ecc5e;--yellow:#ffbe40;--blue:#6cc4f5;--red:#ff5a5a;--key:#33383f;--key-absent:#22262a;--key-absent-letter:#5f666d;--text:#f2f4f6;--text-dim:#9aa3ab;--radius:12px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);overscroll-behavior:none;-webkit-user-select:none;user-select:none;font-family:Nunito,-apple-system,SF Pro Rounded,Segoe UI,Roboto,system-ui,sans-serif;font-size:16px}input,button{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}input{-webkit-user-select:text;user-select:text}.page{flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;padding:16px;display:flex}.btn{background:var(--key);width:100%;color:var(--text);letter-spacing:.06em;border-radius:16px;justify-content:center;align-items:center;gap:10px;padding:16px;font-size:18px;font-weight:800;transition:transform 60ms,filter .15s;display:flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--green);color:#08210f}.btn-blue{background:var(--blue);color:#06283c}.card{background:var(--surface);border-radius:20px;padding:20px}.pill{border-radius:999px;align-items:center;gap:6px;padding:8px 16px;font-weight:800;display:inline-flex}.text-dim{color:var(--text-dim)}.field{border:2px solid var(--cell-border);background:var(--cell);width:100%;color:var(--text);border-radius:14px;outline:none;padding:14px 16px;font-size:17px;font-weight:700}.field:focus{border-color:var(--blue)}.error-text{color:var(--red);font-size:14px;font-weight:700}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}
