/* 基础样式与过渡 */
        body { 
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; 
            background-color: #f3f4f6; 
            color: #1f2937; 
            -webkit-tap-highlight-color: transparent;
        }
        .page { display: none; animation: fadeIn 0.3s ease; padding-bottom: 80px; }
        .page.active { display: block; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        
        /* 长辈模式动态覆盖 */
        body.elder-mode {
            --text-xs: 20px;
            --text-sm: 20px;
            --text-base: 24px;
            --text-lg: 28px;
            --text-xl: 32px;
            --text-2xl: 36px;
            --min-tap-height: 56px;
        }
        body.elder-mode .text-xs, body.elder-mode .text-sm { font-size: var(--text-xs) !important; line-height: 1.4 !important; }
        body.elder-mode .text-base { font-size: var(--text-base) !important; line-height: 1.5 !important; }
        body.elder-mode .text-lg { font-size: var(--text-lg) !important; line-height: 1.5 !important; }
        body.elder-mode .text-xl { font-size: var(--text-xl) !important; line-height: 1.5 !important; font-weight: bold; }
        body.elder-mode .text-2xl { font-size: var(--text-2xl) !important; line-height: 1.5 !important; font-weight: bold; }
        body.elder-mode button, body.elder-mode .tap-target { min-height: var(--min-tap-height) !important; padding-top: 12px !important; padding-bottom: 12px !important; }
        
        /* 弹窗与动作面板 */
        .overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 50; animation: fadeIn 0.2s; }
        .overlay.active { display: block; }
        .actionsheet { position: fixed; bottom: -100%; left: 0; right: 0; background: #fff; border-radius: 20px 20px 0 0; z-index: 51; transition: bottom 0.3s ease; padding-bottom: env(safe-area-inset-bottom); }
        .actionsheet.active { bottom: 0; }
        
        /* 紧急呼叫按钮呼吸灯动画 */
        .sos-btn { position: fixed; right: 20px; bottom: 100px; width: 60px; height: 60px; border-radius: 50%; background-color: #ef4444; color: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(239, 68, 68, 0.5); z-index: 40; transition: transform 0.1s; }
        .sos-btn:active { transform: scale(0.95); }
        .sos-btn::after { content: ''; position: absolute; inset: -4px; border-radius: 50%; border: 2px solid #ef4444; animation: ripple 1.5s infinite ease-out; }
        @keyframes ripple { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

        /* 隐藏滚动条 */
        ::-webkit-scrollbar { display: none; }