:root{--bg:#121212;--surface:#1e1e1f;--surface-2:#2a2a2c;--cell:#2f2f2f;--cell-border:#565656;--cell-active-border:#fff6;--absent:#585858;--absent-letter:#fff9;--green:#4a9e50;--green-bright:#4caf50;--yellow:#dba726;--blue:#6cc4f5;--red:#ff5a5a;--key:#2f2f2f;--key-absent:#585858;--key-absent-letter:#ffffff8c;--text:#fff;--text-dim:#9a9a9c;--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;touch-action:manipulation;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{max-width:480px;min-height:100dvh;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex}.page-fixed{height:100dvh;min-height:0;overflow:hidden}.btn{background:var(--key);width:100%;color:var(--text);letter-spacing:.08em;border-radius:12px;justify-content:center;align-items:center;gap:10px;padding:16px;font-size:17px;font-weight:800;transition:transform 60ms,filter .15s,opacity .2s;display:flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.35;cursor:default}.btn-primary{color:#fff;background:linear-gradient(135deg,#3f8f48,#4caf50);box-shadow:0 4px 20px #4daa5759}.btn-blue{background:var(--blue);color:#06283c}.card{background:var(--surface);border:1px solid #ffffff14;border-radius:16px;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:12px;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(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
