.container { padding: 20rpx; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; } .header { text-align: center; margin-bottom: 30rpx; padding: 30rpx; background: rgba(255, 255, 255, 0.95); border-radius: 25rpx; box-shadow: 0 8rpx 25rpx rgba(0, 0, 0, 0.15); .title { font-size: 40rpx; font-weight: bold; color: #333; display: block; margin-bottom: 10rpx; } .subtitle { font-size: 26rpx; color: #666; display: block; } } .section { background: rgba(255, 255, 255, 0.95); border-radius: 25rpx; padding: 30rpx; margin-bottom: 25rpx; box-shadow: 0 8rpx 25rpx rgba(0, 0, 0, 0.15); backdrop-filter: blur(10rpx); } .section-title { font-size: 32rpx; font-weight: bold; color: #333; margin-bottom: 25rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 2rpx solid #f0f0f0; padding-bottom: 15rpx; } .clear-btn { background: linear-gradient(45deg, #ff6b6b, #ee5a24); color: white; border: none; padding: 15rpx 25rpx; border-radius: 20rpx; font-size: 24rpx; box-shadow: 0 4rpx 15rpx rgba(255, 107, 107, 0.4); } /* 形状选择器 */ .shape-selector { display: grid; grid-template-columns: repeat(auto-fill, minmax(200rpx, 1fr)); gap: 20rpx; } .shape-option { height: 140rpx; border: 3rpx solid #e0e0e0; border-radius: 20rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; background: linear-gradient(145deg, #ffffff, #f0f0f0); transition: all 0.3s ease; cursor: pointer; box-shadow: 0 4rpx 15rpx rgba(0, 0, 0, 0.1); &.active { border-color: #667eea; background: linear-gradient(145deg, #e3f2fd, #bbdefb); transform: translateY(-5rpx); box-shadow: 0 8rpx 25rpx rgba(102, 126, 234, 0.3); .shape-name { color: #667eea; font-weight: bold; } } } .shape-preview-box { width: 60rpx; height: 60rpx; margin-bottom: 10rpx; display: flex; align-items: center; justify-content: center; } .shape-icon { width: 50rpx; height: 50rpx; border: 2rpx solid #666; &.shape-icon-circle { border-radius: 50%; background: transparent; } &.shape-icon-square { border-radius: 5rpx; background: transparent; } &.shape-icon-rectangle { width: 60rpx; height: 40rpx; border-radius: 5rpx; background: transparent; } &.shape-icon-triangle { width: 0; height: 0; border: none; border-left: 25rpx solid transparent; border-right: 25rpx solid transparent; border-bottom: 45rpx solid #666; background: transparent; } &.shape-icon-oval { border-radius: 50%; width: 60rpx; height: 40rpx; background: transparent; } &.shape-icon-diamond { width: 0; height: 0; border: none; border-left: 25rpx solid transparent; border-right: 25rpx solid transparent; border-top: 25rpx solid transparent; border-bottom: 25rpx solid #666; background: transparent; transform: rotate(45deg); } &.shape-icon-star { position: relative; width: 0; height: 0; border: none; border-left: 25rpx solid transparent; border-right: 25rpx solid transparent; border-bottom: 18rpx solid #666; background: transparent; transform: rotate(35deg); &::before { content: ''; position: absolute; left: -25rpx; top: -12rpx; width: 0; height: 0; border-left: 25rpx solid transparent; border-right: 25rpx solid transparent; border-bottom: 18rpx solid #666; transform: rotate(-70deg); } } &.shape-icon-heart { position: relative; width: 40rpx; height: 35rpx; border: none; background: #666; transform: rotate(-45deg); &::before, &::after { content: ''; position: absolute; width: 20rpx; height: 30rpx; background: #666; border-radius: 20rpx 20rpx 0 0; transform: rotate(-45deg); transform-origin: 0 100%; } &::before { left: 20rpx; } &::after { top: -15rpx; transform: rotate(45deg); transform-origin: 100% 100%; } } &.shape-icon-hexagon { width: 40rpx; height: 22rpx; background: #666; border: none; position: relative; &::before, &::after { content: ''; position: absolute; width: 0; height: 0; border-left: 20rpx solid transparent; border-right: 20rpx solid transparent; } &::before { bottom: 100%; border-bottom: 11rpx solid #666; } &::after { top: 100%; border-top: 11rpx solid #666; } } &.shape-icon-pentagon { position: relative; width: 0; height: 0; border: none; border-left: 25rpx solid transparent; border-right: 25rpx solid transparent; border-bottom: 30rpx solid #666; background: transparent; &::before { content: ''; position: absolute; left: -18rpx; top: 30rpx; width: 36rpx; height: 15rpx; background: #666; } } &.shape-icon-semicircle { width: 50rpx; height: 25rpx; border: 2rpx solid #666; border-bottom: none; border-radius: 50rpx 50rpx 0 0; background: transparent; } &.shape-icon-trapezoid { width: 0; height: 0; border: none; border-left: 15rpx solid transparent; border-right: 15rpx solid transparent; border-bottom: 40rpx solid #666; background: transparent; position: relative; &::before { content: ''; position: absolute; left: -25rpx; top: 40rpx; width: 50rpx; height: 2rpx; background: #666; } } } .shape-name { font-size: 24rpx; color: #666; text-align: center; } /* 颜色选择器 */ .color-selector { display: grid; grid-template-columns: repeat(auto-fill, minmax(120rpx, 1fr)); gap: 20rpx; } .color-option { height: 100rpx; border-radius: 20rpx; border: 3rpx solid #e0e0e0; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; position: relative; box-shadow: 0 4rpx 15rpx rgba(0, 0, 0, 0.1); &.active { border-color: #667eea; transform: scale(1.05); box-shadow: 0 0 0 6rpx rgba(102, 126, 234, 0.3); } .color-name { color: white; font-size: 22rpx; font-weight: bold; text-shadow: 1rpx 1rpx 2rpx rgba(0, 0, 0, 0.5); } } /* 添加按钮 */ .add-btn { width: 100%; height: 90rpx; font-size: 32rpx; border-radius: 20rpx; background: linear-gradient(45deg, #667eea, #764ba2); border: none; color: white; display: flex; align-items: center; justify-content: center; box-shadow: 0 8rpx 25rpx rgba(102, 126, 234, 0.4); .add-icon { font-size: 40rpx; margin-right: 10rpx; font-weight: bold; } } /* 已选择的形状 */ .selected-shapes { display: flex; flex-direction: column; gap: 15rpx; } .selected-shape { display: flex; align-items: center; padding: 20rpx; background: linear-gradient(145deg, #f8f9fa, #e9ecef); border-radius: 20rpx; border: 2rpx solid #e0e0e0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4rpx 15rpx rgba(0, 0, 0, 0.1); &:active { background: linear-gradient(145deg, #ffebee, #ffcdd2); border-color: #ff5722; transform: scale(0.98); } } .shape-preview { width: 40rpx; height: 40rpx; border-radius: 50%; margin-right: 20rpx; border: 2rpx solid #333; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2); } .shape-details { flex: 1; display: flex; flex-direction: column; gap: 5rpx; } .shape-info { font-size: 28rpx; color: #333; font-weight: 500; } .color-info { font-size: 22rpx; color: #666; font-family: monospace; } .remove-hint { font-size: 20rpx; color: #999; font-style: italic; } /* 设置项 */ .setting-item { margin-bottom: 30rpx; &:last-child { margin-bottom: 0; } } .setting-label { font-size: 28rpx; color: #333; margin-bottom: 15rpx; display: block; font-weight: 500; } .bg-radio-group { display: flex; flex-wrap: wrap; gap: 25rpx; margin-top: 15rpx; } .bg-option { display: flex; align-items: center; gap: 10rpx; padding: 10rpx 15rpx; border-radius: 15rpx; background: rgba(0, 0, 0, 0.05); text { font-size: 26rpx; color: #666; } } .feature-intro { margin-top: 30rpx; padding: 25rpx; background: linear-gradient(145deg, #f0f8ff, #e6f3ff); border-radius: 15rpx; border-left: 5rpx solid #667eea; } .intro-title { font-size: 26rpx; color: #333; font-weight: bold; display: block; margin-bottom: 15rpx; } .intro-text { font-size: 24rpx; color: #666; display: block; margin-bottom: 8rpx; padding-left: 15rpx; &:last-child { margin-bottom: 0; } } /* 操作按钮 */ .generate-btn { width: 100%; height: 90rpx; font-size: 32rpx; border-radius: 20rpx; margin-bottom: 20rpx; background: linear-gradient(45deg, #4CAF50, #45a049); border: none; color: white; box-shadow: 0 8rpx 25rpx rgba(76, 175, 80, 0.4); &:disabled { background: #ccc; box-shadow: none; } } .save-btn { width: 100%; height: 90rpx; font-size: 32rpx; border-radius: 20rpx; background: linear-gradient(45deg, #ff9800, #f57c00); border: none; color: white; box-shadow: 0 8rpx 25rpx rgba(255, 152, 0, 0.4); } /* 隐藏的画布 */ .hidden-canvas { position: fixed; top: -9999rpx; left: -9999rpx; width: 595px; height: 842px; } /* 预览图片 */ .preview-image { width: 100%; max-height: 600rpx; border-radius: 20rpx; border: 3rpx solid #e0e0e0; background-color: white; cursor: pointer; box-shadow: 0 8rpx 25rpx rgba(0, 0, 0, 0.15); transition: transform 0.3s ease; &:active { transform: scale(0.98); } } .preview-hint { display: block; text-align: center; font-size: 24rpx; color: #666; margin-top: 20rpx; padding: 15rpx; background: rgba(0, 0, 0, 0.05); border-radius: 15rpx; }