/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** css ./node_modules/@tarojs/webpack5-runner/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[2]!./node_modules/resolve-url-loader/index.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[0].use[4]!./src/pages/diy/index.scss ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ @charset "UTF-8"; .diy-page { padding: 0 24rpx 24rpx; min-height: 100vh; } /* 画布区域 */ .canvas-wrapper { padding: 40rpx; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .canvas-area { position: relative; background: -webkit-linear-gradient(315deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); background: linear-gradient(135deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); overflow: hidden; border-radius: 16rpx; min-width: 200rpx; min-height: 200rpx; } .mask-border { position: absolute; top: 0; left: 0; right: 0; bottom: 0; border: 3rpx dashed var(--accent-blue); pointer-events: none; z-index: 2; } .canvas-image { position: absolute; max-width: 100%; max-height: 100%; z-index: 5; border: 2rpx solid transparent; } .canvas-image.active { border-color: var(--accent-pink); } .canvas-image.overlap { border-color: #ff4757; -webkit-box-shadow: 0 0 12rpx rgba(255, 71, 87, 0.5); box-shadow: 0 0 12rpx rgba(255, 71, 87, 0.5); } /* 贴纸面板 */ .sticker-panel { padding: 28rpx; } .sticker-list { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: 16rpx; } .sticker-thumb { position: relative; width: 120rpx; height: 120rpx; border: 2rpx dashed var(--line-star); border-radius: 12rpx; overflow: hidden; background: var(--bg-input); } .sticker-thumb.active { border-color: var(--accent-pink); border-width: 3rpx; } .sticker-thumb.overlap { border-color: #ff4757; } .sticker-thumb-img { width: 100%; height: 100%; } .sticker-del { position: absolute; top: 4rpx; right: 4rpx; width: 36rpx; height: 36rpx; background: rgba(255, 71, 87, 0.85); border-radius: 50%; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; z-index: 10; } .del-icon { color: #fff; font-size: 24rpx; font-weight: 700; } .sticker-add-btn { width: 120rpx; height: 120rpx; border: 2rpx dashed var(--line-star); border-radius: 12rpx; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; background: var(--bg-input); } .add-icon { font-size: 48rpx; color: var(--accent-pink); line-height: 1; } .add-label { font-size: 22rpx; color: var(--text-secondary); margin-top: 8rpx; } .overlap-hint { display: block; margin-top: 16rpx; font-size: 26rpx; color: #ff4757; font-weight: 600; text-align: center; } /* 工具栏 */ .toolbar { padding: 28rpx 32rpx; } .tool-row { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; margin-bottom: 20rpx; } .tool-row:last-child { margin-bottom: 0; } .tool-label { font-size: 28rpx; font-weight: 600; color: var(--text-primary); } .tool-btn { width: 56rpx; height: 56rpx; background: -webkit-linear-gradient(315deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); background: linear-gradient(135deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); border: 2rpx dashed var(--accent-blue); border-radius: 50%; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; font-size: 32rpx; color: var(--text-primary); font-weight: 700; } .tool-value { font-size: 28rpx; font-weight: 600; color: var(--accent-pink); min-width: 80rpx; text-align: center; } .tool-hint { font-size: 24rpx; color: var(--text-secondary); } /* 预览弹窗 */ .preview-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; z-index: 1000; padding: 40rpx; } .preview-card { background: var(--bg-card); width: 100%; max-height: 80vh; overflow-y: auto; padding: 40rpx; } .preview-title { font-size: 36rpx; font-weight: 700; color: var(--text-primary); display: block; margin-bottom: 24rpx; text-align: center; } .preview-canvas { background: -webkit-linear-gradient(315deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); background: linear-gradient(135deg, rgba(255, 154, 158, 0.08) 0%, rgba(160, 196, 255, 0.08) 100%); border-radius: 16rpx; overflow: hidden; margin: 0 auto 24rpx; border: 3rpx dashed var(--accent-blue); position: relative; min-width: 200rpx; min-height: 200rpx; } .preview-image { position: absolute; max-width: 100%; max-height: 100%; z-index: 5; } .preview-image.overlap { border: 2rpx solid #ff4757; } .product-info { text-align: center; margin-bottom: 32rpx; } .product-name { font-size: 30rpx; font-weight: 700; color: var(--text-primary); display: block; margin-bottom: 8rpx; } .product-size { font-size: 24rpx; color: var(--text-secondary); } .preview-actions { display: -webkit-flex; display: -ms-flexbox; display: flex; gap: 20rpx; } .preview-actions .btn-outline, .preview-actions .btn-gradient { -webkit-flex: 1; -ms-flex: 1; flex: 1; text-align: center; } .preview-actions .btn-gradient.disabled { opacity: 0.5; pointer-events: none; } /* 按钮 */ .action-btns { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; gap: 20rpx; } .mt-20 { margin-top: 20rpx; }