1086 lines
24 KiB
Plaintext
1086 lines
24 KiB
Plaintext
/* pages/period/period.wxss - 姨姨(美柚风格日历模式) */
|
|
@import '../../styles/common.wxss';
|
|
page { background: linear-gradient(180deg, #F4E2E3 0%, #FAF5EE 55%, #FAF5EE 100%); height: 100vh; overflow: hidden; }
|
|
.container { padding-top: 16rpx; padding-left: 20rpx; padding-right: 20rpx; }
|
|
scroll-view.page-bg { height: 100vh; overflow-y: scroll; -webkit-overflow-scrolling: touch; }
|
|
|
|
.access-panel { margin: 216rpx 24rpx 0; padding: 36rpx; border-radius: 24rpx; background: #fff; display: flex; flex-direction: column; gap: 24rpx; }
|
|
.access-panel-title { font-size: 34rpx; font-weight: 700; color: #333; }
|
|
.access-panel-desc { font-size: 26rpx; color: #777; line-height: 1.6; }
|
|
.access-panel-action { text-align: center; padding: 20rpx; border-radius: 40rpx; background: #B74768; color: #fff; font-size: 28rpx; }
|
|
|
|
/* ========== 顶部状态卡片 ========== */
|
|
.period-status-card {
|
|
background: white;
|
|
border-radius: 24rpx;
|
|
padding: 28rpx 20rpx 20rpx;
|
|
margin-bottom: 20rpx;
|
|
box-shadow: 0 2rpx 16rpx rgba(0,0,0,0.06);
|
|
}
|
|
.status-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-around;
|
|
}
|
|
.status-item {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 4rpx;
|
|
}
|
|
.status-num {
|
|
font-size: 40rpx;
|
|
font-weight: 800;
|
|
color: #B74768;
|
|
line-height: 1.2;
|
|
}
|
|
.status-label {
|
|
font-size: 20rpx;
|
|
color: #999;
|
|
}
|
|
.status-divider {
|
|
width: 2rpx;
|
|
height: 50rpx;
|
|
background: #FFE8EE;
|
|
}
|
|
.status-badge {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8rpx;
|
|
margin-top: 16rpx;
|
|
padding: 10rpx 20rpx;
|
|
border-radius: 40rpx;
|
|
background: #FFF0F3;
|
|
}
|
|
.badge-dot {
|
|
width: 14rpx;
|
|
height: 14rpx;
|
|
border-radius: 50%;
|
|
background: #B74768;
|
|
}
|
|
.badge-text {
|
|
font-size: 24rpx;
|
|
color: #B74768;
|
|
font-weight: 500;
|
|
}
|
|
.status-badge.safe .badge-dot { background: #81C784; }
|
|
.status-badge.safe .badge-text { color: #81C784; }
|
|
.status-badge.safe { background: #F0FFF0; }
|
|
.status-badge.period .badge-dot { background: #FF5252; }
|
|
.status-badge.period .badge-text { color: #FF5252; }
|
|
.status-badge.period { background: #FFF0F0; }
|
|
.status-badge.ovulation .badge-dot { background: #FFD54F; }
|
|
.status-badge.ovulation .badge-text { color: #E6A800; }
|
|
.status-badge.ovulation { background: #FFFDE7; }
|
|
|
|
/* ===== 日历卡片容器 ===== */
|
|
.calendar-card {
|
|
background: white;
|
|
border-radius: 24rpx;
|
|
padding: 0 16rpx 12rpx;
|
|
margin-bottom: 20rpx;
|
|
box-shadow: 0 2rpx 16rpx rgba(0,0,0,0.06);
|
|
}
|
|
|
|
/* ========== 日历导航 ========== */
|
|
.calendar-nav {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 16rpx 8rpx 12rpx;
|
|
}
|
|
.nav-btn {
|
|
font-size: 28rpx;
|
|
color: #B74768;
|
|
font-weight: 400;
|
|
padding: 8rpx 20rpx;
|
|
line-height: 1;
|
|
}
|
|
.nav-title {
|
|
font-size: 34rpx;
|
|
font-weight: 600;
|
|
color: #C96A85;
|
|
}
|
|
|
|
/* ========== 星期头 ========== */
|
|
.calendar-weekdays {
|
|
display: grid;
|
|
grid-template-columns: repeat(7, 1fr);
|
|
padding: 8rpx 0;
|
|
text-align: center;
|
|
}
|
|
.weekday {
|
|
font-size: 22rpx;
|
|
color: #999;
|
|
font-weight: 500;
|
|
padding: 8rpx 0;
|
|
}
|
|
.weekday.weekend {
|
|
color: #FF8A80;
|
|
}
|
|
|
|
/* ========== 日历格子 ========== */
|
|
.calendar-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(7, 1fr);
|
|
gap: 4rpx;
|
|
background: white;
|
|
border-radius: 24rpx;
|
|
padding: 12rpx 8rpx;
|
|
margin-bottom: 20rpx;
|
|
box-shadow: 0 2rpx 16rpx rgba(0,0,0,0.06);
|
|
}
|
|
.calendar-cell {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 90rpx;
|
|
position: relative;
|
|
border-radius: 16rpx;
|
|
}
|
|
.cell-day {
|
|
font-size: 26rpx;
|
|
color: #333;
|
|
font-weight: 500;
|
|
line-height: 1.2;
|
|
}
|
|
/* 爱爱图标(日期数字上方) */
|
|
.sex-icon-top {
|
|
position: relative;
|
|
height: 24rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-bottom: 2rpx;
|
|
}
|
|
.sex-icon-top-text {
|
|
font-size: 18rpx;
|
|
line-height: 1;
|
|
}
|
|
.sex-icon-top-count {
|
|
position: absolute;
|
|
top: -10rpx;
|
|
right: -18rpx;
|
|
font-size: 14rpx;
|
|
color: #E040FB;
|
|
font-weight: 700;
|
|
background: white;
|
|
border-radius: 50%;
|
|
min-width: 22rpx;
|
|
height: 22rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border: 2rpx solid #E040FB;
|
|
line-height: 1;
|
|
padding: 0 2rpx;
|
|
}
|
|
/* 其他月 */
|
|
.calendar-cell.other-month .cell-day {
|
|
color: #ddd;
|
|
}
|
|
/* 未来日期(不可点击) */
|
|
.calendar-cell.future .cell-day {
|
|
color: #eee;
|
|
}
|
|
.calendar-cell.future {
|
|
opacity: 0.4;
|
|
}
|
|
/* 周期阶段背景色 */
|
|
.calendar-cell.phase-period {
|
|
background: #FFF0F0;
|
|
}
|
|
.calendar-cell.phase-period .cell-day {
|
|
color: #FF5252;
|
|
font-weight: 700;
|
|
}
|
|
/* 预测经期(只预测下一次) */
|
|
.calendar-cell.phase-predicted {
|
|
background: #FFF5F5;
|
|
}
|
|
.calendar-cell.phase-predicted .cell-day {
|
|
color: #FF8A80;
|
|
font-weight: 600;
|
|
}
|
|
/* 排卵日(突出显示,紫色系区别于排卵期) */
|
|
.calendar-cell.phase-ovulation-day {
|
|
background: #F3E5F5;
|
|
}
|
|
.calendar-cell.phase-ovulation-day .cell-day {
|
|
color: #7B1FA2;
|
|
font-weight: 800;
|
|
font-size: 30rpx;
|
|
}
|
|
/* 排卵期 */
|
|
.calendar-cell.phase-ovulation {
|
|
background: #FFF8E1;
|
|
}
|
|
.calendar-cell.phase-ovulation .cell-day {
|
|
color: #F57F17;
|
|
font-weight: 600;
|
|
}
|
|
/* 安全期 */
|
|
.calendar-cell.phase-safe {
|
|
background: #F0FFF0;
|
|
}
|
|
.calendar-cell.phase-safe .cell-day {
|
|
color: #388E3C;
|
|
font-weight: 500;
|
|
}
|
|
/* 今天高亮(覆盖阶段背景) */
|
|
.calendar-cell.today {
|
|
background: #FFF0F3 !important;
|
|
}
|
|
.calendar-cell.today .cell-day {
|
|
color: #B74768 !important;
|
|
font-weight: 700 !important;
|
|
}
|
|
/* 选中(覆盖阶段背景) */
|
|
.calendar-cell.selected {
|
|
background: #B74768 !important;
|
|
}
|
|
.calendar-cell.selected .cell-day {
|
|
color: white !important;
|
|
font-weight: 700 !important;
|
|
}
|
|
/* 经期选中时文字白色 */
|
|
.calendar-cell.period-day.selected .cell-day {
|
|
color: white !important;
|
|
}
|
|
|
|
/* 小圆点指示器容器(水平排列) */
|
|
.cell-dots-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 3rpx;
|
|
height: 16rpx;
|
|
margin-top: 2rpx;
|
|
}
|
|
.cell-dot {
|
|
width: 8rpx;
|
|
height: 8rpx;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
}
|
|
.cell-dot.period-dot { width: 16rpx; border-radius: 8rpx; }
|
|
.cell-dot.period-dot.level-1 { background: #FFCDD2; }
|
|
.cell-dot.period-dot.level-2 { background: #FF8A80; }
|
|
.cell-dot.period-dot.level-3 { background: #FF5252; }
|
|
.cell-dot.record-dot { background: #FFD54F; }
|
|
|
|
/* ========== 选中日期详情面板 ========== */
|
|
.day-detail-panel {
|
|
background: white;
|
|
border-radius: 24rpx;
|
|
padding: 24rpx 20rpx;
|
|
margin-bottom: 20rpx;
|
|
box-shadow: 0 2rpx 16rpx rgba(0,0,0,0.06);
|
|
}
|
|
.detail-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12rpx;
|
|
margin-bottom: 20rpx;
|
|
padding-bottom: 16rpx;
|
|
border-bottom: 2rpx solid #FFF0F3;
|
|
}
|
|
.detail-date {
|
|
font-size: 32rpx;
|
|
font-weight: 700;
|
|
color: #333;
|
|
}
|
|
.detail-weekday {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
}
|
|
|
|
/* ===== 日历图例(日历卡片内最下方) ===== */
|
|
.calendar-legend {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 16rpx;
|
|
flex-wrap: wrap;
|
|
padding: 10rpx 0 4rpx;
|
|
border-top: 2rpx solid #FFF0F3;
|
|
margin-top: 4rpx;
|
|
}
|
|
.legend-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6rpx;
|
|
font-size: 20rpx;
|
|
color: #999;
|
|
}
|
|
.legend-dot {
|
|
width: 16rpx;
|
|
height: 16rpx;
|
|
border-radius: 4rpx;
|
|
}
|
|
.legend-dot.legend-period { background: #FFF0F0; border: 2rpx solid #FFCDD2; }
|
|
.legend-dot.legend-predicted { background: #FFF5F5; border: 2rpx solid #FFCDD2; }
|
|
.legend-dot.legend-ovulation-day { background: #F3E5F5; border: 2rpx solid #CE93D8; }
|
|
.legend-dot.legend-ovulation { background: #FFF8E1; border: 2rpx solid #FFE082; }
|
|
.legend-dot.legend-safe { background: #F0FFF0; border: 2rpx solid #A5D6A7; }
|
|
|
|
/* ===== 快捷记录卡片(数据统计卡下方,日历上方) ===== */
|
|
.quick-events-card {
|
|
background: white;
|
|
border-radius: 20rpx;
|
|
padding: 20rpx 16rpx;
|
|
margin-bottom: 16rpx;
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06);
|
|
}
|
|
.quick-events-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 12rpx;
|
|
}
|
|
/* ===== 快捷事件按钮行(旧,保留兼容) ===== */
|
|
.quick-events {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 12rpx;
|
|
margin-bottom: 16rpx;
|
|
}
|
|
.quick-event-btn {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 6rpx;
|
|
padding: 16rpx 8rpx;
|
|
border-radius: 20rpx;
|
|
background: #FFF5F8;
|
|
border: 2rpx solid #FFE8EE;
|
|
position: relative;
|
|
transition: all 0.2s;
|
|
}
|
|
.quick-event-btn:active {
|
|
transform: scale(0.92);
|
|
}
|
|
.qe-icon {
|
|
font-size: 32rpx;
|
|
line-height: 1;
|
|
}
|
|
.qe-label {
|
|
font-size: 20rpx;
|
|
color: #888;
|
|
font-weight: 500;
|
|
}
|
|
.qe-check {
|
|
position: absolute;
|
|
top: 4rpx;
|
|
right: 6rpx;
|
|
font-size: 16rpx;
|
|
color: white;
|
|
background: #B74768;
|
|
width: 24rpx;
|
|
height: 24rpx;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
line-height: 1;
|
|
}
|
|
.quick-event-btn.active {
|
|
background: #FFF0F3;
|
|
border-color: #FFB4C8;
|
|
}
|
|
.quick-event-btn.active .qe-label {
|
|
color: #B74768;
|
|
font-weight: 600;
|
|
}
|
|
.quick-event-btn.active.period {
|
|
background: #FFF0F0;
|
|
border-color: #FF8A80;
|
|
}
|
|
.quick-event-btn.active.period .qe-label {
|
|
color: #FF5252;
|
|
}
|
|
.quick-event-btn.active.sex {
|
|
background: #F3E5F5;
|
|
border-color: #CE93D8;
|
|
}
|
|
.quick-event-btn.active.sex .qe-label {
|
|
color: #9C27B0;
|
|
}
|
|
|
|
/* ===== 详情标签 ===== */
|
|
.detail-content {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10rpx;
|
|
}
|
|
.detail-tag {
|
|
font-size: 22rpx;
|
|
padding: 8rpx 18rpx;
|
|
border-radius: 20rpx;
|
|
font-weight: 500;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8rpx;
|
|
}
|
|
.detail-del-btn {
|
|
width: 28rpx;
|
|
height: 28rpx;
|
|
border-radius: 50%;
|
|
background: rgba(0,0,0,0.12);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 16rpx;
|
|
color: #fff;
|
|
font-weight: 700;
|
|
line-height: 1;
|
|
flex-shrink: 0;
|
|
}
|
|
.detail-tag.period-tag { background: #FFF0F0; color: #FF5252; }
|
|
.detail-tag.sex-tag { background: #F3E5F5; color: #9C27B0; }
|
|
.detail-tag.symptom-tag { background: #FFF3E0; color: #E65100; }
|
|
.detail-tag.mood-tag { background: #FFF8E1; color: #F57F17; }
|
|
.detail-tag.discharge-tag { background: #E3F2FD; color: #1565C0; }
|
|
.detail-tag.temp-tag { background: #E8F5E9; color: #2E7D32; }
|
|
.detail-tag.weight-tag { background: #FCE4EC; color: #C62828; }
|
|
.detail-note {
|
|
width: 100%;
|
|
font-size: 24rpx;
|
|
color: #666;
|
|
padding: 12rpx 16rpx;
|
|
background: #FAFAFA;
|
|
border-radius: 16rpx;
|
|
margin-top: 4rpx;
|
|
}
|
|
.detail-empty {
|
|
text-align: center;
|
|
padding: 20rpx 0;
|
|
}
|
|
.empty-hint {
|
|
font-size: 24rpx;
|
|
color: #bbb;
|
|
}
|
|
|
|
/* ========== 标题 ========== */
|
|
.section-title {
|
|
font-size: 26rpx;
|
|
font-weight: 600;
|
|
color: #999;
|
|
margin-bottom: 12rpx;
|
|
padding-left: 8rpx;
|
|
}
|
|
|
|
.section-hint {
|
|
font-size: 22rpx;
|
|
font-weight: 400;
|
|
color: #c0c0c0;
|
|
margin-left: 12rpx;
|
|
}
|
|
|
|
/* ========== 历史周期列表 ========== */
|
|
.cycle-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12rpx;
|
|
padding-bottom: 20rpx;
|
|
}
|
|
.cycle-card {
|
|
background: white;
|
|
border-radius: 20rpx;
|
|
padding: 20rpx 24rpx;
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.04);
|
|
border-left: 6rpx solid #FFD4E0;
|
|
}
|
|
.cycle-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10rpx;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
.cycle-icon { font-size: 28rpx; }
|
|
.cycle-date {
|
|
font-size: 26rpx;
|
|
font-weight: 700;
|
|
color: #333;
|
|
}
|
|
.cycle-details {
|
|
display: flex;
|
|
gap: 16rpx;
|
|
flex-wrap: wrap;
|
|
}
|
|
.cycle-detail {
|
|
font-size: 22rpx;
|
|
color: #888;
|
|
background: #FFF5F8;
|
|
padding: 4rpx 14rpx;
|
|
border-radius: 20rpx;
|
|
}
|
|
.cycle-note {
|
|
font-size: 22rpx;
|
|
color: #999;
|
|
margin-top: 8rpx;
|
|
padding: 6rpx 12rpx;
|
|
background: #FAFAFA;
|
|
border-radius: 12rpx;
|
|
}
|
|
|
|
/* ========== 空状态 ========== */
|
|
.empty-state { text-align: center; padding: 80rpx 40rpx; color: #999; }
|
|
.empty-icon { font-size: 64rpx; display: block; margin-bottom: 12rpx; }
|
|
.empty-title { font-size: 28rpx; display: block; margin-bottom: 6rpx; }
|
|
.empty-desc { font-size: 22rpx; color: #bbb; display: block; }
|
|
|
|
/* ========== 周期统计卡内设置按钮 ========== */
|
|
.status-settings-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8rpx;
|
|
padding: 12rpx 0 0;
|
|
margin-top: 12rpx;
|
|
border-top: 2rpx solid #FFF0F3;
|
|
}
|
|
.settings-btn-icon {
|
|
font-size: 24rpx;
|
|
}
|
|
.settings-btn-text {
|
|
font-size: 24rpx;
|
|
color: #B74768;
|
|
font-weight: 600;
|
|
}
|
|
.status-settings-btn:active {
|
|
opacity: 0.6;
|
|
}
|
|
|
|
/* ========== 弹窗表单 ========== */
|
|
.period-modal .modal-form { margin-top: 8rpx; }
|
|
.form-row {
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
padding: 18rpx 0; border-bottom: 2rpx solid #FFF0F3;
|
|
}
|
|
.form-row:last-of-type { border-bottom: none; }
|
|
.form-label {
|
|
font-size: 26rpx; color: #666; flex-shrink: 0; width: 140rpx;
|
|
}
|
|
.form-picker {
|
|
font-size: 26rpx; color: #B74768; font-weight: 500;
|
|
padding: 8rpx 20rpx; background: #FFF5F8; border-radius: 16rpx;
|
|
}
|
|
.form-stepper {
|
|
display: flex; align-items: center; gap: 16rpx;
|
|
}
|
|
.stepper-btn {
|
|
width: 48rpx; height: 48rpx; border-radius: 50%;
|
|
background: #FFE8EE; color: #B74768;
|
|
font-size: 32rpx; font-weight: 700;
|
|
display: flex; align-items: center; justify-content: center; line-height: 1;
|
|
}
|
|
.stepper-value {
|
|
font-size: 28rpx; font-weight: 600; color: #333;
|
|
min-width: 60rpx; text-align: center;
|
|
}
|
|
.modal-actions {
|
|
display: flex; flex-direction: row; gap: 16rpx; margin-top: 28rpx;
|
|
}
|
|
.modal-actions .btn { flex: 1; text-align: center; }
|
|
.modal-actions .btn-secondary {
|
|
background: #FFF5F8; color: #B74768; border: 2rpx solid #FFB4C8;
|
|
}
|
|
|
|
/* ========== 姨姨设置推算结果 ========== */
|
|
.prediction-box {
|
|
margin-top: 20rpx;
|
|
padding: 20rpx 24rpx;
|
|
background: linear-gradient(135deg, #FFF5F8, #F3E5F5);
|
|
border-radius: 20rpx;
|
|
border: 2rpx solid #FFD4E0;
|
|
}
|
|
.prediction-title {
|
|
font-size: 26rpx;
|
|
font-weight: 700;
|
|
color: #B74768;
|
|
display: block;
|
|
margin-bottom: 16rpx;
|
|
}
|
|
.prediction-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 10rpx 0;
|
|
}
|
|
.prediction-row + .prediction-row {
|
|
border-top: 1rpx dashed #FFD4E0;
|
|
}
|
|
.prediction-label {
|
|
font-size: 24rpx;
|
|
color: #666;
|
|
font-weight: 500;
|
|
}
|
|
.prediction-value {
|
|
font-size: 24rpx;
|
|
color: #B74768;
|
|
font-weight: 700;
|
|
}
|
|
.prediction-value.ovulation {
|
|
color: #7B1FA2;
|
|
font-size: 26rpx;
|
|
}
|
|
.prediction-value.ovulation-range {
|
|
color: #F57F17;
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
/* 推算公式展开/收起 */
|
|
.formula-toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 6rpx;
|
|
margin-top: 16rpx;
|
|
padding: 10rpx 0;
|
|
border-top: 1rpx dashed #FFD4E0;
|
|
}
|
|
.formula-toggle-text {
|
|
font-size: 22rpx;
|
|
color: #999;
|
|
}
|
|
.formula-toggle-arrow {
|
|
font-size: 18rpx;
|
|
color: #bbb;
|
|
}
|
|
.formula-detail {
|
|
margin-top: 12rpx;
|
|
padding: 16rpx;
|
|
background: rgba(255,255,255,0.7);
|
|
border-radius: 12rpx;
|
|
}
|
|
.formula-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2rpx;
|
|
padding: 8rpx 0;
|
|
}
|
|
.formula-item + .formula-item {
|
|
border-top: 1rpx solid rgba(255,212,224,0.4);
|
|
}
|
|
.formula-label {
|
|
font-size: 22rpx;
|
|
font-weight: 600;
|
|
color: #666;
|
|
}
|
|
.formula-text {
|
|
font-size: 22rpx;
|
|
color: #999;
|
|
padding-left: 8rpx;
|
|
}
|
|
|
|
/* 免责声明 */
|
|
.disclaimer-box {
|
|
display: flex;
|
|
gap: 8rpx;
|
|
margin-top: 16rpx;
|
|
padding: 14rpx 16rpx;
|
|
background: #FFF9E6;
|
|
border-radius: 12rpx;
|
|
border-left: 4rpx solid #FFB300;
|
|
}
|
|
.disclaimer-icon {
|
|
font-size: 20rpx;
|
|
flex-shrink: 0;
|
|
line-height: 1.6;
|
|
}
|
|
.disclaimer-text {
|
|
font-size: 20rpx;
|
|
color: #8D6E00;
|
|
line-height: 1.7;
|
|
}
|
|
.disclaimer-bold {
|
|
font-weight: 700;
|
|
color: #E65100;
|
|
}
|
|
|
|
/* ========== 经期/白带详情弹窗 ========== */
|
|
.period-section {
|
|
margin: 16rpx 0;
|
|
}
|
|
.period-section-label {
|
|
font-size: 24rpx;
|
|
font-weight: 600;
|
|
color: #666;
|
|
display: block;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
.period-chip-group {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10rpx;
|
|
}
|
|
.period-chip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6rpx;
|
|
font-size: 24rpx;
|
|
color: #888;
|
|
padding: 10rpx 20rpx;
|
|
border-radius: 30rpx;
|
|
background: #F5F5F5;
|
|
border: 2rpx solid transparent;
|
|
}
|
|
.period-chip.active {
|
|
color: #B74768;
|
|
background: #FFF0F3;
|
|
border-color: #FFB4C8;
|
|
font-weight: 600;
|
|
}
|
|
.color-dot {
|
|
width: 20rpx;
|
|
height: 20rpx;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* ========== 症状选择网格 ========== */
|
|
.symptom-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 12rpx;
|
|
margin: 16rpx 0;
|
|
}
|
|
.symptom-tag-lg {
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
color: #888;
|
|
padding: 16rpx 12rpx;
|
|
border-radius: 20rpx;
|
|
background: #F5F5F5;
|
|
border: 2rpx solid transparent;
|
|
}
|
|
.symptom-tag-lg.active {
|
|
color: #B74768;
|
|
background: #FFF0F3;
|
|
border-color: #FFB4C8;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ========== 心情选择网格 ========== */
|
|
.mood-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 12rpx;
|
|
margin: 16rpx 0;
|
|
}
|
|
.mood-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 6rpx;
|
|
padding: 16rpx 8rpx;
|
|
border-radius: 20rpx;
|
|
background: #F5F5F5;
|
|
border: 2rpx solid transparent;
|
|
}
|
|
.mood-item.active {
|
|
background: #FFF8E1;
|
|
border-color: #FFD54F;
|
|
}
|
|
.mood-emoji { font-size: 40rpx; }
|
|
.mood-label { font-size: 22rpx; color: #888; }
|
|
.mood-item.active .mood-label { color: #F57F17; font-weight: 600; }
|
|
|
|
/* ========== 白带选择网格 ========== */
|
|
.discharge-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, 1fr);
|
|
gap: 12rpx;
|
|
margin: 16rpx 0;
|
|
}
|
|
.discharge-item {
|
|
text-align: center;
|
|
font-size: 24rpx;
|
|
color: #888;
|
|
padding: 20rpx 16rpx;
|
|
border-radius: 20rpx;
|
|
background: #F5F5F5;
|
|
border: 2rpx solid transparent;
|
|
}
|
|
.discharge-item.active {
|
|
color: #1565C0;
|
|
background: #E3F2FD;
|
|
border-color: #90CAF9;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ========== 体温/体重输入 ========== */
|
|
.temp-input-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 12rpx;
|
|
margin: 24rpx 0;
|
|
}
|
|
.temp-input {
|
|
font-size: 48rpx;
|
|
font-weight: 700;
|
|
color: #B74768;
|
|
text-align: center;
|
|
width: 200rpx;
|
|
padding: 16rpx;
|
|
border: none;
|
|
border-bottom: 4rpx solid #FFB4C8;
|
|
background: transparent;
|
|
}
|
|
.temp-unit {
|
|
font-size: 32rpx;
|
|
color: #999;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* ========== 备注输入框 ========== */
|
|
.note-textarea {
|
|
width: 100%;
|
|
min-height: 160rpx;
|
|
padding: 20rpx;
|
|
border: 2rpx solid #FFE8EE;
|
|
border-radius: 20rpx;
|
|
font-size: 26rpx;
|
|
color: #333;
|
|
background: #FFFBF5;
|
|
margin: 16rpx 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* ========== 爱爱记录弹窗 ========== */
|
|
.sex-modal .modal-subtitle {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
text-align: center;
|
|
margin-top: -8rpx;
|
|
margin-bottom: 16rpx;
|
|
display: block;
|
|
}
|
|
|
|
/* 爱爱记录列表 */
|
|
.sex-record-list {
|
|
max-height: 300rpx;
|
|
overflow-y: auto;
|
|
margin-bottom: 16rpx;
|
|
border-bottom: 2rpx solid #F3E5F5;
|
|
padding-bottom: 12rpx;
|
|
}
|
|
/* 列表为空时仍保留占位,避免布局跳动 */
|
|
.sex-record-list:empty {
|
|
display: none;
|
|
}
|
|
.sex-record-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 12rpx 16rpx;
|
|
background: #F3E5F5;
|
|
border-radius: 16rpx;
|
|
margin-bottom: 8rpx;
|
|
}
|
|
.sex-record-info {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8rpx;
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.sex-time {
|
|
font-size: 24rpx;
|
|
font-weight: 700;
|
|
color: #9C27B0;
|
|
background: white;
|
|
padding: 4rpx 12rpx;
|
|
border-radius: 12rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
.sex-record-time {
|
|
font-size: 20rpx;
|
|
color: #9C27B0;
|
|
font-weight: 500;
|
|
background: rgba(255,255,255,0.6);
|
|
padding: 2rpx 10rpx;
|
|
border-radius: 10rpx;
|
|
margin-left: 4rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
.sex-measure {
|
|
font-size: 24rpx;
|
|
color: #666;
|
|
}
|
|
.sex-record-del {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
border-radius: 50%;
|
|
background: #FFCDD2;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.sex-del-icon {
|
|
font-size: 20rpx;
|
|
color: #E53935;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* 添加记录区域 */
|
|
.sex-add-section {
|
|
margin-top: 8rpx;
|
|
}
|
|
.sex-add-title {
|
|
font-size: 26rpx;
|
|
font-weight: 600;
|
|
color: #9C27B0;
|
|
margin-bottom: 12rpx;
|
|
display: block;
|
|
}
|
|
.sex-form-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 12rpx 0;
|
|
}
|
|
.sex-form-label {
|
|
font-size: 24rpx;
|
|
color: #666;
|
|
flex-shrink: 0;
|
|
}
|
|
.sex-form-picker {
|
|
font-size: 26rpx;
|
|
color: #9C27B0;
|
|
font-weight: 600;
|
|
padding: 8rpx 20rpx;
|
|
background: #F3E5F5;
|
|
border-radius: 16rpx;
|
|
}
|
|
|
|
/* 措施选择网格 */
|
|
.sex-measure-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 10rpx;
|
|
margin: 12rpx 0;
|
|
}
|
|
.sex-measure-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 4rpx;
|
|
padding: 14rpx 8rpx;
|
|
border-radius: 16rpx;
|
|
background: #F5F5F5;
|
|
border: 2rpx solid transparent;
|
|
}
|
|
.sex-measure-item.active {
|
|
background: #F3E5F5;
|
|
border-color: #CE93D8;
|
|
}
|
|
.sex-measure-icon {
|
|
font-size: 28rpx;
|
|
}
|
|
.sex-measure-label {
|
|
font-size: 20rpx;
|
|
color: #888;
|
|
text-align: center;
|
|
}
|
|
.sex-measure-item.active .sex-measure-label {
|
|
color: #9C27B0;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* 爱爱备注输入 */
|
|
.sex-form-input {
|
|
font-size: 24rpx;
|
|
color: #666;
|
|
padding: 8rpx 16rpx;
|
|
background: #F5F5F5;
|
|
border-radius: 12rpx;
|
|
width: 320rpx;
|
|
text-align: right;
|
|
}
|
|
/* 爱爱记录备注 */
|
|
.sex-remark {
|
|
font-size: 20rpx;
|
|
color: #999;
|
|
background: rgba(255,255,255,0.7);
|
|
padding: 2rpx 8rpx;
|
|
border-radius: 8rpx;
|
|
max-width: 120rpx;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* 爱爱计数徽章(快捷按钮上) */
|
|
.sex-count-badge {
|
|
position: absolute;
|
|
top: -4rpx;
|
|
right: -4rpx;
|
|
font-size: 18rpx;
|
|
color: white;
|
|
background: #E040FB;
|
|
min-width: 30rpx;
|
|
height: 30rpx;
|
|
border-radius: 15rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-weight: 700;
|
|
line-height: 1;
|
|
padding: 0 6rpx;
|
|
box-shadow: 0 2rpx 6rpx rgba(224,64,251,0.4);
|
|
}
|
|
|
|
/* ========== 权限开关 ========== */
|
|
.permission-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 16rpx 0;
|
|
}
|
|
.permission-info {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4rpx;
|
|
flex: 1;
|
|
}
|
|
.permission-title {
|
|
font-size: 26rpx;
|
|
font-weight: 600;
|
|
color: #333;
|
|
}
|
|
.permission-desc {
|
|
font-size: 20rpx;
|
|
color: #999;
|
|
}
|
|
.permission-switch {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
@import '../../styles/design.wxss';
|
|
|
|
@import '../../styles/journal.wxss';
|
|
|
|
/* Journal calendar: semantic phase colors and handlers are preserved. */
|
|
.j-body .calendar-card { background:#FFFDF8; border:1rpx solid #E9DDD0; border-radius:42rpx; padding:24rpx 20rpx; box-shadow:0 12rpx 30rpx rgba(114,82,64,.05); }
|
|
.j-body .calendar-grid { background:transparent; border-radius:0; box-shadow:none; padding:0; gap:6rpx 2rpx; }
|
|
.j-body .calendar-cell { height:78rpx; border-radius:18rpx; }
|
|
.j-body .calendar-nav { padding:0 0 22rpx; }
|
|
.j-body .nav-btn { display:flex; align-items:center; justify-content:center; min-width:80rpx; min-height:80rpx; font-size:40rpx; color:#85776D; padding:0; }
|
|
.j-body .nav-title { color:#352E2A; font-size:29rpx; }
|
|
.j-body .weekday { color:#85776D; font-size:22rpx; }
|
|
.j-body .calendar-cell.phase-period { background:#F4E2E3; }.j-body .calendar-cell.phase-period .cell-day { color:#B74768; }
|
|
.j-body .calendar-cell.phase-predicted { background:#F8EEEB; }.j-body .calendar-cell.phase-predicted .cell-day { color:#956571; }
|
|
.j-body .calendar-cell.future { opacity:.72; }.j-body .calendar-cell.future .cell-day { color:#85776D; }
|
|
.j-body .calendar-legend { border-top:0; padding-top:18rpx; margin:0; gap:12rpx 18rpx; flex-wrap:wrap; }
|
|
.j-body .legend-item { font-size:22rpx; color:#85776D; }.j-body .legend-period { background:#F4E2E3; }.j-body .legend-predicted { background:#F8EEEB; }
|
|
.j-body .quick-events-card { margin-top:34rpx; padding:0; background:transparent; border:0; box-shadow:none; }
|
|
.j-body .quick-events-grid { gap:12rpx; }.j-body .quick-event-btn { background:#FFFDF8; border:1rpx solid #E9DDD0; border-radius:20rpx; padding:24rpx 4rpx; min-height:120rpx; gap:12rpx; }
|
|
.j-body .quick-event-btn .qe-icon { width:34rpx; height:34rpx; }.j-body .qe-label { color:#85776D; font-size:23rpx; }
|
|
.j-body .quick-event-btn.active { background:#F4E2E3; border-color:#D5A6AE; }.j-body .quick-event-btn.active .qe-label { color:#B74768; }
|
|
.j-body .cycle-card { background:#FFFDF8; border:1rpx solid #E9DDD0; border-radius:20rpx; box-shadow:none; }.j-body .cycle-date { font-size:26rpx; }.j-body .cycle-detail { color:#85776D; }
|