.qr-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex;position:relative}.back-link{color:var(--ink-soft);font-size:14px;text-decoration:none;position:absolute;top:20px;left:20px}.back-link:hover{color:var(--ink)}.passcode-gate,.qr-reveal{width:100%;max-width:340px}.qr-icon{width:48px;height:48px;color:var(--coral);margin-bottom:12px;display:inline-block}.qr-icon svg{width:100%;height:100%}.qr-title{letter-spacing:-.3px;color:var(--ink);margin:0 0 8px;font-size:26px}.qr-sub{color:var(--ink-soft);margin:0 0 24px}.passcode-form{background:var(--cream-2);border-radius:var(--radius);box-shadow:var(--shadow-soft);text-align:left;flex-direction:column;gap:16px;padding:24px;display:flex}.passcode-form .btn{align-self:center}#passcode-input{text-align:center;letter-spacing:4px;font-size:18px}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}.shake{animation:.5s shake}.qr-image{width:240px;max-width:100%;box-shadow:var(--shadow-soft);background:#fff;border-radius:16px;padding:16px}.qr-note{color:var(--ink-soft);margin-top:16px;font-size:14px}
