*{box-sizing:border-box;margin:0}:root{color-scheme:light}body{font-family:system-ui,-apple-system,sans-serif;background:#f1f5f9;color:#0f172a;min-height:100vh}.app{max-width:26rem;margin:0 auto;padding:0 1rem 2rem}header{display:flex;justify-content:space-between;align-items:baseline;padding:.9rem .2rem;gap:.5rem}.brand{font-weight:700}.merchant{font-size:.8rem;color:#475569;text-align:right}.card{background:#fff;border-radius:1rem;padding:1.4rem;box-shadow:0 1px 4px #0f172a14;display:flex;flex-direction:column;gap:.9rem}h1{font-size:1.25rem;text-align:center}.hint{font-size:.85rem;color:#64748b;text-align:center}.error{color:#b91c1c;font-size:.9rem;text-align:center}.dim{color:#64748b;font-size:.85rem;text-align:center}.mono{font-family:ui-monospace,monospace;letter-spacing:.05em}input,button{font:inherit;padding:.75rem 1rem;border-radius:.6rem}input{border:1px solid #cbd5e1;width:100%}input.pin{font-size:1.8rem;text-align:center;letter-spacing:.6em}input.code-input{font-family:ui-monospace,monospace;font-size:1.15rem;text-align:center;text-transform:uppercase;letter-spacing:.1em}button{border:none;background:#0f172a;color:#fff;font-weight:600;cursor:pointer}button:disabled{opacity:.45}button.ghost{background:transparent;color:#0f172a}button.big{padding:1rem;font-size:1.05rem}.row{display:flex;gap:.6rem}.row button{flex:1}.video-wrap{position:relative;aspect-ratio:3 / 4;border-radius:.8rem;overflow:hidden;background:#0f172a}.video-wrap video{width:100%;height:100%;object-fit:cover}.camera-error,.camera-status{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#fff;padding:1rem;text-align:center;background:#0f172abf}.result{text-align:center}.result.valid{border-top:6px solid #16a34a}.result.invalid{border-top:6px solid #dc2626}.badge{width:4rem;height:4rem;border-radius:50%;margin:0 auto;display:grid;place-items:center;font-size:2rem;color:#fff}.badge.ok{background:#16a34a}.badge.bad{background:#dc2626}.reason{font-size:1.05rem}dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;text-align:left}dt{font-weight:600;color:#475569}dd{text-align:right}.recent{list-style:none;display:flex;flex-direction:column;gap:.8rem}.recent li{display:flex;flex-direction:column;gap:.15rem;border-bottom:1px solid #e2e8f0;padding-bottom:.6rem}
