:root { font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif; color:#12253d; background:#eff5fc; }
* { box-sizing:border-box; }
body { min-height:100vh; margin:0; }
.shell { width:min(100% - 32px,680px); margin:0 auto; padding:42px 0; }
.card { padding:clamp(22px,5vw,36px); border:1px solid #d8e3ef; border-radius:18px; background:#fff; box-shadow:0 14px 40px rgba(40,76,118,.12); }
.eyebrow { margin:0 0 8px; color:#1769e0; font-size:13px; font-weight:700; letter-spacing:.08em; }
h1 { margin:0 0 12px; font-size:clamp(25px,5vw,33px); }
p { line-height:1.65; }
label { display:grid; gap:7px; margin:16px 0; font-weight:600; }
input { width:100%; padding:11px; border:1px solid #adc2db; border-radius:8px; }
button { min-height:44px; padding:10px 16px; color:#fff; font:inherit; font-weight:700; cursor:pointer; background:#1769e0; border:0; border-radius:8px; }
button:disabled { cursor:not-allowed; opacity:.6; }
.error { min-height:1.4em; color:#bf3028; }
.health { padding:12px; border-radius:9px; background:#edf4ff; }
.health.ok { color:#167540; background:#e9f8ef; }
.health.bad { color:#ba3028; background:#fff0ee; }
.endpoint,.entry-url { overflow-wrap:anywhere; color:#245b9f; }
.qrcode { display:grid; width:min(100%,250px); min-height:250px; place-items:center; padding:12px; margin:22px 0 12px; border:1px solid #d8e3ef; border-radius:12px; }
.qrcode img,.qrcode canvas { width:100% !important; height:auto !important; }
.expiry { color:#64788e; font-size:13px; }
