/**strategy.wxss**/ .container { padding: 30rpx; min-height: 100vh; } .vintage-bg { background-color: #f8f6f1; background-image: url('data:image/png;base64,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'); position: relative; overflow-x: hidden; } /* 添加页面切换动画 */ .page-transition { animation: fadeIn 0.5s ease-in-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .event-header { margin-bottom: 30rpx; padding: 20rpx; border-radius: 10rpx; background-color: #fff; box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); animation: slideDown 0.5s ease-out; transition: transform 0.3s ease; } .event-header:active { transform: scale(0.98); } @keyframes slideDown { from { transform: translateY(-30rpx); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .event-title { font-size: 36rpx; font-weight: bold; margin-bottom: 15rpx; color: #333; } .event-desc { font-size: 28rpx; color: #666; margin-bottom: 15rpx; line-height: 1.5; } .event-impact { font-size: 26rpx; color: #d9534f; margin-bottom: 15rpx; } .level-indicator { display: flex; align-items: center; } .level-dots { display: flex; margin-left: 10rpx; } .level-dot { width: 20rpx; height: 20rpx; border-radius: 50%; background-color: #ddd; margin-right: 5rpx; transition: background-color 0.5s ease; } .level-dot.active { background-color: #d9534f; animation: pulseDot 2s infinite; } @keyframes pulseDot { 0% { opacity: 1; } 50% { opacity: 0.6; } 100% { opacity: 1; } } .section-title { font-size: 32rpx; font-weight: bold; margin: 20rpx 0; color: #333; position: relative; padding-bottom: 10rpx; } .section-title::after { content: ''; position: absolute; bottom: 0; left: 0; width: 60rpx; height: 4rpx; background-color: #5cb85c; transition: width 0.3s ease; } .section-title:hover::after { width: 120rpx; } .strategy-category { margin-bottom: 40rpx; animation: fadeInUp 0.6s ease-out; animation-fill-mode: both; } .strategy-category:nth-child(2) { animation-delay: 0.2s; } .strategy-category:nth-child(3) { animation-delay: 0.4s; } @keyframes fadeInUp { from { transform: translateY(20rpx); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .category-header { display: flex; align-items: center; margin-bottom: 15rpx; } .category-icon { width: 40rpx; height: 40rpx; margin-right: 10rpx; border-radius: 50%; transition: transform 0.3s ease; } .category-header:hover .category-icon { transform: scale(1.2); } .economic-icon { background-color: #5bc0de; } .admin-icon { background-color: #f0ad4e; } .mob-icon { background-color: #5cb85c; } .category-title { font-size: 30rpx; font-weight: bold; color: #333; } .strategy-list { display: flex; flex-direction: column; gap: 20rpx; } .strategy-item { position: relative; padding: 20rpx; border-radius: 10rpx; background-color: #fff; transition: all 0.3s; box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); border-left: 8rpx solid transparent; transform-origin: center; } .strategy-item.disabled { opacity: 0.6; background-color: #f5f5f5; cursor: not-allowed; color: #999; } .strategy-item.used { opacity: 0.6; border-left-color: #999; background-color: #f5f5f5; } /* 非禁用状态下的策略项高亮效果 */ .strategy-item:not(.disabled):not(.used) { background-color: #fff; border-left-color: #5cb85c; color: #333; opacity: 1; animation: pulse 2s infinite; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(92, 184, 92, 0.4); } 70% { box-shadow: 0 0 0 6rpx rgba(92, 184, 92, 0); } 100% { box-shadow: 0 0 0 0 rgba(92, 184, 92, 0); } } .strategy-item:not(.disabled):not(.used):active { transform: scale(0.98); background-color: #f9f9f9; } .strategy-title { font-size: 30rpx; font-weight: bold; margin-bottom: 10rpx; color: inherit; } .strategy-desc { font-size: 26rpx; line-height: 1.5; color: inherit; margin-bottom: 15rpx; } .not-applicable, .already-used { font-size: 24rpx; padding: 4rpx 10rpx; border-radius: 4rpx; display: inline-block; margin-top: 10rpx; } .not-applicable { background-color: #f8d7da; color: #721c24; } .already-used { background-color: #d1ecf1; color: #0c5460; } .selected-strategies { margin-bottom: 30rpx; padding: 20rpx; border-radius: 10rpx; background-color: #fff; box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); animation: slideIn 0.5s ease-out; } @keyframes slideIn { from { transform: translateX(-30rpx); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .strategies-list { display: flex; flex-wrap: wrap; gap: 15rpx; } .selected-strategy-item { background-color: #f0f8ff; border-radius: 8rpx; padding: 15rpx; display: flex; flex-direction: column; align-items: center; min-width: 150rpx; transition: all 0.3s ease; animation: popIn 0.5s ease-out; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .selected-strategy-item:hover { transform: translateY(-5rpx); box-shadow: 0 5rpx 15rpx rgba(0, 0, 0, 0.1); } @keyframes popIn { 0% { transform: scale(0.8); opacity: 0; } 70% { transform: scale(1.1); } 100% { transform: scale(1); opacity: 1; } } .round-label { font-size: 22rpx; color: #666; margin-bottom: 5rpx; background-color: #f5f5f5; padding: 2rpx 8rpx; border-radius: 10rpx; } .strategy-name { font-size: 26rpx; color: #333; text-align: center; font-weight: bold; } .action-buttons { display: flex; justify-content: space-between; margin-top: 40rpx; padding: 20rpx 0; animation: fadeInUp 0.5s ease-out; animation-delay: 0.8s; animation-fill-mode: both; } .back-btn, .finish-btn { padding: 15rpx 30rpx; border-radius: 50rpx; font-size: 28rpx; text-align: center; transition: all 0.3s ease; } .back-btn { background-color: #f8f9fa; color: #6c757d; border: 1rpx solid #dee2e6; } .back-btn:active { background-color: #e9ecef; transform: scale(0.98); } .finish-btn { background-color: #5cb85c; color: white; position: relative; overflow: hidden; } .finish-btn:active { background-color: #4cae4c; transform: scale(0.98); } .finish-btn::after { content: ''; position: absolute; top: 50%; left: 50%; width: 5rpx; height: 5rpx; background: rgba(255, 255, 255, 0.5); opacity: 0; border-radius: 100%; transform: scale(1, 1) translate(-50%); transform-origin: 50% 50%; } .finish-btn:active::after { animation: ripple 1s ease-out; } @keyframes ripple { 0% { transform: scale(0, 0); opacity: 0.5; } 100% { transform: scale(20, 20); opacity: 0; } } /* 模态框样式 */ .modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.6); z-index: 999; display: flex; justify-content: center; align-items: center; animation: fadeIn 0.3s ease; } .modal-content { width: 85%; background: #fff; border-radius: 10rpx; overflow: hidden; max-height: 90vh; display: flex; flex-direction: column; animation: scaleIn 0.3s ease; transform-origin: center; } @keyframes scaleIn { 0% { transform: scale(0.9); opacity: 0; } 100% { transform: scale(1); opacity: 1; } } .modal-header { padding: 20rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #eee; background-color: #f5f5f5; } .modal-title { font-size: 32rpx; font-weight: bold; color: #333; } .modal-close { font-size: 40rpx; color: #999; cursor: pointer; transition: all 0.3s ease; width: 50rpx; height: 50rpx; display: flex; justify-content: center; align-items: center; border-radius: 50%; } .modal-close:hover { background-color: #f5f5f5; color: #666; } .modal-body { padding: 30rpx; max-height: 60vh; overflow-y: auto; } .case-title { font-size: 30rpx; font-weight: bold; margin-bottom: 20rpx; color: #333; border-left: 4rpx solid #5cb85c; padding-left: 15rpx; } .case-image { width: 100%; height: 300rpx; background-color: #f8f9fa; margin-bottom: 20rpx; border-radius: 8rpx; background-image: url('https://placeholder.pics/svg/400x150/DEDEDE/555555/历史案例'); background-size: cover; background-position: center; transition: transform 0.5s ease; box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); } .case-image:hover { transform: scale(1.02); } .case-desc { font-size: 28rpx; line-height: 1.6; color: #666; text-indent: 2em; } .modal-footer { padding: 20rpx; display: flex; justify-content: flex-end; border-top: 1rpx solid #eee; background-color: #f5f5f5; } .btn { padding: 15rpx 30rpx; border-radius: 50rpx; font-size: 28rpx; background-color: #5cb85c; color: white; text-align: center; transition: all 0.3s ease; position: relative; overflow: hidden; } .btn:active { transform: scale(0.98); background-color: #4cae4c; } /* 加载状态 */ .loading-container { display: flex; justify-content: center; align-items: center; height: 100rpx; margin: 20rpx 0; } .loading-spinner { width: 50rpx; height: 50rpx; border: 4rpx solid rgba(0, 0, 0, 0.1); border-left-color: #5cb85c; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* 提示性样式 */ .tip-container { margin: 20rpx 0; padding: 15rpx; background-color: #fff3cd; border-left: 4rpx solid #ffc107; border-radius: 4rpx; font-size: 26rpx; color: #856404; animation: fadeIn 0.5s ease-in-out; } .round-indicator { display: flex; justify-content: center; margin: 20rpx 0; padding: 15rpx; background-color: rgba(255, 255, 255, 0.8); border-radius: 20rpx; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .round-dot { width: 20rpx; height: 20rpx; border-radius: 50%; background-color: #ddd; margin: 0 10rpx; transition: all 0.3s ease; } .round-dot.active { background-color: #5cb85c; transform: scale(1.2); box-shadow: 0 0 8rpx rgba(92, 184, 92, 0.5); } .round-dot.completed { background-color: #28a745; } /* 策略选择提示文字 */ .selection-help { font-size: 24rpx; color: #6c757d; text-align: center; margin: 10rpx 0 30rpx; font-style: italic; animation: fadeIn 0.8s ease-in-out; background-color: rgba(255, 255, 255, 0.7); padding: 10rpx; border-radius: 20rpx; }