:root{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;color:#262626;background:#f7f7f7;font-synthesis:none;--red: #ff3026;--muted: #777}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.55}[hidden]{display:none!important}button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #eaa74f;outline-offset:4px}.app-shell{min-height:100vh;min-height:100dvh;position:relative;padding-top:calc(56px + env(safe-area-inset-top))}.app-header{position:absolute;inset:0 0 auto;height:calc(56px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);display:flex;align-items:center;justify-content:center;background:#fff;z-index:3}.page-title{font-size:20px;font-weight:600}.back-button{position:absolute;left:8px;bottom:4px;width:48px;height:48px;border:0;background:transparent;color:inherit;display:grid;place-items:center}.back-button svg{width:24px;height:24px;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;fill:none}.button{border:0;min-height:44px;border-radius:50px;padding:12px 22px;font-size:17px;font-weight:600}.button-primary{background:var(--red);color:#fff}.button-primary:hover:not(:disabled){background:#ee291f}.text-button{background:transparent;border:0;min-height:44px;padding:10px 12px;color:var(--red);font-size:15px}.scanner-screen{position:fixed;inset:0;background:#151515;color:#fff}.scan-stage{position:absolute;inset:0;overflow:hidden}.scan-stage video{width:100%;height:100%;object-fit:cover;opacity:0}.scan-stage video.is-visible{opacity:1}.scan-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px}.scan-placeholder svg{width:72px;height:72px;stroke:#fff;stroke-width:2;fill:none;margin-bottom:12px}.scan-placeholder strong{font-size:19px;font-weight:500}.scan-placeholder span{font-size:14px;color:#bdbdbd}.scan-line{display:none;position:absolute;top:48%;left:0;width:100%;height:2px;background:linear-gradient(90deg,transparent,#ff3026 28%,#ff3026 72%,transparent);box-shadow:0 0 8px #ff302680}.scan-stage:has(video.is-visible) .scan-line{display:block}.scanner-controls{position:absolute;bottom:calc(70px + env(safe-area-inset-bottom));left:24px;right:24px;text-align:center;max-width:420px;margin-inline:auto}.scanner-controls .button{width:min(100%,300px);margin-top:12px}.status-row{display:flex;align-items:center;justify-content:center;gap:7px;font-size:14px}.status-dot{width:6px;height:6px;background:#fff;border-radius:50%}.status-dot[data-state=error]{background:var(--red)}.scanner-message{margin:10px 0;font-size:14px;line-height:1.7;text-shadow:0 1px 4px #000}.camera-help{color:#bdbdbd;font-size:12px;margin:12px 0 0}body[data-view=scanner] .app-header{color:#fff;background:transparent;pointer-events:none}body[data-view=scanner] .back-button{pointer-events:auto}body[data-view=scanner] .scanner-screen:has(video.is-visible) .scanner-controls{bottom:calc(76px + env(safe-area-inset-bottom))}body[data-view=scanner] .scanner-screen:has(video.is-visible) .scanner-controls :is(.status-row,.button,.camera-help){display:none}body[data-view=scanner] .scanner-screen:has(video.is-visible) .scanner-message{font-size:13px}.result-panel{width:100%;max-width:480px;margin:0 auto;padding:30px 20px 26px;text-align:center}.authorization-visual{width:190px;height:190px;margin:0 auto 20px}.authorization-visual img{width:100%;height:100%;object-fit:contain}.panda-failed{display:none}.result-panel:is([data-state=error],[data-state=caution]) .panda-confirm{display:none}.result-panel:is([data-state=error],[data-state=caution]) .panda-failed{display:block}.result-panel h1{font-size:19px;line-height:1.5;margin:0;font-weight:600;overflow-wrap:anywhere}.authorization-context{display:block;font-size:11px;color:#999;margin-top:8px}.result-detail{font-size:14px;line-height:1.7;color:#999;margin:12px 0 0;overflow-wrap:anywhere}.result-panel[data-state=confirmation] .result-detail{display:none}.authorization-explain{list-style:none;padding:0;margin:24px 0 0;text-align:left;color:var(--muted)}.authorization-explain li{position:relative;padding-left:15px;font-size:14px;line-height:1.65}.authorization-explain li+li{margin-top:18px}.authorization-explain li:before{content:"";position:absolute;left:1px;top:.65em;width:5px;height:5px;border-radius:50%;background:#ff6763}.result-actions{margin:48px 15px 0;display:flex;flex-direction:column;gap:16px}.result-actions .button{width:100%}.cancel-button{align-self:center;text-decoration:underline;text-underline-offset:3px;font-weight:400}.result-panel[data-state=confirmation] .cancel-button{margin-top:24px}.result-panel[data-state=confirmation] [data-rescan],.result-panel[data-state=pending] [data-rescan]{display:none}.result-panel:not([data-state=confirmation]):not([data-state=pending]) .result-actions{margin-top:clamp(70px,15vh,160px)}.result-panel[data-state=pending] .authorization-visual{opacity:.7}.member-card{position:relative;z-index:4;max-width:440px;margin:0 auto;padding:0 20px}.member-details{text-align:center;color:#999;font-size:12px}.member-details>summary{display:inline-block;cursor:pointer;min-height:36px;padding:10px}.member-details[open]{background:#fff;color:#666;border-radius:16px;padding:12px 16px;box-shadow:0 4px 30px #0002}.member-details p{line-height:1.6}.member-details [data-state=error]{color:#c32b23}.member-login{display:grid;gap:16px;margin-top:20px;text-align:left}.member-login label{display:grid;gap:8px;font-size:14px}.member-login input{min-width:0;width:100%;border:1px solid #ddd;border-radius:8px;min-height:44px;padding:10px;background:#fff}footer{position:relative;text-align:center;color:#aaa;font-size:10px;padding:8px 20px calc(16px + env(safe-area-inset-bottom))}body[data-view=scanner] .member-card{position:fixed;bottom:calc(28px + env(safe-area-inset-bottom));left:0;right:0}body[data-view=scanner] footer{position:fixed;bottom:0;left:0;right:0;pointer-events:none}.toast{position:fixed;z-index:8;left:50%;bottom:90px;transform:translate(-50%,10px);background:#262626ed;color:#fff;padding:12px 18px;border-radius:10px;font-size:14px;max-width:calc(100vw - 40px);opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}.toast[data-visible=true]{opacity:1;transform:translate(-50%)}@media(min-height:850px){.result-panel{padding-top:46px}.authorization-visual{margin-bottom:28px}.result-actions{margin-top:56px}}@media(max-height:700px){.result-panel{padding-top:20px}.authorization-visual{width:150px;height:150px;margin-bottom:12px}.authorization-explain{margin-top:20px}.authorization-explain li+li{margin-top:12px}.result-actions{margin-top:28px}.result-panel[data-state=confirmation] .cancel-button{margin-top:0}}@media(prefers-reduced-motion:reduce){.toast{transition:none}}
