/* 页面切换：先展示结构骨架，再呈现服务端返回内容。静止偏好下不播放位移动画。 */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.route-loading{position:relative;min-height:420px;overflow:hidden;padding:8px 0 30px}.route-progress{height:2px;position:absolute;top:0;left:0;right:0;overflow:hidden;background:var(--surface-tint)}.route-progress:after{content:'';display:block;width:35%;height:100%;background:var(--accent);animation:route-progress 1.2s ease-in-out infinite}
.route-loading i{display:block;background:linear-gradient(105deg,var(--surface-tint) 25%,#ffffffa8 45%,var(--surface-tint) 65%);background-size:250% 100%;animation:skeleton-glow 1.6s ease-in-out infinite;border-radius:8px}
.skeleton-top{padding:24px 0}.skeleton-top>i:first-child{width:35%;height:22px;margin-bottom:13px}.skeleton-top>i:last-child{width:54%;height:13px}.skeleton-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:24px}.skeleton-metrics>i{height:92px;border-radius:15px}.skeleton-panel{padding:22px;background:var(--surface);border:1px solid var(--line);border-radius:16px}.skeleton-panel>i{width:100px;height:16px;margin-bottom:23px}.skeleton-panel>div{display:flex;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid var(--line)}.skeleton-panel>div:last-child{border:0}.skeleton-panel>div>i:first-child{width:35px;height:37px}.skeleton-panel>div>span{flex:1;display:grid;gap:9px}.skeleton-panel>div>span>i:first-child{height:13px;width:60%}.skeleton-panel>div>span>i:last-child{height:10px;width:42%}.skeleton-panel>div>i:last-child{width:65px;height:16px}
.route-enter{animation:route-in .22s cubic-bezier(.2,.7,.2,1) both}.route-enter[data-route-direction=back]{animation-name:route-back}.route-enter[data-route-direction=tab]{animation-name:route-tab}
@keyframes route-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes route-back{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}@keyframes route-tab{from{opacity:.2;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes route-progress{from{transform:translateX(-110%)}to{transform:translateX(390%)}}@keyframes skeleton-glow{from{background-position:100% 0}to{background-position:-100% 0}}
.app-display-intro{text-align:center;padding:6px 8px 21px}.app-display-intro>span{display:grid;place-items:center;width:54px;height:56px;border-radius:17px;background:var(--surface-tint);color:var(--accent);margin:0 auto 18px}.app-display-intro>span .ico{width:27px;height:27px}.app-display-intro h3{font-size:17px;font-weight:550;color:var(--ink);margin-bottom:10px}.app-display-intro p,.app-install-guide p{font-size:12px;line-height:1.9;color:var(--muted)}.app-display-actions{display:grid;gap:12px}.app-install-guide{padding:20px;background:var(--surface-soft);border-radius:13px;margin-top:20px}.app-install-guide strong{display:block;font-size:13px;color:var(--ink);margin-bottom:8px}
/* 同一电脑入口统一使用居中支付窗口。只调整窗口容器，手机内部设计不变。 */
.personal.wallet-desktop .overlay.payment-code-overlay,.personal.wallet-desktop .overlay.scanner-overlay{padding:20px;align-items:center;justify-content:center;background:#06111bd9}
.personal.wallet-desktop .modal.payment-code-modal,.personal.wallet-desktop .modal.scanner-modal{width:min(460px,100%);height:min(780px,94dvh);max-height:94dvh;max-width:460px;padding:0;margin:0;border:1px solid #ffffff20;border-radius:26px;overflow:auto;box-shadow:0 35px 100px #0006}
.personal.wallet-desktop .payer-pass{min-height:100%;height:auto}.personal.wallet-desktop .payer-pass .pass-header{padding:24px 25px 43px}.personal.wallet-desktop .payer-pass .pass-header .pass-close{right:23px;top:23px}.personal.wallet-desktop .payer-pass .pass-privacy{padding-bottom:24px}.personal.wallet-desktop .scan-shell{min-height:100%}

@media(prefers-reduced-motion:reduce){.route-loading i,.route-progress:after,.route-enter{animation:none!important}.route-enter{opacity:1;transform:none}}
