*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;font-family:Tahoma,Arial,sans-serif;color:#102d4a;background:transparent}button,a{touch-action:manipulation}button{border:0;border-radius:12px;padding:13px 24px;background:#075bea;color:white;font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #ffb900;outline-offset:4px}[hidden]{display:none!important}.brand{position:fixed;z-index:10;top:calc(env(safe-area-inset-top) + 16px);left:18px;right:18px;display:flex;align-items:center;gap:10px;pointer-events:none;color:white;text-shadow:0 1px 5px #0008}.logo{display:grid;place-items:center;width:38px;height:38px;background:#075bea;border-radius:12px;font-size:24px;font-weight:bold;text-shadow:none}.brand strong{font-size:15px;letter-spacing:1px}.brand small{display:block;font-size:11px;margin-top:3px}.version{margin-left:auto;font-size:11px;background:#102d4acc;border:1px solid #ffffff50;padding:5px 9px;border-radius:20px}.panel{position:fixed;z-index:11;top:50%;left:50%;transform:translate(-50%,-50%);width:min(88vw,390px);padding:28px;background:#fffffff2;box-shadow:0 16px 60px #102d4a25;border:1px solid #fff;border-radius:22px;text-align:center}.eyebrow{color:#075bea;font-size:10px;letter-spacing:2px;font-weight:bold}h1{font-size:23px;line-height:1.45;margin:13px 0}p{font-size:14px;line-height:1.8;margin:0 0 20px}.card-link{display:block;font-size:13px;margin-top:18px;color:#245787;text-underline-offset:4px}.status{position:fixed;z-index:10;bottom:calc(env(safe-area-inset-bottom) + 22px);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;width:max-content;max-width:90vw;padding:12px 18px;background:#102d4aed;border:1px solid #ffffff30;border-radius:40px;color:white;font-size:13px;line-height:1.5;text-align:center;pointer-events:none}.status i{flex:none;width:8px;height:8px;border-radius:50%;background:#ffca55}.status[data-mode=found] i{background:#66e4b2}.status[data-mode=error] i{background:#ff7979}#diagnostics{position:fixed;z-index:20;top:80px;left:12px;right:12px;max-height:50vh;overflow:auto;padding:10px;border-radius:8px;background:#111e;color:#fff;font:11px monospace}pre{white-space:pre-wrap;overflow-wrap:anywhere}body:has(#panel:not([hidden])){background-color:#e9f2fa}.a-enter-vr,.a-enter-ar{display:none!important}
/* AR.js owns the camera and renderer dimensions. Do not force video/canvas to 100%, cover, inset:0, or CSS transforms. */

/* The app provides an accessible Thai camera error instead of the vendor popup. */
#error-popup{display:none!important}
