:root{color:#f7f4ec;font-synthesis:none;--cyan:#20d8f4;--coral:#ff6848;--yellow:#ffd21f;--panel:#080b10b8;--line:#ffffff2e;background:#080b10;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;width:100%;height:100%;margin:0;overflow:hidden}body{touch-action:none}#camerafeed{width:100%;height:100%;display:block;position:fixed;inset:0}.hud{z-index:2;pointer-events:none;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));position:fixed;inset:0}.status-card,.debug-card,.controls,.error-panel{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(14px);box-shadow:0 14px 50px #0000004d}.status-card{border-radius:14px;align-items:center;gap:12px;min-width:min(330px,100vw - 32px);padding:12px 15px;display:inline-flex}.status-card p{margin:0}.status-dot{background:var(--yellow);border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 5px #ffd21f21}.status-dot.is-loading{animation:1.2s ease-in-out infinite pulse}.status-dot.is-locked{background:#59e391;box-shadow:0 0 0 5px #59e39124}.status-dot.is-persistent{background:var(--cyan);box-shadow:0 0 0 5px #20d8f424}.status-dot.is-limited{background:var(--coral);box-shadow:0 0 0 5px #ff684824}.status-label{letter-spacing:.01em;font-size:13px;font-weight:750}.status-detail{color:#f7f4ecad;font-size:11px;line-height:1.35;margin-top:2px!important}.debug-card{top:max(88px, calc(env(safe-area-inset-top) + 72px));left:max(16px, env(safe-area-inset-left));border-radius:14px;width:min(260px,100vw - 32px);padding:10px 13px;transition:opacity .16s,transform .16s;position:absolute}.debug-card.is-hidden{opacity:0;transform:translateY(-8px)}.debug-card div{justify-content:space-between;align-items:baseline;gap:16px;padding:5px 0;font-size:11px;display:flex}.debug-card span{color:#f7f4ec8f}.debug-card strong{color:#fff;text-align:right;font-weight:680}.scan-guide{aspect-ratio:4/3;width:min(76vw,430px);transition:opacity .22s,transform .22s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scan-guide.is-hidden{opacity:0;transform:translate(-50%,-50%)scale(1.04)}.scan-guide p{color:#ffffffe0;text-align:center;text-shadow:0 2px 10px #000;width:max-content;max-width:90vw;margin:0;font-size:12px;font-weight:650;position:absolute;bottom:-37px;left:50%;transform:translate(-50%)}.reticle{position:absolute;inset:0}.reticle i{border-color:var(--cyan);filter:drop-shadow(0 2px 4px #00000080);border-style:solid;width:48px;height:48px;position:absolute}.reticle i:first-child{border-width:3px 0 0 3px;border-radius:14px 0 0;top:0;left:0}.reticle i:nth-child(2){border-width:3px 3px 0 0;border-radius:0 14px 0 0;top:0;right:0}.reticle i:nth-child(3){border-width:0 3px 3px 0;border-radius:0 0 14px;bottom:0;right:0}.reticle i:nth-child(4){border-width:0 0 3px 3px;border-radius:0 0 0 14px;bottom:0;left:0}.controls{pointer-events:auto;left:50%;bottom:max(18px, env(safe-area-inset-bottom));border-radius:15px;gap:6px;padding:6px;display:flex;position:absolute;transform:translate(-50%)}.control-button,.error-panel button{color:#f7f4ec;min-height:42px;font:inherit;white-space:nowrap;cursor:pointer;background:#ffffff1a;border:0;border-radius:10px;padding:0 14px;font-size:11px;font-weight:720;text-decoration:none}.control-button{justify-content:center;align-items:center;display:inline-flex}.control-button:active{background:#fff3;transform:translateY(1px)}.error-panel{z-index:5;border-radius:22px;width:min(430px,100vw - 32px);padding:28px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.error-panel .eyebrow{color:var(--coral);letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px;font-size:11px;font-weight:800}.error-panel h1{margin:0 0 10px;font-size:26px}.error-panel p:not(.eyebrow){color:#f7f4ecad;margin:0 0 20px;font-size:14px;line-height:1.5}.error-panel button{background:var(--cyan);color:#071015}@keyframes pulse{50%{opacity:.4;transform:scale(.75)}}@media (width<=480px){.icon-button{display:none}.controls{width:calc(100vw - 32px)}.controls .control-button{flex:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
