656 lines
11 KiB
Plaintext
656 lines
11 KiB
Plaintext
page {
|
|
background: #f7f0e8;
|
|
color: #2f211c;
|
|
font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", sans-serif;
|
|
}
|
|
|
|
.page {
|
|
min-height: 100vh;
|
|
box-sizing: border-box;
|
|
padding: 28rpx 28rpx 56rpx;
|
|
background:
|
|
linear-gradient(180deg, #f7f0e8 0%, #fffaf3 42%, #f7f0e8 100%);
|
|
}
|
|
|
|
.hero {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border: 1rpx solid rgba(107, 31, 43, 0.14);
|
|
border-radius: 40rpx;
|
|
background: linear-gradient(145deg, #6b1f2b 0%, #8a3c2a 68%, #d6a653 135%);
|
|
color: #fff8ed;
|
|
padding: 38rpx 36rpx;
|
|
box-shadow: 0 28rpx 60rpx rgba(73, 31, 24, 0.18);
|
|
}
|
|
|
|
.hero::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: -80rpx;
|
|
right: -70rpx;
|
|
width: 260rpx;
|
|
height: 260rpx;
|
|
border: 1rpx solid rgba(255, 248, 237, 0.2);
|
|
border-radius: 999rpx;
|
|
background: rgba(255, 248, 237, 0.09);
|
|
}
|
|
|
|
.eyebrow {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 38rpx;
|
|
padding: 0 18rpx;
|
|
border: 1rpx solid rgba(255, 248, 237, 0.24);
|
|
border-radius: 999rpx;
|
|
color: rgba(255, 248, 237, 0.78);
|
|
font-size: 20rpx;
|
|
font-weight: 600;
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
.hero-title {
|
|
position: relative;
|
|
margin-top: 22rpx;
|
|
max-width: 560rpx;
|
|
font-size: 44rpx;
|
|
font-weight: 750;
|
|
line-height: 1.18;
|
|
}
|
|
|
|
.hero-subtitle {
|
|
position: relative;
|
|
margin-top: 14rpx;
|
|
max-width: 520rpx;
|
|
color: rgba(255, 248, 237, 0.76);
|
|
font-size: 26rpx;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.hero-metrics {
|
|
position: relative;
|
|
display: flex;
|
|
gap: 18rpx;
|
|
margin-top: 30rpx;
|
|
}
|
|
|
|
.metric {
|
|
flex: 1;
|
|
min-height: 112rpx;
|
|
box-sizing: border-box;
|
|
padding: 18rpx;
|
|
border: 1rpx solid rgba(255, 248, 237, 0.16);
|
|
border-radius: 24rpx;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.metric-number {
|
|
font-size: 36rpx;
|
|
font-weight: 760;
|
|
}
|
|
|
|
.metric-label {
|
|
margin-top: 4rpx;
|
|
color: rgba(255, 248, 237, 0.68);
|
|
font-size: 21rpx;
|
|
}
|
|
|
|
.section {
|
|
margin-top: 36rpx;
|
|
}
|
|
|
|
.section-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 18rpx;
|
|
}
|
|
|
|
.section-title {
|
|
color: #31211c;
|
|
font-size: 32rpx;
|
|
font-weight: 760;
|
|
}
|
|
|
|
.section-action {
|
|
color: #8b5a36;
|
|
font-size: 24rpx;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.card {
|
|
position: relative;
|
|
overflow: hidden;
|
|
margin-bottom: 18rpx;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.12);
|
|
border-radius: 28rpx;
|
|
background: rgba(255, 252, 247, 0.94);
|
|
padding: 26rpx;
|
|
box-shadow: 0 16rpx 42rpx rgba(68, 39, 27, 0.08);
|
|
}
|
|
|
|
.menu-card {
|
|
margin-bottom: 16rpx;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.1);
|
|
border-radius: 26rpx;
|
|
background: rgba(255, 252, 247, 0.96);
|
|
padding: 24rpx;
|
|
}
|
|
|
|
.chevron {
|
|
color: #b09a86;
|
|
font-size: 48rpx;
|
|
line-height: 1;
|
|
}
|
|
|
|
.mine-class-pill {
|
|
position: relative;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
max-width: 560rpx;
|
|
min-height: 50rpx;
|
|
margin-top: 24rpx;
|
|
padding: 0 22rpx;
|
|
border: 1rpx solid rgba(255, 248, 237, 0.18);
|
|
border-radius: 999rpx;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
color: rgba(255, 248, 237, 0.9);
|
|
font-size: 24rpx;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.card-title {
|
|
color: #3a221d;
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.muted {
|
|
color: #8a7b70;
|
|
font-size: 24rpx;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 20rpx;
|
|
}
|
|
|
|
.module-tile {
|
|
min-height: 168rpx;
|
|
box-sizing: border-box;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.12);
|
|
border-radius: 30rpx;
|
|
background: linear-gradient(180deg, #fffdf8 0%, #fff7ed 100%);
|
|
padding: 24rpx;
|
|
box-shadow: 0 18rpx 42rpx rgba(68, 39, 27, 0.07);
|
|
}
|
|
|
|
.module-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 58rpx;
|
|
height: 58rpx;
|
|
margin-bottom: 18rpx;
|
|
border-radius: 20rpx;
|
|
background: #6b1f2b;
|
|
color: #fff7ea;
|
|
font-size: 24rpx;
|
|
font-weight: 760;
|
|
}
|
|
|
|
.module-title {
|
|
color: #34211c;
|
|
font-size: 29rpx;
|
|
font-weight: 720;
|
|
}
|
|
|
|
.module-desc {
|
|
margin-top: 10rpx;
|
|
color: #8a7b70;
|
|
font-size: 23rpx;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.button {
|
|
margin-top: 22rpx;
|
|
border-radius: 22rpx;
|
|
background: #6b1f2b;
|
|
color: #fff8ea;
|
|
font-weight: 650;
|
|
box-shadow: 0 16rpx 34rpx rgba(107, 31, 43, 0.16);
|
|
}
|
|
|
|
.button.secondary {
|
|
border: 1rpx solid rgba(121, 84, 54, 0.16);
|
|
background: #fffaf3;
|
|
color: #6b1f2b;
|
|
box-shadow: none;
|
|
}
|
|
|
|
.fab-button {
|
|
position: fixed;
|
|
right: 34rpx;
|
|
bottom: calc(44rpx + env(safe-area-inset-bottom));
|
|
z-index: 40;
|
|
box-sizing: border-box;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 108rpx;
|
|
min-width: 108rpx;
|
|
max-width: 108rpx;
|
|
height: 108rpx;
|
|
min-height: 108rpx;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 999rpx;
|
|
background: #6b1f2b;
|
|
box-shadow: 0 18rpx 42rpx rgba(107, 31, 43, 0.28);
|
|
color: #fff8ed;
|
|
font-size: 62rpx;
|
|
font-weight: 420;
|
|
line-height: 108rpx;
|
|
}
|
|
|
|
.fab-button::after {
|
|
border: 0;
|
|
}
|
|
|
|
.fab-spacer {
|
|
height: 144rpx;
|
|
}
|
|
|
|
.form-page {
|
|
padding-bottom: calc(140rpx + env(safe-area-inset-bottom));
|
|
}
|
|
|
|
.form-header {
|
|
margin-bottom: 26rpx;
|
|
}
|
|
|
|
.form-kicker {
|
|
color: #8b5a36;
|
|
font-size: 22rpx;
|
|
font-weight: 760;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.form-title {
|
|
margin-top: 8rpx;
|
|
color: #31211c;
|
|
font-size: 44rpx;
|
|
font-weight: 780;
|
|
line-height: 1.18;
|
|
}
|
|
|
|
.form-subtitle {
|
|
margin-top: 10rpx;
|
|
color: #8a7b70;
|
|
font-size: 25rpx;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.form-card {
|
|
margin-bottom: 18rpx;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.11);
|
|
border-radius: 28rpx;
|
|
background: rgba(255, 252, 247, 0.96);
|
|
padding: 28rpx;
|
|
box-shadow: 0 14rpx 36rpx rgba(68, 39, 27, 0.06);
|
|
}
|
|
|
|
.form-field {
|
|
margin-top: 26rpx;
|
|
}
|
|
|
|
.form-field:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.form-label {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 12rpx;
|
|
color: #3a221d;
|
|
font-size: 25rpx;
|
|
font-weight: 730;
|
|
}
|
|
|
|
.form-hint {
|
|
color: #9b8b7f;
|
|
font-size: 22rpx;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.form-input,
|
|
.form-textarea,
|
|
.form-select {
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.14);
|
|
border-radius: 22rpx;
|
|
background: #fffaf3;
|
|
color: #30211c;
|
|
font-size: 29rpx;
|
|
}
|
|
|
|
.form-input,
|
|
.form-select {
|
|
min-height: 82rpx;
|
|
padding: 0 24rpx;
|
|
line-height: 82rpx;
|
|
}
|
|
|
|
.form-textarea {
|
|
min-height: 190rpx;
|
|
padding: 22rpx 24rpx;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.form-switch-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: 82rpx;
|
|
}
|
|
|
|
.form-submit-bar {
|
|
position: fixed;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: 30;
|
|
box-sizing: border-box;
|
|
padding: 18rpx 32rpx calc(18rpx + env(safe-area-inset-bottom));
|
|
background: rgba(250, 244, 235, 0.92);
|
|
backdrop-filter: blur(18rpx);
|
|
}
|
|
|
|
.form-submit-bar .button {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.empty {
|
|
margin-top: 120rpx;
|
|
text-align: center;
|
|
}
|
|
|
|
.list-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 22rpx;
|
|
}
|
|
|
|
.row-mark {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 64rpx;
|
|
height: 64rpx;
|
|
flex: none;
|
|
border-radius: 22rpx;
|
|
background: #f1dfc4;
|
|
color: #6b1f2b;
|
|
font-size: 24rpx;
|
|
font-weight: 760;
|
|
}
|
|
|
|
.row-body {
|
|
min-width: 0;
|
|
flex: 1;
|
|
}
|
|
|
|
.pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 42rpx;
|
|
padding: 0 18rpx;
|
|
border-radius: 999rpx;
|
|
background: #f2e5d6;
|
|
color: #7a4b2b;
|
|
font-size: 22rpx;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.pill.done {
|
|
background: #dff3e8;
|
|
color: #1f7a4d;
|
|
}
|
|
|
|
.member-row,
|
|
.schedule-row,
|
|
.feed-head,
|
|
.vote-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 22rpx;
|
|
}
|
|
|
|
.directory-summary {
|
|
margin-bottom: 18rpx;
|
|
}
|
|
|
|
.member-title-line {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 12rpx;
|
|
}
|
|
|
|
.member-role-badge {
|
|
flex: none;
|
|
min-height: 34rpx;
|
|
padding: 0 12rpx;
|
|
border-radius: 999rpx;
|
|
font-size: 20rpx;
|
|
font-weight: 760;
|
|
line-height: 34rpx;
|
|
}
|
|
|
|
.member-role-badge.teacher {
|
|
background: #6b1f2b;
|
|
color: #fff8ed;
|
|
}
|
|
|
|
.member-role-badge.student {
|
|
background: #f2e5d6;
|
|
color: #7a4b2b;
|
|
}
|
|
|
|
.vote-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10rpx 18rpx;
|
|
margin-top: 14rpx;
|
|
color: #8a7b70;
|
|
font-size: 23rpx;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.more-dot {
|
|
flex: none;
|
|
min-width: 58rpx;
|
|
height: 44rpx;
|
|
border-radius: 999rpx;
|
|
color: #a7988b;
|
|
font-size: 30rpx;
|
|
line-height: 36rpx;
|
|
text-align: center;
|
|
}
|
|
|
|
.avatar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 82rpx;
|
|
height: 82rpx;
|
|
flex: none;
|
|
border-radius: 30rpx;
|
|
background: linear-gradient(145deg, #6b1f2b, #a86b3b);
|
|
color: #fff8ed;
|
|
font-size: 30rpx;
|
|
font-weight: 760;
|
|
}
|
|
|
|
.date-badge {
|
|
width: 86rpx;
|
|
height: 92rpx;
|
|
flex: none;
|
|
border-radius: 26rpx;
|
|
background: #efe0ca;
|
|
color: #6b1f2b;
|
|
text-align: center;
|
|
}
|
|
|
|
.date-day {
|
|
margin-top: 12rpx;
|
|
font-size: 34rpx;
|
|
font-weight: 780;
|
|
}
|
|
|
|
.date-month {
|
|
margin-top: -2rpx;
|
|
font-size: 20rpx;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.feed-card {
|
|
display: block;
|
|
}
|
|
|
|
.feed-content {
|
|
margin-top: 20rpx;
|
|
color: #4f3930;
|
|
font-size: 27rpx;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.feed-images {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 10rpx;
|
|
margin-top: 20rpx;
|
|
}
|
|
|
|
.feed-images image {
|
|
width: 100%;
|
|
height: 150rpx;
|
|
border-radius: 18rpx;
|
|
background: #efe0ca;
|
|
}
|
|
|
|
.feed-actions {
|
|
display: flex;
|
|
gap: 24rpx;
|
|
margin-top: 20rpx;
|
|
color: #8a7b70;
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
.fund-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 14rpx;
|
|
}
|
|
|
|
.fund-summary-item {
|
|
min-height: 126rpx;
|
|
box-sizing: border-box;
|
|
padding: 20rpx 16rpx;
|
|
border: 1rpx solid rgba(121, 84, 54, 0.1);
|
|
border-radius: 26rpx;
|
|
background: rgba(255, 252, 247, 0.96);
|
|
box-shadow: 0 14rpx 34rpx rgba(68, 39, 27, 0.06);
|
|
}
|
|
|
|
.fund-summary-item.strong {
|
|
background: #6b1f2b;
|
|
}
|
|
|
|
.fund-summary-item.strong .fund-label,
|
|
.fund-summary-item.strong .fund-number {
|
|
color: #fff8ed;
|
|
}
|
|
|
|
.fund-label {
|
|
color: #8a7b70;
|
|
font-size: 22rpx;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.fund-number {
|
|
margin-top: 14rpx;
|
|
color: #30211c;
|
|
font-size: 28rpx;
|
|
font-weight: 780;
|
|
}
|
|
|
|
.fund-number.income,
|
|
.fund-amount.income {
|
|
color: #1f7a4d;
|
|
}
|
|
|
|
.fund-number.expense,
|
|
.fund-amount.expense {
|
|
color: #9a3a2f;
|
|
}
|
|
|
|
.fund-row {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 20rpx;
|
|
}
|
|
|
|
.fund-type-badge {
|
|
flex: none;
|
|
min-width: 72rpx;
|
|
height: 48rpx;
|
|
border-radius: 999rpx;
|
|
font-size: 23rpx;
|
|
font-weight: 750;
|
|
line-height: 48rpx;
|
|
text-align: center;
|
|
}
|
|
|
|
.fund-type-badge.income {
|
|
background: #dff3e8;
|
|
color: #1f7a4d;
|
|
}
|
|
|
|
.fund-type-badge.expense {
|
|
background: #f7e1dc;
|
|
color: #9a3a2f;
|
|
}
|
|
|
|
.fund-row-top {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 18rpx;
|
|
}
|
|
|
|
.fund-amount {
|
|
flex: none;
|
|
font-size: 30rpx;
|
|
font-weight: 780;
|
|
}
|
|
|
|
.fund-detail-link {
|
|
margin-top: 14rpx;
|
|
color: #8b5a36;
|
|
font-size: 24rpx;
|
|
font-weight: 700;
|
|
}
|
|
|
|
input,
|
|
textarea,
|
|
picker {
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
}
|