*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#ffffff;color:#171226;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.card{width:100%;max-width:480px;border:1px solid #ece9f5;border-radius:20px;padding:36px 32px;box-shadow:0 12px 40px rgba(124,58,237,.08);text-align:center}.logo{font-size:26px;font-weight:800;letter-spacing:-.5px}.logo span{color:#7c3aed}.sub{color:#6b6480;font-size:14px;margin:6px 0 24px}.steps{display:flex;justify-content:center;gap:8px;margin-bottom:28px}.dot{width:32px;height:6px;border-radius:3px;background:#ece9f5}.dot.active{background:#7c3aed}h2{font-size:18px;margin:0 0 8px}.hint{font-size:13px;color:#6b6480;margin:0 0 16px;line-height:1.5}input[type=text]{width:100%;padding:14px 16px;font-size:17px;border:1.5px solid #d9d4ec;border-radius:12px;outline:none;text-align:center;letter-spacing:1px}input[type=text]:focus{border-color:#7c3aed}.btn{width:100%;margin-top:14px;padding:14px;font-size:16px;font-weight:700;color:#fff;background:#7c3aed;border:none;border-radius:12px;cursor:pointer;transition:background .15s}.btn:hover:not(:disabled){background:#6d28d9}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.secondary{background:#f1edfb;color:#7c3aed}.error{color:#dc2626;font-size:13px;margin-top:10px}.code-box{font-size:42px;font-weight:800;letter-spacing:6px;color:#7c3aed;background:#f6f3fd;border:1.5px dashed #c4b5f5;border-radius:14px;padding:20px 10px;margin:8px 0 18px;position:relative}.copy-btn{position:absolute;top:8px;right:8px;font-size:12px;font-weight:700;letter-spacing:.5px;color:#7c3aed;background:#fff;border:1px solid #c4b5f5;border-radius:8px;padding:6px 12px;cursor:pointer}.copy-btn:active{transform:scale(.96)}.mode-toggle{display:flex;gap:8px;margin:4px 0 18px}.mode-toggle button{flex:1 1;padding:11px 0;border-radius:12px;border:1.5px solid #e3dcf8;background:#faf9fe;color:#3d3752;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s ease}.mode-toggle button.active{background:#7c3aed;border-color:#7c3aed;color:#fff;box-shadow:0 4px 14px rgba(124,58,237,.35)}.qr-img{width:260px;height:260px;display:block;border:1.5px solid #e3dcf8;border-radius:16px;padding:10px;background:#fff}.qr-img,.qr-wrap{margin:8px auto 18px}.qr-wrap{position:relative;width:282px}.qr-wrap .qr-img{width:100%;height:auto;margin:0}.qr-overlay{position:absolute;inset:0;background:rgba(255,255,255,.85);border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.qr-overlay p{margin:0;font-size:14px;font-weight:700;color:#7c3aed}ol.howto{text-align:left;font-size:14px;color:#3d3752;line-height:1.9;padding-left:20px;margin:0 0 18px}.spinner{display:inline-block;width:18px;height:18px;border:3px solid #e3dcf8;border-top-color:#7c3aed;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-3px;margin-right:8px}@keyframes spin{to{transform:rotate(1turn)}}.waiting{font-size:14px;color:#6b6480;margin:4px 0 18px}textarea{width:100%;height:110px;padding:12px;font-size:12px;font-family:monospace;border:1.5px solid #d9d4ec;border-radius:12px;resize:none;outline:none;background:#faf9fe}.warn{background:#fef3ec;border:1px solid #f5d9bd;color:#9a5b1e;border-radius:10px;padding:10px 12px;margin:14px 0}.note,.warn{font-size:13px;line-height:1.5}.note{color:#6b6480;margin:0 0 6px}.footer{margin-top:26px;font-size:12px;color:#a49dc0}