@keyframes app-preloader-spin {
	to { transform: rotate(360deg); }
}

/* PWA Install Prompt Styles */
#pwa-mask{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,0);display:flex;align-items:flex-end;justify-content:center;transition:background .35s}
#pwa-mask.pwa-show{background:rgba(0,0,0,.45)}
.pwa-install-sheet{width:100%;max-width:480px;background:#fff;border-radius:20px 20px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom,0px));transform:translateY(100%);transition:transform .35s cubic-bezier(.32,.72,0,1);will-change:transform}
#pwa-mask.pwa-show .pwa-install-sheet{transform:translateY(0)}
.pwa-sheet-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.pwa-app-icon{width:56px;height:56px;border-radius:14px;flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.pwa-app-info{flex:1;min-width:0}
.pwa-app-name{font-size:18px;font-weight:600;color:#1a1a1a;line-height:1.3}
.pwa-app-desc{font-size:13px;color:#888;margin-top:3px;line-height:1.4}
.pwa-close{padding:2px 8px;font-size:12px;color:#ccc;cursor:pointer;flex-shrink:0;border-radius:6px;background:transparent;border:1px solid #eee;line-height:20px}
.pwa-actions{display:flex;flex-direction:column;gap:10px}
.pwa-install-btn{width:100%;height:48px;border:none;border-radius:12px;background:linear-gradient(135deg,#0f766e,#14b8a6);color:#fff;font-size:17px;font-weight:600;letter-spacing:1px;cursor:pointer}
.pwa-later-btn{width:100%;height:36px;border:none;background:transparent;color:#ccc;font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.pwa-hint{font-size:12px;color:#aaa;line-height:1.6;margin-bottom:12px;padding:0 2px}
.pwa-ios-steps{display:flex;flex-direction:column;gap:16px}
.pwa-step{display:flex;align-items:center;gap:14px}
.pwa-step-num{width:28px;height:28px;border-radius:50%;background:#0f766e;color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pwa-step-text{font-size:15px;color:#333;line-height:1.5}
.pwa-ios-arrow{text-align:center;font-size:28px;color:#0f766e;margin-top:18px;animation:pwa-bounce 1.2s ease infinite}
.pwa-wechat-dots{display:inline-block;background:#f2f2f2;border-radius:5px;padding:1px 7px;font-size:15px;color:#333;letter-spacing:3px;vertical-align:middle;font-weight:700}
.pwa-wechat-arrow{text-align:right;font-size:28px;color:#0f766e;margin-top:18px;padding-right:24px;animation:pwa-bounce-up 1.2s ease infinite}
@keyframes pwa-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
@keyframes pwa-bounce-up{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

/* App Preloader */
#app-preloader {
	position: fixed; inset: 0;
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	background: #F4F5F6;
	z-index: 99998;
}
.app-preloader-logo {
	width: 80px; height: 80px; border-radius: 16px; margin-bottom: 24px;
}
.app-preloader-ring {
	width: 28px; height: 28px;
}
.app-preloader-ring>div {
	box-sizing: border-box;
	width: 28px; height: 28px;
	border: 2px solid #e0e0e0; border-top-color: #1f4154;
	border-radius: 50%;
	animation: app-preloader-spin 0.8s linear infinite;
}
.app-preloader-text {
	font-size: 13px; color: #8d9aa3; margin-top: 12px;
}