@import '../../style/theme3.less'; @lt-share-green: #9cd343; page { background-color: @bg-page; } .lt-page { min-height: 100vh; padding: 0 @page-padding-x; padding-bottom: calc(200rpx + env(safe-area-inset-bottom)); box-sizing: border-box; } .lt-main { padding-top: 24rpx; display: flex; flex-direction: column; gap: @section-gap; } /* ===== 预览卡 ===== */ .lt-preview-wrap { position: relative; } .lt-preview-card { background: @bg-white; border-radius: @radius; box-shadow: @shadow; padding: 48rpx @page-padding-inner-x 32rpx; border: @border; box-sizing: border-box; display: flex; flex-direction: column; align-items: stretch; } .lt-preview-kicker { display: block; text-align: center; font-size: 22rpx; font-weight: 700; color: @text-gray; letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 24rpx; } .lt-canvas-wrap { display: flex; justify-content: center; align-items: center; min-height: 400rpx; background: @bg-gray; border-radius: @radius-sm; border: 2rpx dashed rgba(50, 46, 37, 0.12); overflow: hidden; } .lt-canvas { max-width: 100%; border-radius: @radius-sm; box-shadow: @shadow; } /* ===== 参数面板 ===== */ .lt-params { background: @bg-header; border-radius: @radius; padding: 40rpx @page-padding-inner-x; box-sizing: border-box; display: flex; flex-direction: column; gap: 40rpx; border: @border; box-shadow: @shadow; } .lt-params-head { display: flex; flex-direction: row; align-items: center; gap: 12rpx; } .lt-params-emoji { font-size: 36rpx; line-height: 1; } .lt-params-title { font-size: @fs-section-head-title; font-weight: 700; color: @text-title; letter-spacing: @ls-nav-title; } .lt-field-label { display: block; font-size: 26rpx; font-weight: 700; color: @text-secondary; margin-bottom: 16rpx; margin-left: 4rpx; } /* ===== 练习类型:2×2 网格选择器 ===== */ .lt-mode-seg { display: grid; grid-template-columns: 1fr 1fr; gap: 16rpx; } .lt-mode-item { display: flex; align-items: center; justify-content: center; padding: 24rpx 16rpx; border-radius: @radius-sm; background: @bg-white; border: 2rpx solid rgba(50, 46, 37, 0.1); box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.04); transition: all 0.2s ease; } .lt-mode-item--active { background: @brand; border-color: rgba(255, 215, 9, 0.55); box-shadow: @shadow; } .lt-mode-item__text { font-size: 26rpx; font-weight: 600; color: @text-secondary; line-height: 1.35; text-align: center; } .lt-mode-item--active .lt-mode-item__text { color: @text-selected-btn; font-weight: 700; } /* ===== 字母选择网格:7 列 ===== */ .lt-letter-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 12rpx; } .lt-letter-cell { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: @radius-sm; background: @bg-white; border: 2rpx solid rgba(50, 46, 37, 0.1); box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.04); transition: all 0.15s ease; } .lt-letter-cell--active { background: @brand; border-color: rgba(255, 215, 9, 0.55); box-shadow: @shadow; transform: scale(1.05); } .lt-letter-text { font-size: 32rpx; font-weight: 700; color: @text-secondary; } .lt-letter-cell--active .lt-letter-text { color: @text-selected-btn; } /* ===== 大小写切换 ===== */ .lt-chip-row { display: flex; flex-direction: row; gap: 16rpx; } .lt-chip { flex: 1; text-align: center; padding: 24rpx 20rpx; font-size: 28rpx; font-weight: 600; color: @text-secondary; background: @bg-white; border-radius: @radius-sm; border: 2rpx solid rgba(50, 46, 37, 0.1); box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.04); } .lt-chip--active { background: @brand; color: @text-selected-btn; font-weight: 700; border-color: rgba(255, 215, 9, 0.55); box-shadow: @shadow; } /* ===== 换一批 ===== */ .lt-shuffle-btn { width: 100%; padding: 28rpx 24rpx; margin: 0; border-radius: @radius; border: 6rpx solid @bg-header; background: transparent; font-size: 32rpx; font-weight: 700; color: @text-secondary; display: flex; align-items: center; justify-content: center; gap: 12rpx; box-sizing: border-box; &::after { border: none; } } .lt-shuffle-btn:active { background: @bg-header; transform: scale(0.98); } /* ===== 底栏 ===== */ .lt-bottom-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 100; display: flex; flex-direction: row; align-items: center; gap: 20rpx; padding: 24rpx @page-padding-x; padding-bottom: calc(24rpx + env(safe-area-inset-bottom)); background: rgba(255, 255, 255, 0.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-top: @border; box-shadow: 0 -8rpx 32rpx rgba(50, 46, 37, 0.06); box-sizing: border-box; } .lt-bottom-share, .lt-bottom-save { margin: 0; height: 96rpx; line-height: 96rpx; border-radius: @radius-sm; font-size: 30rpx; font-weight: 700; display: flex; align-items: center; justify-content: center; gap: 8rpx; padding: 0; box-sizing: border-box; &::after { border: none; } } .lt-bottom-share { flex: 0 0 35%; width: 35%; background: @lt-share-green; color: @text-white; box-shadow: @shadow; } .lt-bottom-save { flex: 1; min-width: 0; background: @brand; color: @text-selected-btn; font-weight: 800; box-shadow: @shadow-lg; } .lt-bottom-save[disabled] { opacity: 0.45; } .lt-bottom-icon { font-size: 36rpx; line-height: 1; } .lt-spacer-bottom { height: 24rpx; }