:root{font-family:Inter,ui-sans-serif,system-ui;color:#eaf1fb;background:#07111f}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh;background:radial-gradient(circle at top,#132844,#07111f 48%)}button,input{font:inherit}button,.button,label{cursor:pointer}main{min-height:100dvh;display:grid;place-items:center;padding:20px}.card,.phone{width:min(100%,500px);background:#0d1a2c;border:1px solid #263951;border-radius:24px;padding:24px;box-shadow:0 24px 80px #0008}.desktop{text-align:center}.mark{width:46px;height:46px;display:grid;place-items:center;border-radius:14px;background:#42e8b3;color:#07111f;font-size:30px;font-weight:900;margin:0 auto 14px}h1{font-size:22px;margin:0}.muted{color:#91a2b8;font-size:13px;line-height:1.6}.steps{display:grid;grid-template-columns:30px 1fr;text-align:left;gap:10px;margin:22px 0}.steps span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#1b3048;color:#42e8b3;font-weight:800}.steps p{margin:4px 0;color:#c6d1df;font-size:13px}.qr{width:210px;background:#fff;border-radius:16px;padding:9px;display:block;margin:10px auto 18px}.desktop label{font-size:11px;color:#8192a8;text-transform:uppercase}.code{display:flex;background:#07111f;border:1px solid #263951;border-radius:12px;margin-top:7px;padding:6px 6px 6px 12px;align-items:center;gap:8px}.code strong{font-size:11px;word-break:break-all;text-align:left;flex:1}.code button,.manual button{border:0;background:#233750;color:#fff;border-radius:9px;padding:9px}.button,.primary,.secondary{display:flex;justify-content:center;align-items:center;text-decoration:none;border:0;border-radius:13px;padding:14px;font-weight:800}.button,.primary{background:#42e8b3;color:#06120e;margin-top:14px}.status{margin-top:18px;color:#91a2b8;font-size:12px}.status i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#42e8b3;margin-right:5px}header{display:flex;gap:12px;align-items:center;margin-bottom:16px}header .mark{margin:0}header p{margin:3px 0}.camera{position:relative;background:#02060c;border-radius:18px;overflow:hidden;aspect-ratio:3/4}.camera video{width:100%;height:100%;object-fit:cover}.empty{position:absolute;inset:0;display:grid;place-items:center;color:#8192a8;font-size:13px}.frame{position:absolute;left:6%;right:6%;top:34%;height:32%;border:2px solid #42e8b3;border-radius:13px;box-shadow:0 0 0 999px #07111f55}.frame div{position:absolute;left:5%;right:5%;top:50%;height:1px;background:#42e8b3;box-shadow:0 0 12px #42e8b3}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.primary{margin:0}.secondary{background:#17283d;border:1px solid #2b4059}.result,.manual{margin-top:12px;border-radius:13px;background:#132238;padding:13px;font-size:13px}.manual{display:flex;gap:8px}.manual input{min-width:0;flex:1;background:#07111f;border:1px solid #2b4059;color:#fff;border-radius:9px;padding:10px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);opacity:0;background:#42e8b3;color:#06120e;border-radius:10px;padding:11px 16px;font-size:13px;font-weight:700;transition:.2s;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%)}.torch{position:absolute;z-index:3;right:12px;top:12px;border:1px solid #ffffff35;background:#07111fd9;color:#fff;border-radius:12px;padding:10px 12px;font-weight:700;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.torch.on{background:#ffd65a;color:#171007;border-color:#ffe69a}.torch[hidden]{display:none}.long-frame{left:2%;right:2%;top:38%;height:24%}.scan-tip{margin:9px 3px 0;color:#9fb0c4;font-size:11px;line-height:1.5;text-align:center}.scan-modes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.scan-modes button{border:1px solid #2b4059;background:#132238;color:#aebdd0;border-radius:10px;padding:10px 6px;font-size:12px;font-weight:700}.scan-modes button.active{background:#42e8b3;color:#06120e;border-color:#42e8b3}@media(orientation:landscape)and (max-height:600px){main{padding:8px}.phone{max-width:820px;padding:12px}header{margin-bottom:8px}.camera{aspect-ratio:16 / 8}.long-frame{top:32%;height:36%}}
