* { margin: 0; padding: 0; box-sizing: border-box; } * { -webkit-tap-highlight-color: transparent; /* 顺手优化长按菜单(需要可跳过) */ -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; min-height: 100vh; padding-bottom: env(safe-area-inset-bottom); } /* 在 :root 中定义全局变量,方便复用 */ :root { --safe-area-inset-top: env(safe-area-inset-top, 0px); --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px); } /* 1. 为页面主体添加安全区内边距 */ body { padding-top: var(--safe-area-inset-top); padding-bottom: var(--safe-area-inset-bottom); } .loading-overlay, .error-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 1000; backdrop-filter: blur(4px); } .loading-content, .error-content { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 32px; background: #1a1a1a; border-radius: 12px; border: 1px solid #2c2c2c; } .loading-spinner { width: 40px; height: 40px; border: 3px solid rgba(245, 166, 35, 0.2); border-top-color: #f5a623; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text, .error-text { font-size: 14px; color: #fff; } .error-icon { width: 40px; height: 40px; background: #ff4444; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: bold; color: #fff; } .error-retry { padding: 10px 24px; background: linear-gradient(135deg, #f5a623, #ff6b35); border: none; border-radius: 8px; color: #fff; font-size: 14px; font-weight: 500; cursor: pointer; transition: opacity 0.3s ease; } .error-retry:hover { opacity: 0.9; } .error-retry:active { transform: scale(0.98); }