:root{color-scheme:dark;--bg:#04060c;--panel:rgba(12,18,34,.78);--edge:rgba(0,229,255,.18);--edge2:rgba(0,229,255,.4);--ink:#e6f1ff;--ink2:#9fb2cf;--muted:#5d6f8c;--cyan:#00e5ff;--violet:#8b5cff;--mag:#ff3d81;--good:#39ff88;--crit:#ff4d6d;
--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--sans:"Space Grotesk","IBM Plex Sans Thai",system-ui,sans-serif}
*{box-sizing:border-box}html,body{margin:0;height:100%}
body{font-family:var(--sans);color:var(--ink);background:radial-gradient(900px 600px at 80% -10%,rgba(139,92,255,.22),transparent 60%),radial-gradient(800px 500px at 0% 100%,rgba(0,229,255,.14),transparent 60%),var(--bg);display:grid;place-items:center;padding:24px;overflow:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(0,229,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,229,255,.05) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at center,#000 25%,transparent 75%);animation:drift 30s linear infinite}
@keyframes drift{to{background-position:44px 44px}}
body::after{content:"";position:fixed;left:0;right:0;top:-30%;height:30%;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(0,229,255,.05),transparent);animation:sweep 7s linear infinite}
@keyframes sweep{to{transform:translateY(430%)}}
.card{position:relative;z-index:1;width:min(440px,100%);padding:34px 32px 28px;background:var(--panel);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--edge);border-radius:18px;box-shadow:0 0 60px rgba(0,229,255,.08),0 30px 80px rgba(0,0,0,.55);text-align:center;animation:rise .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(14px) scale(.98)}}
.card::before,.card::after{content:"";position:absolute;width:18px;height:18px;border-color:var(--cyan)}
.card::before{top:-1px;left:-1px;border-top:2px solid;border-left:2px solid;border-radius:18px 0 0 0}
.card::after{bottom:-1px;right:-1px;border-bottom:2px solid;border-right:2px solid;border-radius:0 0 18px 0}
.kicker{font-family:var(--mono);font-size:10.5px;letter-spacing:.3em;color:var(--cyan);text-shadow:0 0 12px rgba(0,229,255,.5)}
h1{margin:10px 0 4px;font-size:24px;font-weight:600;letter-spacing:.02em}
h1 span{background:linear-gradient(90deg,var(--cyan),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{color:var(--ink2);font-size:13.5px;margin:0 0 22px}
.scanner{position:relative;width:132px;height:132px;margin:22px auto 24px}
.scanner svg{position:absolute;inset:0}
.scanner .r1{animation:spin 6s linear infinite}.scanner .r2{animation:spin 10s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
.scanner .fp{position:absolute;inset:34px;color:var(--cyan);filter:drop-shadow(0 0 8px rgba(0,229,255,.7))}
.scanner .beam{position:absolute;left:30px;right:30px;height:2px;top:30px;background:linear-gradient(90deg,transparent,var(--cyan),transparent);box-shadow:0 0 12px var(--cyan);animation:scan 2.2s ease-in-out infinite;opacity:.9}
@keyframes scan{50%{top:100px}}
.busy .scanner .fp{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
.ok .scanner .fp{color:var(--good);filter:drop-shadow(0 0 10px var(--good))}.ok .scanner .beam{display:none}
.err .scanner .fp{color:var(--crit);filter:drop-shadow(0 0 10px var(--crit))}
button.go{all:unset;box-sizing:border-box;width:100%;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 18px;border-radius:12px;font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.12em;color:#04121a;background:linear-gradient(90deg,var(--cyan),var(--violet));box-shadow:0 0 24px rgba(0,229,255,.35);transition:transform .15s,box-shadow .2s,filter .2s}
button.go:hover{transform:translateY(-1px);box-shadow:0 0 36px rgba(0,229,255,.55)}
button.go:focus-visible{outline:2px solid #fff;outline-offset:3px}
button.go[disabled]{filter:grayscale(.6) brightness(.7);cursor:wait}
.field{text-align:left;margin:0 0 14px}
.field label{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--muted);margin-bottom:6px}
.field .v{font-size:15px;padding:11px 14px;border:1px solid var(--edge);border-radius:10px;background:rgba(0,229,255,.04)}
.msg{min-height:22px;margin-top:16px;font-family:var(--mono);font-size:12px;color:var(--ink2)}
.msg.e{color:var(--crit)}.msg.s{color:var(--good)}
.foot{margin-top:18px;padding-top:14px;border-top:1px dashed rgba(148,170,210,.15);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--muted);line-height:1.7}
.foot b{color:var(--ink2);font-weight:500}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important}}
