body{margin:0;min-height:100vh;display:grid;place-items:center;background:#F4F3EF;font-family:Pretendard,'Noto Sans KR',system-ui,sans-serif;color:#1D2330;font-size:15px}
main{width:min(440px,100%);box-sizing:border-box;padding:24px 18px}
.card{background:#fff;border:1px solid #E7E3DC;border-radius:12px;padding:22px;display:grid;gap:12px;margin-bottom:14px}
h1{font-size:21px;margin:0 0 4px}h2{font-size:16px;margin:0}
p{margin:0;line-height:1.6;color:#4A5266;font-size:14px}
label{font-size:13px;color:#4A5266;display:grid;gap:6px}
input{font:inherit;font-size:16px;padding:10px 12px;border:1px solid #C9CCD3;border-radius:8px;box-sizing:border-box;width:100%}
input.code{letter-spacing:.3em;font-size:22px;text-align:center}
button{font:inherit;font-size:15px;padding:11px;border:0;border-radius:8px;background:#1F3A68;color:#fff;cursor:pointer}
button.line{background:#fff;color:#1F3A68;border:1px solid #D5DCE8}
button.warn{background:#8A3B12}
button:disabled{background:#B9C0CC;cursor:not-allowed}
.msg{font-size:14px;line-height:1.55;min-height:20px;color:#8A3B12}
.msg.ok{color:#2F6B3F}
.note{font-size:12.5px;color:#8C8F96}
.row{display:flex;gap:8px;flex-wrap:wrap}.row>*{flex:1 1 140px}
.qr{display:grid;place-items:center;padding:8px;background:#fff}
.qr img{width:220px;height:220px;image-rendering:pixelated}
.key{font-family:ui-monospace,Menlo,monospace;font-size:16px;letter-spacing:.08em;word-break:break-all;background:#F7F5F1;padding:10px;border-radius:8px}
.codes{font-family:ui-monospace,Menlo,monospace;font-size:17px;line-height:1.9;background:#F7F5F1;padding:10px 14px;border-radius:8px}
a{color:#1F3A68;font-size:14px}
[hidden]{display:none!important}
