/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/App.vue?vue&type=style&index=0&id=7ba5bd90&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************/

body, #app {
  height: 100vh;
  margin: 0;
  background: #F9FAFB;
  font-size: 0.37333rem;
}
.icon-student {
  width: 0.48rem !important;
  height: 0.48rem !important;
  padding: 0.05333rem;
}
.van-tabbar-item.active {
  color: var(--van-primary-color) !important;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/SearchablePicker.vue?vue&type=style&index=0&id=3a928260&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.searchable-picker[data-v-3a928260] {
  background: #fff;
  border-radius: 0.32rem 0.32rem 0 0;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
}
.picker-header[data-v-3a928260] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.42667rem 0.53333rem;
  border-bottom: 0.02667rem solid #f5f5f5;
}
.picker-title[data-v-3a928260] {
  font-size: 0.42667rem;
  font-weight: 500;
  color: #333;
}
.close-icon[data-v-3a928260] {
  font-size: 0.53333rem;
  color: #999;
  cursor: pointer;
}
.search-container[data-v-3a928260] {
  padding: 0.32rem 0.53333rem;
  border-bottom: 0.02667rem solid #f5f5f5;
}
.search-input[data-v-3a928260] {
  background: #f8f9fa;
  border-radius: 0.21333rem;
  padding: 0;
}
[data-v-3a928260] .search-input .van-search__content {
  background: transparent;
}
[data-v-3a928260] .search-input .van-field__control {
  background: transparent;
}
.options-container[data-v-3a928260] {
  flex: 1;
  overflow-y: auto;
  max-height: 50vh;
}
.option-item[data-v-3a928260] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.42667rem 0.53333rem;
  border-bottom: 0.02667rem solid #f5f5f5;
  cursor: pointer;
  transition: background-color 0.2s;
}
.option-item[data-v-3a928260]:hover {
  background-color: #f8f9fa;
}
.option-item.selected[data-v-3a928260] {
  background-color: #f0f9ff;
  color: var(--van-primary-color);
}
.option-text[data-v-3a928260] {
  font-size: 0.37333rem;
  color: #333;
}
.option-item.selected .option-text[data-v-3a928260] {
  color: var(--van-primary-color);
  font-weight: 500;
}
.selected-icon[data-v-3a928260] {
  color: var(--van-primary-color);
  font-size: 0.42667rem;
}
.no-result[data-v-3a928260] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 1.06667rem 0.53333rem;
  color: #999;
}
.no-result-icon[data-v-3a928260] {
  font-size: 1.28rem;
  margin-bottom: 0.32rem;
  color: #ddd;
}
.no-result-text[data-v-3a928260] {
  font-size: 0.37333rem;
  color: #999;
}
.picker-footer[data-v-3a928260] {
  display: flex;
  gap: 0.32rem;
  padding: 0.42667rem 0.53333rem;
  border-top: 0.02667rem solid #f5f5f5;
}
.cancel-btn[data-v-3a928260] {
  flex: 1;
  background: #f5f5f5;
  border: none;
  color: #666;
  border-radius: 0.21333rem;
  height: 1.17333rem;
  font-size: 0.42667rem;
}
.confirm-btn[data-v-3a928260] {
  flex: 1;
  background: var(--van-primary-color);
  border: none;
  color: #fff;
  border-radius: 0.21333rem;
  height: 1.17333rem;
  font-size: 0.42667rem;
}

/* 滚动条样式 */
.options-container[data-v-3a928260]::-webkit-scrollbar {
  width: 0.10667rem;
}
.options-container[data-v-3a928260]::-webkit-scrollbar-track {
  background: #f1f1f1;
}
.options-container[data-v-3a928260]::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 0.05333rem;
}
.options-container[data-v-3a928260]::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/AddStudentModal.vue?vue&type=style&index=0&id=1c4d70f3&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.add-student-modal[data-v-1c4d70f3] {
    padding: 0.56rem 0;
    background: #fff;
}
.modal-header[data-v-1c4d70f3] {
    padding: 0 0.56rem;
    margin-bottom: 0.56rem;
}
.modal-title[data-v-1c4d70f3] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #000;
}
.modal-content[data-v-1c4d70f3] {
    height: 75vh;
    overflow: hidden;
}
.form-container[data-v-1c4d70f3] {
    height: 90%;
    overflow-y: auto;
    padding: 0 0.56rem;
}

/* 表单项样式 */
.form-item[data-v-1c4d70f3] {
    margin-bottom: 0.34667rem;
}
.form-label[data-v-1c4d70f3] {
    font-size: 0.32rem;
    color: #4B5563;
    margin-bottom: 0.13333rem;
}
.form-input[data-v-1c4d70f3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.18667rem 0.26667rem;
    border: 0.02667rem solid rgba(229, 231, 235, 1);
    border-radius: 0.18667rem;
}
.input-text[data-v-1c4d70f3] {
    font-size: 0.32rem;
    color: #333;
    flex: 1;
}
.input-text.placeholder[data-v-1c4d70f3] {
    color: #6B7280;
}
.input-icon[data-v-1c4d70f3] {
    color: #6B7280;
    font-size: 0.42667rem;
    margin-left: 0.21333rem;
}

/* 自定义字段样式 */
[data-v-1c4d70f3] .custom-field {
    padding: 0;
    background: transparent;
}
[data-v-1c4d70f3] .custom-field .van-field__control {
    padding: 0.13333rem 0.26667rem;
    border: 0.02667rem solid rgba(229, 231, 235, 1);
    border-radius: 0.18667rem;
    font-size: 0.32rem;
    color: #333;
}
[data-v-1c4d70f3] .custom-field .van-field__control:focus {
    border-color: var(--van-primary-color);
    background: #fff;
}
[data-v-1c4d70f3] .custom-field .van-field__control::placeholder {
    color: #6B7280;
}
[data-v-1c4d70f3] .custom-field .van-field__left-icon {
    color: #6B7280;
    font-size: 0.37333rem;
    font-weight: 500;
}
.currency-input-wrapper[data-v-1c4d70f3] {
    position: relative;
    display: flex;
    align-items: center;
}
.currency-symbol[data-v-1c4d70f3] {
    position: absolute;
    left: 0.26667rem;
    z-index: 1;
    color: #6B7280;
    font-size: 0.37333rem;
    font-weight: 500;
    pointer-events: none;
}
.modal-actions[data-v-1c4d70f3] {
    display: flex;
    gap: 0.32rem;
    padding: 0.21333rem 0.56rem 0.56rem;
}
.cancel-btn[data-v-1c4d70f3] {
    flex: 1;
    background: #f5f5f5;
    border: none;
    color: #4B5563;
    border-radius: 0.10667rem;
    height: 1.01333rem;
    font-size: 0.37333rem;
}
.confirm-btn[data-v-1c4d70f3] {
    flex: 1;
    border: none;
    color: #fff;
    border-radius: 0.10667rem;
    height: 1.01333rem;
    font-size: 0.37333rem;
}

/* 选择器样式 */
[data-v-1c4d70f3] .van-popup {
    border-radius: 0.32rem;
}
[data-v-1c4d70f3] .van-picker__title {
    color: #333;
    font-weight: 500;
}
[data-v-1c4d70f3] .van-picker__confirm {
    color: var(--van-primary-color);
}
[data-v-1c4d70f3] .van-picker__cancel {
    color: #6B7280;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/DailyLimitModal.vue?vue&type=style&index=0&id=648f872b&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.daily-limit-modal[data-v-648f872b] {
    padding: 0.56rem 0;
    background: #fff;
}
.modal-header[data-v-648f872b] {
    padding: 0 0.56rem;
    margin-bottom: 0.56rem;
}
.modal-title[data-v-648f872b] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #000;
}
.modal-content[data-v-648f872b] {
    padding: 0 0.56rem;
}
.description[data-v-648f872b] {
    font-size: 0.37333rem;
    color: #666;
    margin-bottom: 0.53333rem;
    line-height: 1.4;
}
.form-container[data-v-648f872b] {
    margin-bottom: 0.53333rem;
}

/* 表单项样式 */
.form-item[data-v-648f872b] {
    margin-bottom: 0.34667rem;
}
.form-label[data-v-648f872b] {
    font-size: 0.32rem;
    color: #4B5563;
    margin-bottom: 0.13333rem;
}

/* 自定义字段样式 */
[data-v-648f872b] .custom-field {
    padding: 0;
    background: transparent;
}
[data-v-648f872b] .custom-field .van-field__control {
    padding: 0.13333rem 0.26667rem;
    border: 0.02667rem solid rgba(229, 231, 235, 1);
    border-radius: 0.18667rem;
    font-size: 0.32rem;
    color: #333;
}
[data-v-648f872b] .custom-field .van-field__control:focus {
    border-color: var(--van-primary-color);
    background: #fff;
}
[data-v-648f872b] .custom-field .van-field__control::placeholder {
    color: #6B7280;
}
.modal-actions[data-v-648f872b] {
    display: flex;
    gap: 0.32rem;
}
.cancel-btn[data-v-648f872b] {
    flex: 1;
    background: #f5f5f5;
    border: none;
    color: #4B5563;
    border-radius: 0.10667rem;
    height: 1.01333rem;
    font-size: 0.37333rem;
}
.confirm-btn[data-v-648f872b] {
    flex: 1;
    border: none;
    color: #fff;
    border-radius: 0.10667rem;
    height: 1.01333rem;
    font-size: 0.37333rem;
}

/* 选择器样式 */
[data-v-648f872b] .van-popup {
    border-radius: 0.32rem;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/StudentList.vue?vue&type=style&index=0&id=00e5c4af&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.student-list-page[data-v-00e5c4af] {
  padding: 0.34667rem;
}

/* 新增学生按钮 */
.add-student-section[data-v-00e5c4af] {
  margin-bottom: 0.42667rem;
}
.add-student-btn[data-v-00e5c4af] {
  background: #374151;
  color: #fff;
  font-size: 0.42667rem;
  border-radius: 0.10667rem;
  border: none;
  height: 1.28rem;
}
.add-student-btn[data-v-00e5c4af]:active {
  background: #374151;
}

/* 学生卡片 */
.student-cards[data-v-00e5c4af] {
  padding-bottom: 2.13333rem;
}
.empty-state[data-v-00e5c4af] {
  padding: 1.6rem 0;
  text-align: center;
}
.student-card[data-v-00e5c4af] {
  background: #fff;
  border-radius: 0.32rem;
  margin-bottom: 0.42667rem;
  padding: 0.37333rem;
  border-radius: 0.21333rem;
  box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.student-info[data-v-00e5c4af] {
  display: flex;
  align-items: center;
  margin-bottom: 0.42667rem;
}
.avatar[data-v-00e5c4af] {
  width: 1.28rem;
  height: 1.28rem;
  margin-right: 0.42667rem;
}
.info[data-v-00e5c4af] {
  flex: 1;
}
.name-row[data-v-00e5c4af] {
  display: flex;
  align-items: center;
  margin-bottom: 0.05333rem;
}
.name[data-v-00e5c4af] {
  font-size: 0.42667rem;
  font-weight: 600;
  color: #1F2937;
}
.status-tags[data-v-00e5c4af] {
  display: flex;
  gap: 0.21333rem;
  margin-left: 0.32rem;
}
.status-tag[data-v-00e5c4af] {
  font-size: 0.32rem;
  padding: 0.10667rem 0.21333rem;
}
.info-bottom[data-v-00e5c4af] {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.school[data-v-00e5c4af] {
  color: #6B7280;
  font-size: 0.37333rem;
  margin-bottom: 0.05333rem;
}
.class[data-v-00e5c4af] {
  color: #9CA3AF;
  font-size: 0.37333rem;
}
.info-actions[data-v-00e5c4af] {
  display: flex;
  flex-direction: column;
  gap: 0.13333rem;
  margin-left: 0.21333rem;
}
.edit-btn[data-v-00e5c4af],
.unbind-btn[data-v-00e5c4af] {
  flex: 1;
  height: 0.85333rem;
  font-size: 0.32rem;
  border-radius: 0.58667rem;
  padding: 0.10667rem 0.21333rem;
  border: 0.02667rem solid #C9C6C6;
  color: #000000;
}

/* .edit-btn {
  border: 1px solid #4F46E5;
  color: #4F46E5;
}

.unbind-btn {
  border: 1px solid #EF4444;
  color: #EF4444;
} */

/* 卡片操作按钮 */
.card-actions[data-v-00e5c4af] {
  display: flex;
  gap: 0.21333rem;
}
.action-btn[data-v-00e5c4af] {
  flex: 1;
  height: 0.96rem;
  font-size: 0.37333rem;
  border-radius: 0.10667rem;
  padding: 0.21333rem;
}
.book-btn[data-v-00e5c4af] {
  background: var(--van-primary-color);
  border: none;
}
.book-btn[data-v-00e5c4af]:active {
  background: var(--van-primary-color);
}
.face-btn[data-v-00e5c4af] {
  background: #3B82F6;
  border: none;
}
.face-btn[data-v-00e5c4af]:active {
  background: #2563EB;
}
.auth-btn[data-v-00e5c4af] {
  background: #10B981;
  border: none;
}
.auth-btn[data-v-00e5c4af]:active {
  background: #059669;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/ClassSummary.vue?vue&type=style&index=0&id=4b290b48&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.class-summary-page[data-v-4b290b48] {
    background: #fff;
    min-height: calc(100vh - 0.42667rem);
    padding: 0.21333rem;
}
.header-cell[data-v-4b290b48] {
    border-radius: 0.21333rem;
    padding: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}

/* 顶部信息区域 */
.header-section[data-v-4b290b48] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.school-info[data-v-4b290b48] {
    flex: 1;
}
.school-name[data-v-4b290b48] {
    font-size: 0.48rem;
    font-weight: 500;
    margin-bottom: 0.21333rem;
    line-height: 1.2;
}
.class-info[data-v-4b290b48] {
    display: flex;
    align-items: center;
    font-size: 0.37333rem;
    color: #6B7280;
}
.cycle-icon[data-v-4b290b48] {
    margin: 0 0.21333rem;
    color: var(--van-primary-color);
    font-size: 0.42667rem;
    font-weight: 500;
}
.separator[data-v-4b290b48] {
    width: 0.02667rem;
    height: 0.32rem;
    background: #6B7280;
    margin-right: 0.21333rem;
}
.semester[data-v-4b290b48] {
    color: #6b7280;
    font-weight: 400;
}
.action-buttons[data-v-4b290b48] {
    display: flex;
    flex-direction: column;
    gap: 0.21333rem;
}
.forward-btn[data-v-4b290b48],
.add-btn[data-v-4b290b48] {
    border-radius: 0.21333rem;
}

/* 统计卡片区域 */
.stats-section[data-v-4b290b48] {
    padding: 0.42667rem 0 0.21333rem 0;
}
.stats-grid[data-v-4b290b48] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.42667rem;
}
.stat-card[data-v-4b290b48] {
    border-radius: 0.21333rem;
    padding: 0.32rem;
    height: 1.38667rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.stat-number[data-v-4b290b48] {
    font-size: 0.48rem;
    font-weight: 500;
}
.stat-label[data-v-4b290b48] {
    font-size: 0.37333rem;
    color: #6B7280;
    margin-bottom: 0.21333rem;
}
.total[data-v-4b290b48] {
    background: #FEF2F2;
}
.total .stat-number[data-v-4b290b48] {
    color: var(--van-primary-color);
}
.registered[data-v-4b290b48] {
    background: #F0FDF4;
}
.registered .stat-number[data-v-4b290b48] {
    color: #16A34A;
}
.unregistered[data-v-4b290b48] {
    background: #FEFCE8;
}
.unregistered .stat-number[data-v-4b290b48] {
    color: #CA8A04;
}
.subscribed[data-v-4b290b48] {
    background: #EFF6FF;
}
.subscribed .stat-number[data-v-4b290b48] {
    color: #2563EB;
}
.rate[data-v-4b290b48] {
    background: #FAF5FF;
}
.rate .stat-number[data-v-4b290b48] {
    color: #9333EA;
}

/* Tab区域 */
.tab-section[data-v-4b290b48] {
    margin: 0.37333rem 0;
}
.custom-tabs[data-v-4b290b48] {
    --van-tabs-nav-background: transparent;
}
.tab-content[data-v-4b290b48] {
    padding: 0.37333rem 0;
}

/* 学生列表样式 */
.student-list[data-v-4b290b48] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.student-item[data-v-4b290b48] {
    background: #F9FAFB;
    border-radius: 0.21333rem;
    padding: 0.32rem 0.42667rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.student-info[data-v-4b290b48] {
    flex: 1;
}
.student-name[data-v-4b290b48] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.16rem;
}
.student-status[data-v-4b290b48] {
    display: flex;
    gap: 0.21333rem;
}
.status-item[data-v-4b290b48] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
    font-size: 0.37333rem;
    padding: 0.05333rem 0.16rem;
    border-radius: 0.21333rem;
}
.status-item.success[data-v-4b290b48] {
    color: #16A34A;
    background: #F0FDF4;
}
.status-item.error[data-v-4b290b48] {
    color: #CA8A04;
    background: #FEFCE8;
}
.status-item.success-milk[data-v-4b290b48] {
    color: #2563EB;
    background: #EFF6FF;
}
.status-item.error-milk[data-v-4b290b48] {
    color: #9CA3AF;
    background: #f3f7fd;
}
.student-actions[data-v-4b290b48] {
    display: flex;
    gap: 0.21333rem;
}
.action-btn[data-v-4b290b48] {
    font-size: 0.32rem;
    height: 0.74667rem;
    padding: 0 0.21333rem;
    border-radius: 0.10667rem;
}
.face-btn[data-v-4b290b48] {
    background: #3B82F6;
    color: #FFFFFF;
    border-radius: 0.10667rem;
    border: none;
}
.edit-btn[data-v-4b290b48] {
    background: #F3F4F6;
    color: #4B5563;
    border-radius: 0.10667rem;
    border: none;
}

/* 订单列表样式 */
.order-list[data-v-4b290b48] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.order-item[data-v-4b290b48] {
    background: #F9FAFB;
    border-radius: 0.21333rem;
    padding: 0.32rem 0.42667rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.order-price[data-v-4b290b48] {
    font-size: 0.42667rem;
    font-weight: 600;
    color: var(--van-primary-color);
}
.product-info[data-v-4b290b48] {
    display: flex;
    align-items: center;
    font-size: 0.37333rem;
    color: #6B7280;
}
.product-name[data-v-4b290b48] {
    margin-right: 0.21333rem;
}
.order-status[data-v-4b290b48] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.order-status-tag[data-v-4b290b48] {
    font-size: 0.32rem;
    padding: 0.08rem 0.21333rem;
}
.delivery-method[data-v-4b290b48] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
    font-size: 0.32rem;
    color: #4071DE;
}
.delivery-method.machine[data-v-4b290b48] {
    color: #2563EB;
}
.delivery-method.manual[data-v-4b290b48] {
    color: #16A34A;
}

/* 刷脸购买页面样式 */
.date-filter[data-v-4b290b48] {
    margin-bottom: 0.42667rem;
}
.date-filter .van-field[data-v-4b290b48] {
    background: #f9fafb;
    border-radius: 0.21333rem;
    padding: 0.32rem;
}
.date-filter[data-v-4b290b48] .van-field__control {
    text-align: center;
}
.ranking-section[data-v-4b290b48] {
    margin-bottom: 0.42667rem;
}
.ranking-title[data-v-4b290b48] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.32rem;
}
.ranking-list[data-v-4b290b48] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.ranking-item[data-v-4b290b48] {
    display: flex;
    align-items: center;
    gap: 0.32rem;
    padding: 0.32rem;
    background: #f9fafb;
    border-radius: 0.21333rem;
}
.rank-number[data-v-4b290b48] {
    width: 0.85333rem;
    height: 0.85333rem;
    border-radius: 50%;
    background: #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.42667rem;
    font-weight: 500;
    color: #9CA3AF;
}
.rank-number.top-three[data-v-4b290b48] {
    color: var(--van-primary-color);
}
.student-avatar[data-v-4b290b48] {
    width: 1.06667rem;
    height: 1.06667rem;
}
.student-details[data-v-4b290b48] {
    flex: 1;
}
.student-details .student-name[data-v-4b290b48] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.05333rem;
}
.student-details .student-class[data-v-4b290b48] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.purchase-amount[data-v-4b290b48] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: var(--van-primary-color);
}
.total-section[data-v-4b290b48] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.42667rem;
    background: #f9fafb;
    border-radius: 0.21333rem;
}
.total-label[data-v-4b290b48] {
    font-size: 0.42667rem;
    color: #4B5563;
}
.total-amount[data-v-4b290b48] {
    font-size: 0.53333rem;
    font-weight: 500;
    color: var(--van-primary-color);
}

/* 批量添加学生弹框样式 */
.add-student-modal[data-v-4b290b48] {
    padding: 0.66667rem 0.56rem;
}
.modal-header[data-v-4b290b48] {
    margin-bottom: 0.74667rem;
}
.modal-title[data-v-4b290b48] {
    font-size: 0.48rem;
}
.modal-content[data-v-4b290b48] {
    margin-bottom: 0.53333rem;
}
.input-label[data-v-4b290b48] {
    font-size: 0.37333rem;
    color: #6b7280;
    margin-bottom: 0.21333rem;
}
.student-names-input[data-v-4b290b48] {
    margin-bottom: 0.32rem;
    padding: 0;
}
.student-names-input[data-v-4b290b48] .van-field__control {
    min-height: 3.2rem;
    padding: 0.32rem;
    border: 0.02667rem solid #e5e7eb;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    line-height: 1.5;
}
.student-count[data-v-4b290b48] {
    font-size: 0.32rem;
    color: #9ca3af
}
.modal-footer[data-v-4b290b48] {
    display: flex;
    gap: 0.32rem;
}
.cancel-btn[data-v-4b290b48] {
    flex: 1;
    background: #f3f4f6;
    color: #6b7280;
    border: none;
    border-radius: 0.16rem;
    height: 1.06667rem;
}
.confirm-btn[data-v-4b290b48] {
    flex: 1;
    border: none;
    border-radius: 0.16rem;
    height: 1.06667rem;
}

/* 编辑学生弹框样式 */
.edit-student-modal[data-v-4b290b48] {
    padding: 0.66667rem 0.56rem;
}
.edit-student-input[data-v-4b290b48] {
    padding: 0;
}
.edit-student-input[data-v-4b290b48] .van-field__control {
    padding: 0.32rem;
    border: 0.02667rem solid #e5e7eb;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    min-height: 1.17333rem;
}

/* 选择班级弹框样式 */
.select-class-modal[data-v-4b290b48] {
    padding: 0.53333rem;
}
.select-section[data-v-4b290b48] {
    margin-bottom: 0.53333rem;
}
.section-title[data-v-4b290b48] {
    font-size: 0.37333rem;
    color: #6b7280;
    margin-bottom: 0.21333rem;
}
.search-field[data-v-4b290b48] {
    margin-bottom: 0.32rem;
}
.search-field[data-v-4b290b48] .van-field__control {
    background: #f9fafb;
    border-radius: 0.16rem;
    padding: 0.21333rem 0.32rem;
    font-size: 0.37333rem;
}
.grade-grid[data-v-4b290b48] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.21333rem;
}
.grade-item[data-v-4b290b48] {
    padding: 0.21333rem 0.32rem;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    color: #374151;
    background: #f3f4f6;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}
.grade-item.active[data-v-4b290b48] {
    background: var(--van-primary-color);
    color: white;
}
.class-grid[data-v-4b290b48] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.21333rem;
}
.class-item[data-v-4b290b48] {
    padding: 0.21333rem 0.32rem;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    color: #374151;
    background: #f3f4f6;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}
.class-item.active[data-v-4b290b48] {
    background: var(--van-primary-color);
    color: white;
}
.empty-state[data-v-4b290b48] .van-empty {
    padding: 0;
}

/* 日期选择器图标样式 */
.field-icons[data-v-4b290b48] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.calendar-icon[data-v-4b290b48] {
    font-size: 0.48rem;
    color: #6b7280;
    cursor: pointer;
    transition: color 0.2s;
}
.clear-icon[data-v-4b290b48] {
    font-size: 0.42667rem;
    color: #9ca3af;
    cursor: pointer;
    transition: color 0.2s;
    padding: 0.05333rem;
}


/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ContactService.vue?vue&type=style&index=0&id=4bd5a225&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.contact-content[data-v-4bd5a225] {
    padding: 0 0.42667rem 0.53333rem;
}
.contact-item[data-v-4bd5a225] {
    display: flex;
    align-items: flex-start;
    padding: 0.42667rem 0;
    border-bottom: 0.02667rem solid #F6F6F6;
    cursor: pointer;
}
.contact-item[data-v-4bd5a225]:last-child {
    border-bottom: none;
}
.icon-wrapper[data-v-4bd5a225] {
    width: 0.64rem;
    height: 0.64rem;
    margin-right: 0.37333rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.contact-icon[data-v-4bd5a225] {
    font-size: 0.64rem;
}
.info[data-v-4bd5a225] {
    flex: 1;
}
.contact-label[data-v-4bd5a225] {
    font-size: 0.42667rem;
    color: #333;
    margin-bottom: 0.16rem;
}
.phone-number[data-v-4bd5a225] {
    color: var(--van-primary-color);
    font-weight: 500;
}
.contact-time[data-v-4bd5a225] {
    font-size: 0.37333rem;
    color: #979797;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/PageLoading.vue?vue&type=style&index=0&id=2cac872d&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.page-loading[data-v-2cac872d] {
    position: relative;
    min-height: 100vh;
}
.loading-mask[data-v-2cac872d] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.9);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/ErrorPage.vue?vue&type=style&index=0&id=5b73ad92&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.error-page[data-v-5b73ad92] {
    height: calc(100vh - 2.24rem);
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f7f8fa;
}
.error-content[data-v-5b73ad92] {
    text-align: center;
    width: 100%;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/UserCenter.vue?vue&type=style&index=0&id=9ad0388c&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.user-center[data-v-9ad0388c] {
  padding-bottom: calc(env(safe-area-inset-bottom) + 1.70667rem);
}
.user-card[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  background: #fff;
  padding: 0.56rem;
}
.avatar[data-v-9ad0388c] {
  width: 1.38667rem;
  height: 1.38667rem;
  margin-right: 0.42667rem;
}
.user-info[data-v-9ad0388c] {
  flex: 1;
}
.name-row[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.21333rem;
  margin-bottom: 0.21333rem;
}
.name[data-v-9ad0388c] {
  font-size: 0.42667rem;
  font-weight: 500;
  color: #222;
}
.id[data-v-9ad0388c] {
  color: #6B7280;
  font-size: 0.32rem;
}
.face-tag[data-v-9ad0388c] {
  font-size: 0.26667rem;
  padding: 0.05333rem 0.18667rem;
}
.face-action[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  gap: 0.10667rem;
}
.face-icon[data-v-9ad0388c] {
  font-size: 0.34667rem;
}
.face-text[data-v-9ad0388c] {
  color: var(--van-primary-color);
  font-size: 0.26667rem;
}
.role-tag-wrap[data-v-9ad0388c] {
  display: flex;
  gap: 0.16rem;
  flex-wrap: wrap;
}
.role-tag[data-v-9ad0388c] {
  display: inline-block;
  background: var(--van-primary-color);
  color: #fff;
  font-size: 0.32rem;
  border-radius: 266.64rem;
  padding: 0.10667rem 0.29333rem;
}
.profile-completion-card-wrap[data-v-9ad0388c] {
  padding: 0 0.56rem 0.26667rem 0.56rem;
  background: #fff;
}
.profile-completion-card[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  border: 0.02667rem solid rgba(254, 242, 242, 1);
  background: #fff;
  padding: 0.21333rem 0.37333rem;
  border-radius: 0.26667rem;
}
.profile-icon[data-v-9ad0388c] {
  margin-right: 0.32rem;
}
.profile-icon-img[data-v-9ad0388c] {
  font-size: 0.64rem;
}
.profile-content[data-v-9ad0388c] {
  flex: 1;
}
.profile-title[data-v-9ad0388c] {
  font-size: 0.32rem;
  color: #000000;
  margin-bottom: 0.10667rem;
}
.profile-desc[data-v-9ad0388c] {
  font-size: 0.32rem;
  color: #B3AFAF;
}
.profile-arrow[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 0.53333rem;
  height: 0.53333rem;
}
.user-stats[data-v-9ad0388c] {
  display: flex;
  background: #fff;
  padding: 0 0.56rem 0.56rem 0.56rem;
  border-bottom: 0.02667rem solid #f0f0f0;
  gap: 0.37333rem;
}
.stat[data-v-9ad0388c] {
  flex: 1;
  border-radius: 0.26667rem;
  background: #FEF2F2;
  padding: 0.37333rem;
}
.stat-header[data-v-9ad0388c] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.16rem;
}
.stat-label[data-v-9ad0388c] {
  color: #6B7280;
  font-size: 0.32rem;
}
.recharge-btn[data-v-9ad0388c] {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.05333rem;
  color: var(--van-primary-color);
  font-size: 0.26667rem;
}
.recharge-icon[data-v-9ad0388c] {
  margin-top: 0.05333rem;
  font-size: 0.32rem;
}
.stat-value[data-v-9ad0388c] {
  font-size: 0.37333rem;
  font-weight: 500;
  color: var(--van-primary-color);
}
.section-title[data-v-9ad0388c] {
  margin-top: 0.37333rem;
  background: #fff;
  padding: 0.37333rem;
  font-size: 0.42667rem;
  font-weight: 500;
  color: #000000;
}
.grid[data-v-9ad0388c] {
  display: flex;
  flex-wrap: wrap;
  background: #fff;
  padding: 0 0.42667rem;
}
.grid-item[data-v-9ad0388c] {
  width: 25%;
  text-align: center;
  margin-bottom: 0.37333rem;
}
.icon-wrap[data-v-9ad0388c] {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 1.12rem;
  height: 1.12rem;
  margin: 0 auto 0.18667rem auto;
  background: #f8f8f8;
  border-radius: 0.18667rem;
}
.icon-img[data-v-9ad0388c] {
  font-size: 0.53333rem;
}
.grid-label[data-v-9ad0388c] {
  font-size: 0.32rem;
  color: #4B5563;
}
.logout-btn[data-v-9ad0388c] {
  margin-top: 0.21333rem;
  font-size: 0.32rem;
  height: 0.64rem;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/Balance.vue?vue&type=style&index=0&id=7352e592&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.balance-page[data-v-7352e592] {
    min-height: calc(100vh - 0.85333rem);
    background: #fff;
    padding: 0.42667rem;
}
.balance-card[data-v-7352e592] {
    background: var(--van-primary-color);
    border-radius: 0.32rem;
    padding: 0.64rem;
    color: #fff;
}
.balance-label[data-v-7352e592] {
    font-size: 0.37333rem;
    margin-bottom: 0.21333rem;
    opacity: 0.9;
}
.balance-amount[data-v-7352e592] {
    font-size: 0.8rem;
    font-weight: 500;
    margin-bottom: 0.42667rem;
}
.recharge-btn[data-v-7352e592] {
    background: #fff;
    color: var(--van-primary-color);
    padding: 0.16rem 0.58667rem;
    font-size: 0.37333rem;
    font-weight: 500;
    border-radius: 266.64rem;
    height: 0.96rem;
}
.section-title[data-v-7352e592] {
    padding: 0.64rem 0 0.42667rem 0;
    font-size: 0.48rem;
    font-weight: 500;
    color: #000;
}
.transaction-list[data-v-7352e592] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.empty-state[data-v-7352e592] {
    padding: 1.6rem 0;
    text-align: center;
}
.transaction-item[data-v-7352e592] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.42667rem;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.transaction-info[data-v-7352e592] {
    flex: 1;
}
.transaction-desc[data-v-7352e592] {
    font-size: 0.42667rem;
    color: #000000;
    margin-bottom: 0.16rem;
    font-weight: 500;
}
.transaction-time[data-v-7352e592] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.transaction-amount[data-v-7352e592] {
    font-size: 0.42667rem;
    font-weight: 600;
}
.transaction-amount.credit[data-v-7352e592] {
    color: #16A34A;
}
.transaction-amount.debit[data-v-7352e592] {
    color: var(--van-primary-color);
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/Recharge.vue?vue&type=style&index=0&id=165f3761&scoped=true&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.recharge-page[data-v-165f3761] {
    min-height: 100vh;
    background: #fff;
    padding: 0 0.37333rem;
    display: flex;
    flex-direction: column;
}
.amount-grid[data-v-165f3761] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.32rem;
    margin: 0.74667rem 0 0.58667rem 0;
}
.amount-card[data-v-165f3761] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0.02667rem solid #979797;
    border-radius: 0.13333rem;
    width: 2.61333rem;
    height: 2.02667rem;
    transition: all 0.2s ease;
}
.amount-card.selected[data-v-165f3761] {
    border-color: var(--van-primary-color);
    background: #fef2f2;
}
.amount-text[data-v-165f3761] {
    font-size: 0.64rem;
    font-weight: 600;
    color: #2C261F;
}
.check-icon[data-v-165f3761] {
    position: absolute;
    top: -0.02667rem;
    right: -0;
    background: var(--van-primary-color);
    font-size: 0.42667rem;
    font-weight: 500;
    color: #fff;
    border-radius: 0 0.13333rem;
    width: 0.56rem;
    height: 0.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.gift-section[data-v-165f3761] {
    margin-bottom: 0.58667rem;
}
.gift-title[data-v-165f3761] {
    font-size: 0.37333rem;
    font-weight: 500;
    margin-bottom: 0.37333rem;
}
.gift-list[data-v-165f3761] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.gift-item[data-v-165f3761] {
    display: flex;
    align-items: center;
    padding: 0.29333rem;
    background: #FEF2F2;
    border-radius: 0.18667rem;
    position: relative;
}
.gift-icon[data-v-165f3761] {
    margin-right: 0.32rem;
    margin-top: 0.05333rem;
}
.gift-content[data-v-165f3761] {
    flex: 1;
    min-width: 0;
}
.gift-name[data-v-165f3761] {
    font-size: 0.37333rem;
    font-weight: 500;
    line-height: 1.4;
    margin-bottom: 0.16rem;
}
.gift-tag[data-v-165f3761] {
    display: inline-block;
    font-size: 0.26667rem;
    font-weight: 500;
    padding: 0.08rem 0.21333rem;
    border-radius: 0.26667rem;
    margin-left: 0.16rem;
}
.gift-tag.amount-tag[data-v-165f3761] {
    background-color: #C5E2FA;
    color: #10A7FF;
}
.gift-tag.quantity-tag[data-v-165f3761] {
    background-color: #C1E5B8;
    color: #1CD150;
}
.gift-desc[data-v-165f3761] {
    font-size: 0.32rem;
    color: #6B7280;
    line-height: 1.5;
}
.gift-value[data-v-165f3761] {
    font-size: 0.37333rem;
    font-weight: 500;
    color: var(--van-primary-color);
    white-space: nowrap;
}
.notice-section[data-v-165f3761] {
    flex: 1;
    margin-bottom: 0.85333rem;
}
.notice-title[data-v-165f3761] {
    font-size: 0.37333rem;
    font-weight: 500;
    margin-bottom: 0.26667rem;
}
.notice-list[data-v-165f3761] {
    display: flex;
    flex-direction: column;
}
.notice-item[data-v-165f3761] {
    font-size: 0.32rem;
    color: #3C3C3C;
    line-height: 1.8;
}
.recharge-action[data-v-165f3761] {
    padding-bottom: calc(env(safe-area-inset-bottom) + 0.53333rem);
}
.recharge-btn[data-v-165f3761] {
    width: 100%;
    height: 1.06667rem;
    border-radius: 0.53333rem;
    font-size: 0.37333rem;
    font-weight: 600;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/Points.vue?vue&type=style&index=0&id=722b981d&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.points-page[data-v-722b981d] {
  min-height: calc(100vh - 0.85333rem);
  background: #fff;
  padding: 0.42667rem;
}
.points-card[data-v-722b981d] {
  background: #FFA500;
  border-radius: 0.32rem;
  padding: 0.64rem;
  color: #fff;
}
.points-label[data-v-722b981d] {
  font-size: 0.37333rem;
  margin-bottom: 0.21333rem;
  opacity: 0.9;
}
.points-amount[data-v-722b981d] {
  font-size: 0.8rem;
  font-weight: 500;
}
.section-title[data-v-722b981d] {
  padding: 0.64rem 0 0.42667rem 0;
  font-size: 0.48rem;
  font-weight: 500;
  color: #000;
}
.transaction-list[data-v-722b981d] {
  display: flex;
  flex-direction: column;
  gap: 0.42667rem;
}
.transaction-item[data-v-722b981d] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.42667rem;
  border-radius: 0.21333rem;
  box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.transaction-info[data-v-722b981d] {
  flex: 1;
}
.transaction-desc[data-v-722b981d] {
  font-size: 0.42667rem;
  color: #000000;
  margin-bottom: 0.16rem;
  font-weight: 500;
}
.transaction-time[data-v-722b981d] {
  font-size: 0.37333rem;
  color: #6B7280;
}
.transaction-amount[data-v-722b981d] {
  font-size: 0.42667rem;
  font-weight: 600;
}
.transaction-amount.credit[data-v-722b981d] {
  color: #16A34A;
}
.transaction-amount.debit[data-v-722b981d] {
  color: #FF4757;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/Cards.vue?vue&type=style&index=0&id=77b7b219&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.cards-page[data-v-77b7b219] {
    min-height: 100vh;
    background: #fff;
    padding: 0 0.42667rem;
}
.usage-tips[data-v-77b7b219] {
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    background: #fff;
    padding: 0.42667rem;
    margin-bottom: 0.42667rem;
}
.tips-header[data-v-77b7b219] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
    margin-bottom: 0.16rem;
}
.warning-icon[data-v-77b7b219] {
    color: var(--van-primary-color);
    font-size: 0.42667rem;
}
.tips-title[data-v-77b7b219] {
    font-size: 0.4rem;
    font-weight: 500;
    color: #000;
}
.tips-content[data-v-77b7b219] {
    font-size: 0.37333rem;
    color: #333;
    line-height: 1.5;
    margin-bottom: 0.16rem;
}
.tips-action[data-v-77b7b219] {
    color: var(--van-primary-color);
    font-size: 0.37333rem;
    display: flex;
    align-items: center;
    gap: 0.10667rem;
}
.click-icon[data-v-77b7b219] {
    width: 0.48rem;
}
.section-header[data-v-77b7b219] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.42667rem;
}
.section-title[data-v-77b7b219] {
    font-size: 0.48rem;
    font-weight: 500;
    color: #000;
}
.add-card-btn[data-v-77b7b219] {
    border-radius: 0.53333rem;
    padding: 0.16rem 0.42667rem;
    font-size: 0.37333rem;
    height: 0.85333rem;
}
.cards-list[data-v-77b7b219] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.card-item[data-v-77b7b219] {
    border-radius: 0.21333rem;
    background: linear-gradient(90.00deg, rgba(139.00048828125, 0, 0, 1), rgba(185.00250244140625, 27.999000549316406, 27.999000549316406, 1) 100%);
    padding: 0.32rem;
    color: #fff;
    position: relative;
}
.card-header[data-v-77b7b219] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.26667rem;
}
.card-type[data-v-77b7b219],
.card-validity[data-v-77b7b219] {
    font-size: 0.37333rem;
    opacity: 0.8;
}
.card-remaining[data-v-77b7b219] {
    font-size: 0.37333rem;
}
.card-number[data-v-77b7b219] {
    font-size: 0.53333rem;
    font-weight: 500;
    margin-bottom: 0.48rem;
}
.card-footer[data-v-77b7b219] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.history-section[data-v-77b7b219] {
    padding: 0.64rem 0;
}
.history-btn[data-v-77b7b219] {
    width: 100% !important;
    background: #fff !important;
    color: #666 !important;
    border: 0.02667rem solid #ddd !important;
    border-radius: 0.21333rem !important;
    height: 1.17333rem !important;
    font-size: 0.42667rem !important;
}

/* 添加卡片弹窗样式 */
.add-card-dialog[data-v-77b7b219] {
    border-radius: 0.32rem;
}
.add-card-form[data-v-77b7b219] {
    padding: 0.53333rem;
}
.form-item[data-v-77b7b219] {
    margin-bottom: 0.53333rem;
}
.form-label[data-v-77b7b219] {
    display: block;
    font-size: 0.37333rem;
    color: #333;
    margin-bottom: 0.21333rem;
    font-weight: 500;
}
.form-input[data-v-77b7b219] {
    background: #f5f5f5;
    border-radius: 0.21333rem;
}
.form-input[data-v-77b7b219] .van-field__control {
    background: transparent;
}
.form-actions[data-v-77b7b219] {
    display: flex;
    gap: 0.32rem;
    margin-top: 0.64rem;
}
.cancel-btn[data-v-77b7b219] {
    flex: 1;
    background: #f5f5f5 !important;
    color: #666 !important;
    border: none !important;
    border-radius: 0.21333rem !important;
    height: 1.17333rem !important;
    font-size: 0.42667rem !important;
}
.confirm-btn[data-v-77b7b219] {
    flex: 1;
    background: var(--van-primary-color) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 0.21333rem !important;
    height: 1.17333rem !important;
    font-size: 0.42667rem !important;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/CardDetail.vue?vue&type=style&index=0&id=6f74628a&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.card-detail-page[data-v-6f74628a] {
  min-height: calc(100vh - 0.85333rem);
  background: #fff;
  padding: 0.42667rem 0.85333rem;
}
.header-actions[data-v-6f74628a] {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.64rem;
}
.record-btn[data-v-6f74628a] {
  background: #fff !important;
  color: var(--van-primary-color) !important;
  border: 0.02667rem solid var(--van-primary-color) !important;
  border-radius: 0.53333rem !important;
  padding: 0.21333rem 0.42667rem !important;
  font-size: 0.37333rem !important;
  height: 0.96rem !important;
  display: flex !important;
  align-items: center !important;
  gap: 0.10667rem !important;
}
.detail-section[data-v-6f74628a] {
  background: #fff;
  border-radius: 0.21333rem;
  overflow: hidden;
}
.detail-item[data-v-6f74628a] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.42667rem 0;
  border-bottom: 0.02667rem solid #f0f0f0;
}
.detail-item[data-v-6f74628a]:last-child {
  border-bottom: none;
}
.detail-label[data-v-6f74628a] {
  font-size: 0.37333rem;
  color: #666;
  flex-shrink: 0;
}
.detail-value[data-v-6f74628a] {
  font-size: 0.37333rem;
  color: #333;
  text-align: right;
  flex: 1;
  margin-left: 0.42667rem;
}
.detail-value.highlight[data-v-6f74628a] {
  color: var(--van-primary-color);
  font-weight: 500;
}

/* 消费记录弹窗样式 */
.record-popup-content[data-v-6f74628a] {
  padding: 0.64rem 0.53333rem 0.42667rem 0.53333rem;
}
.record-title[data-v-6f74628a] {
  text-align: center;
  font-size: 0.48rem;
  font-weight: 500;
  margin-bottom: 0.48rem;
}
.card-info[data-v-6f74628a] {
  margin-bottom: 0.26667rem;
  /* padding: 0 20px; */
}
.card-info-item[data-v-6f74628a] {
  margin-bottom: 0.16rem;
}
.card-info-label[data-v-6f74628a] {
  color: var(--van-primary-color);
  font-weight: 600;
  text-align: right;
  padding-right: 0.21333rem;
}
.card-info-value[data-v-6f74628a] {
  color: var(--van-primary-color);
  font-weight: 600;
}
.record-item[data-v-6f74628a] {
  padding: 0.26667rem 0;
}
.record-item[data-v-6f74628a]::after {
  left: 0;
  right: 0;
}

/* :deep(.record-popup-content) {
  height: 70vh;
  overflow: hidden;
  padding: 24px 0;
} */

/* .record-list {
  height: 68%;
  overflow: auto;
  padding: 0 20px;
} */
.record-content[data-v-6f74628a] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
}
.record-left[data-v-6f74628a] {
  flex: 1;
}
.record-id[data-v-6f74628a] {
  font-weight: 600;
  color: #333;
  font-size: 0.37333rem;
  margin-bottom: 0.10667rem;
}
.record-time[data-v-6f74628a] {
  color: #bbb;
  font-size: 0.34667rem;
}
.record-amount[data-v-6f74628a] {
  color: #333;
  font-size: 0.48rem;
  font-weight: 600;
  text-align: right;
}
.record-footer[data-v-6f74628a] {
  text-align: center;
  margin-top: 0.53333rem;
}
.close-btn[data-v-6f74628a] {
  width: 3.2rem;
  border-radius: 0.53333rem;
  background: #f5f5f5;
  border: none;
  color: #666;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/CompletedCards.vue?vue&type=style&index=0&id=dab4a2dc&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.completed-cards-page[data-v-dab4a2dc] {
  min-height: calc(100vh - 0.85333rem);
  background: #fff;
  padding: 0.42667rem;
}
.page-header[data-v-dab4a2dc] {
  margin-bottom: 0.53333rem;
}
.total-cards[data-v-dab4a2dc] {
  font-size: 0.42667rem;
  color: #333;
  font-weight: 500;
}
.cards-container[data-v-dab4a2dc] {
  display: flex;
  flex-direction: column;
  gap: 0.42667rem;
}
.card-item[data-v-dab4a2dc] {
  border-radius: 0.32rem;
  overflow: hidden;
  box-shadow: 0 0.05333rem 0.21333rem rgba(0, 0, 0, 0.1);
  cursor: pointer;
  transition: transform 0.2s ease;
}
.card-item[data-v-dab4a2dc]:hover {
  transform: translateY(-0.05333rem);
}
.card-item[data-v-dab4a2dc]:active {
  transform: translateY(0);
}
.card-top[data-v-dab4a2dc] {
  background: linear-gradient(135deg, #8b8b8b, #a0a0a0);
  padding: 0.53333rem 0.42667rem;
  color: #fff;
}
.bottles-info[data-v-dab4a2dc] {
  display: flex;
  align-items: center;
  gap: 0.21333rem;
}
.bottles-label[data-v-dab4a2dc] {
  font-size: 0.37333rem;
  opacity: 0.9;
}
.bottles-count[data-v-dab4a2dc] {
  font-size: 0.85333rem;
  font-weight: 600;
  color: #fff;
}
.card-bottom[data-v-dab4a2dc] {
  background: linear-gradient(135deg, #666666, #7a7a7a);
  padding: 0.42667rem;
  color: #fff;
}
.card-info[data-v-dab4a2dc] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.37333rem;
}
.card-number[data-v-dab4a2dc],
.bind-time[data-v-dab4a2dc] {
  opacity: 0.9;
}
.empty-state[data-v-dab4a2dc] {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 8rem;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/DistributionList.vue?vue&type=style&index=0&id=7282c27c&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.distribution-page[data-v-7282c27c] {
    background: #fff;
    padding: 0.42667rem;
    min-height: calc(100vh - 0.85333rem);
}
.header-fixed[data-v-7282c27c] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background: #fff;
    z-index: 100;
    padding: 0.42667rem;
}
.header-section[data-v-7282c27c] {
    background: #FEF2F2;
    border-radius: 0.21333rem;
    padding: 0.32rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.42667rem;
}
.student-list[data-v-7282c27c] {
    padding-top: 3.73333rem;
    padding-bottom: 2.93333rem;
}
.school-info[data-v-7282c27c] {
    flex: 1;
}
.school-name[data-v-7282c27c] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #000000;
    margin-bottom: 0.10667rem;
}
.class-name[data-v-7282c27c] {
    font-size: 0.37333rem;
    color: #4B5563;
}
.date-btn[data-v-7282c27c] {
    background: #fff;
    color: #4B5563;
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.21333rem;
    font-size: 0.37333rem;
    height: 0.90667rem;
}
.date-btn[data-v-7282c27c] .van-button__text {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
}
.search-bar[data-v-7282c27c] {
    background: #fff;
    padding: 0;
}
.search-bar[data-v-7282c27c] .van-search__content {
    background: #fff;
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.21333rem;
}
.student-item[data-v-7282c27c] {
    background: #fff;
    border-radius: 0.21333rem;
    padding: 0.32rem;
    margin-bottom: 0.32rem;
    display: flex;
    align-items: center;
    gap: 0.32rem;
    box-shadow: 0 0.05333rem 0.21333rem rgba(0, 0, 0, 0.05);
}
.student-item.selected[data-v-7282c27c] {
    background: #FEF2F2;
}
.student-checkbox[data-v-7282c27c] {
    flex-shrink: 0;
}
[data-v-7282c27c] .van-checkbox__icon .van-icon {
    border-radius: 0.13333rem;
}
.item-icon[data-v-7282c27c],
.item-icon[data-v-7282c27c] .van-icon__image {
    width: 0.53333rem;
    height: 0.53333rem;
}
.student-info[data-v-7282c27c] {
    flex: 1;
}
.student-name[data-v-7282c27c] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #000000;
    margin-bottom: 0.10667rem;
}
.item-type[data-v-7282c27c] {
    font-size: 0.37333rem;
}
.item-type.milk[data-v-7282c27c] {
    color: #48BBEC;
}
.item-type.yogurt[data-v-7282c27c] {
    color: #EC4899;
}
.status-btn[data-v-7282c27c] {
    padding: 0.16rem 0.26667rem;
    border-radius: 266.64rem;
    font-size: 0.37333rem;
}
.status-btn.collected[data-v-7282c27c] {
    background: #DCFCE7;
    color: #16A34A;
}
.status-btn.canceled[data-v-7282c27c] {
    background: #555453;
    color: #B1B5B3;
}
.status-btn.notCollected[data-v-7282c27c] {
    background: #FEF9C3;
    color: #CA8A04;
}
.footer-section[data-v-7282c27c] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: #fff;
    padding: 0.42667rem;
    border-top: 0.02667rem solid #f0f0f0;
    z-index: 100;
}
.confirm-btn[data-v-7282c27c] {
    width: 100%;
    height: 1.38667rem;
    border-radius: 0.10667rem;
    font-size: 0.48rem;
    font-weight: 500;
}
.selection-info[data-v-7282c27c] {
    text-align: center;
    font-size: 0.37333rem;
    color: #6B7280;
    margin: 0.21333rem 0;
}
.empty-state[data-v-7282c27c] {
    padding-top: 2.66667rem;
    text-align: center;
}
.cycle-icon[data-v-7282c27c] {
    margin-left: 0.21333rem;
    color: var(--van-primary-color);
    font-size: 0.42667rem;
    font-weight: 500;
}

/* 选择班级弹框样式 */
.select-class-modal[data-v-7282c27c] {
    padding: 0.53333rem;
}
.modal-header[data-v-7282c27c] {
    text-align: center;
    margin-bottom: 0.53333rem;
}
.modal-title[data-v-7282c27c] {
    font-size: 0.48rem;
    font-weight: 500;
    color: #000;
}
.modal-content[data-v-7282c27c] {
    margin-bottom: 0.53333rem;
}
.select-section[data-v-7282c27c] {
    margin-bottom: 0.53333rem;
}
.section-title[data-v-7282c27c] {
    font-size: 0.37333rem;
    color: #6B7280;
    margin-bottom: 0.32rem;
}
.grade-grid[data-v-7282c27c] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.21333rem;
}
.grade-item[data-v-7282c27c] {
    padding: 0.21333rem 0.32rem;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    color: #374151;
    background: #f3f4f6;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}
.grade-item.active[data-v-7282c27c] {
    background: var(--van-primary-color);
    color: white;
}
.class-grid[data-v-7282c27c] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.21333rem;
}
.class-item[data-v-7282c27c] {
    padding: 0.21333rem 0.32rem;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    color: #374151;
    background: #f3f4f6;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}
.class-item.active[data-v-7282c27c] {
    background: var(--van-primary-color);
    color: white;
}
.modal-footer[data-v-7282c27c] {
    display: flex;
    gap: 0.32rem;
}
.select-class-modal .cancel-btn[data-v-7282c27c],
.select-class-modal .confirm-btn[data-v-7282c27c] {
    flex: 1;
    height: 1.06667rem;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    border: none;
}
.cancel-btn[data-v-7282c27c] {
    background: #f5f5f5;
    color: #6B7280;
    border: 0.02667rem solid #e5e7eb;
}


/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/NetworkBinding.vue?vue&type=style&index=0&id=8e3a689e&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.network-binding-page[data-v-8e3a689e] {
    background: #fff;
    min-height: calc(100vh - 0.85333rem);
    padding: 0.42667rem 0.29333rem;
}
.school-selection-section[data-v-8e3a689e] {
    margin-bottom: 0.42667rem;
}
.section-title[data-v-8e3a689e] {
    font-size: 0.37333rem;
    color: #4B5563;
    margin-bottom: 0.21333rem;
}
.school-input-row[data-v-8e3a689e] {
    display: flex;
    align-items: center;
    gap: 0.26667rem;
}
.school-input[data-v-8e3a689e] {
    border-radius: 0.21333rem;
    border: 0.02667rem solid rgba(229, 231, 235, 1);
    padding: 0.16rem 0.32rem;
    flex: 1;
}
.school-input[data-v-8e3a689e] .van-field__control {
    background: transparent;
}
.forward-btn[data-v-8e3a689e] {
    padding: 0.45333rem 0.4rem;
    font-size: 0.37333rem;
    border-radius: 0.24rem;
}
.binding-stats[data-v-8e3a689e] {
    display: flex;
    gap: 0.32rem;
    padding: 0.42667rem;
    margin-bottom: 0.42667rem;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.stat-card[data-v-8e3a689e] {
    flex: 1;
    padding: 0.42667rem;
    border-radius: 0.21333rem;
}
.stat-card.bound[data-v-8e3a689e] {
    background: #F0FDF4;
}
.stat-card.unbound[data-v-8e3a689e] {
    background: #FEFCE8;
}
.stat-label[data-v-8e3a689e] {
    font-size: 0.37333rem;
    color: #6B7280;
    margin-bottom: 0.16rem;
}
.stat-number[data-v-8e3a689e] {
    font-size: 0.48rem;
    font-weight: 500;
}
.stat-card.bound .stat-number[data-v-8e3a689e] {
    color: #16A34A;
}
.stat-card.unbound .stat-number[data-v-8e3a689e] {
    color: #CA8A04;
}
.grade-sections[data-v-8e3a689e] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.grade-section[data-v-8e3a689e] {
    border-radius: 0.21333rem;
    overflow: hidden;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.grade-header[data-v-8e3a689e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.32rem;
    background: #e0efed;
}
.grade-title[data-v-8e3a689e] {
    font-size: 0.42667rem;
    font-weight: 500;
}
.expand-icon[data-v-8e3a689e] {
    color: #9CA3AF;
    font-size: 0.42667rem;
}
.class-item[data-v-8e3a689e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.32rem;
    border-bottom: 0.02667rem solid #F3F4F6;
}
.class-item[data-v-8e3a689e]:last-child {
    border-bottom: none;
}
.class-info[data-v-8e3a689e] {
    flex: 1;
}
.class-name[data-v-8e3a689e] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.10667rem;
}
.class-details[data-v-8e3a689e] {
    font-size: 0.37333rem;
    color: #4B5563;
}
.class-actions[data-v-8e3a689e] {
    margin-left: 0.42667rem;
}
.unbind-btn[data-v-8e3a689e] {
    border: 0.02667rem solid #D1D5DB;
    color: #4B5563;
    padding: 0.18667rem 0.4rem;
    font-size: 0.37333rem;
    border-radius: 266.64rem;
}
.bind-btn[data-v-8e3a689e] {
    padding: 0.18667rem 0.4rem;
    font-size: 0.37333rem;
    border-radius: 266.64rem;
}

/* 绑定弹框样式 */
.bind-modal[data-v-8e3a689e] {
    background: #fff;
    border-radius: 0.32rem;
    overflow: hidden;
    padding: 0.56rem;
}
.modal-header[data-v-8e3a689e] {
    margin-bottom: 0.56rem;
}
.modal-title[data-v-8e3a689e] {
    font-size: 0.42667rem;
    font-weight: 500;
}
.input-group[data-v-8e3a689e] {
    margin-bottom: 0.37333rem;
}
.input-group[data-v-8e3a689e]:last-child {
    margin-bottom: 0;
}
.input-label[data-v-8e3a689e] {
    font-size: 0.32rem;
    color: #4b5563;
    margin-bottom: 0.10667rem;
}
.bind-input[data-v-8e3a689e] {
    font-size: 0.32rem;
    border-radius: 0.18667rem;
    border: 0.02667rem solid #e5e7eb;
    padding: 0.24rem;
    line-height: unset;
}
.modal-footer[data-v-8e3a689e] {
    display: flex;
    gap: 0.32rem;
    margin-top: 0.56rem;
}
.cancel-btn[data-v-8e3a689e],
.confirm-btn[data-v-8e3a689e] {
    flex: 1;
    height: 1.01333rem;
    font-size: 0.37333rem;
    border: none;
}
.cancel-btn[data-v-8e3a689e] {
    background: #f3f4f6;
    color: #4b5563;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/UserQuery.vue?vue&type=style&index=0&id=452ef273&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.user-query-page[data-v-452ef273] {
    background: #fff;
    min-height: calc(100vh - 0.42667rem);
    padding: 0 0.42667rem 0.42667rem 0.42667rem;
}
.search-section[data-v-452ef273] {
    padding: 0.42667rem 0.42667rem 0.64rem 0.42667rem;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    background: #fff;
}
.search-bar[data-v-452ef273] {
    border-radius: 0.21333rem;
    border: 0.02667rem solid #E5E7EB;
    color: #6B7280;
    padding: 0;
}
[data-v-452ef273] .van-search__content {
    background: transparent;
    padding: 0.13333rem 0.29333rem;
}
.user-list[data-v-452ef273] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
    padding-top: 1.86667rem;
}
.user-item[data-v-452ef273] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.42667rem;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.user-info[data-v-452ef273] {
    flex: 1;
}
.user-name[data-v-452ef273] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.10667rem;
}
.user-id[data-v-452ef273] {
    font-size: 0.37333rem;
    color: #6B7280;
    margin-bottom: 0.10667rem;
}
.user-status[data-v-452ef273] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.21333rem;
}
.user-role[data-v-452ef273] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.face-status-tag[data-v-452ef273] {
    font-size: 0.32rem;
    padding: 0.08rem 0.21333rem;
}
.user-actions[data-v-452ef273] {
    margin-left: auto;
}
.modify-btn[data-v-452ef273] {
    padding: 0.18667rem 0.37333rem;
    font-size: 0.37333rem;
    border-radius: 0.21333rem;
}

/* 修改弹框样式 */
.modify-modal[data-v-452ef273] {
    background: #fff;
    border-radius: 0.32rem;
    overflow: hidden;
    padding: 0.56rem;
}
.modal-header[data-v-452ef273] {
    margin-bottom: 0.56rem;
}
.modal-title[data-v-452ef273] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
}
.modal-content[data-v-452ef273] {
    margin-bottom: 0.56rem;
}
.modal-actions[data-v-452ef273] {
    margin-bottom: 0.56rem;
    text-align: center;
}
.delete-face-btn[data-v-452ef273] {
    height: 0.90667rem;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 0.21333rem;
    width: 100%;
    border-radius: 0.21333rem;
}
.input-group[data-v-452ef273] {
    margin-bottom: 0.37333rem;
}
.input-group[data-v-452ef273]:last-child {
    margin-bottom: 0;
}
.input-label[data-v-452ef273] {
    font-size: 0.32rem;
    color: #4b5563;
    margin-bottom: 0.10667rem;
}
.modify-input[data-v-452ef273] {
    font-size: 0.32rem;
    border-radius: 0.18667rem;
    border: 0.02667rem solid #e5e7eb;
    padding: 0.24rem;
    line-height: unset;
}
.face-status-display[data-v-452ef273] {
    margin-top: 0.21333rem;
}
.face-status-display .face-status-tag[data-v-452ef273] {
    font-size: 0.37333rem;
    padding: 0.21333rem 0.32rem;
    display: inline-flex;
    align-items: center;
    gap: 0.21333rem;
    border-radius: 0.21333rem;
}
.face-status-display .face-status-tag .van-icon[data-v-452ef273] {
    font-size: 0.48rem;
}
.modal-footer[data-v-452ef273] {
    display: flex;
    gap: 0.32rem;
    margin-top: 0.56rem;
}
.cancel-btn[data-v-452ef273],
.save-btn[data-v-452ef273] {
    flex: 1;
    height: 1.01333rem;
    font-size: 0.37333rem;
    border: none;
}
.cancel-btn[data-v-452ef273] {
    background: #f3f4f6;
    color: #4b5563;
}
.empty-data[data-v-452ef273] {
    padding-top: 1.6rem;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/OrderStatistics.vue?vue&type=style&index=0&id=05ec2147&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.order-statistics-page[data-v-05ec2147] {
    background: #fff;
    min-height: 100vh;
    padding: 0 0.42667rem;
}
.header-section[data-v-05ec2147] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.53333rem;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    padding: 0.42667rem;
}
.school-name[data-v-05ec2147] {
    font-size: 0.48rem;
    font-weight: 500;
}
.switch-school-btn[data-v-05ec2147] {
    height: 0.90667rem;
    font-size: 0.37333rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.10667rem;
    border-radius: 0.21333rem;
}
.date-filter-section[data-v-05ec2147] {
    margin-bottom: 0.42667rem;
}
.date-tabs[data-v-05ec2147] {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.42667rem;
    flex-wrap: wrap;
}
.date-tab[data-v-05ec2147] {
    height: 0.96rem;
    padding: 0.21333rem 0.42667rem;
    font-size: 0.37333rem;
    border-radius: 266.64rem;
    background: #F3F4F6;
    color: #4B5563;
    border: none;
}
.date-tab.active[data-v-05ec2147] {
    background: var(--van-primary-color);
    color: #fff;
}
.custom-date-range[data-v-05ec2147] {
    margin-top: 0.32rem;
}
.date-input[data-v-05ec2147] {
    border-radius: 0.21333rem;
    border: 0.02667rem solid #e9ecef;
    text-align: center;
}
.date-input[data-v-05ec2147] .van-field__control {
    background: transparent;
    text-align: center;
}
.stats-section[data-v-05ec2147] {
    margin-bottom: 0.64rem;
}
.stats-grid[data-v-05ec2147] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
}
.stat-card[data-v-05ec2147] {
    padding: 0.32rem;
    border-radius: 0.21333rem;
    width: 24%;
}
.stat-card.retail[data-v-05ec2147] {
    background: #FEF2F2;
}
.stat-card.milk[data-v-05ec2147] {
    background: #F0FDF4;
}
.stat-card.refund[data-v-05ec2147] {
    background: #FEFCE8;
}
.stat-title[data-v-05ec2147] {
    font-size: 0.37333rem;
    color: #666;
    margin-bottom: 0.21333rem;
}
.stat-value[data-v-05ec2147] {
    font-size: 0.42667rem;
    font-weight: 500;
}
.stat-card.retail .stat-value[data-v-05ec2147] {
    color: #8B0000;
}
.stat-card.milk .stat-value[data-v-05ec2147] {
    color: #16A34A;
}
.stat-card.refund .stat-value[data-v-05ec2147] {
    color: #CA8A04;
}
.ranking-section[data-v-05ec2147] {
    padding-bottom: 0.53333rem;
}
.section-title[data-v-05ec2147] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
    margin-bottom: 0.42667rem;
}
.machine-list[data-v-05ec2147] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.machine-item[data-v-05ec2147] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.42667rem;
    background: #fff;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    border: 0.02667rem solid #f3f4f6;
}
.machine-info[data-v-05ec2147] {
    display: flex;
    align-items: center;
    gap: 0.32rem;
    flex: 1;
}
.machine-image[data-v-05ec2147] {
    width: 1.28rem;
    height: 1.28rem;
    border-radius: 0.21333rem;
    flex-shrink: 0;
}
.machine-details[data-v-05ec2147] {
    flex: 1;
}
.machine-name[data-v-05ec2147] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
    margin-bottom: 0.10667rem;
}
.machine-location[data-v-05ec2147] {
    font-size: 0.37333rem;
    color: #666;
    margin-bottom: 0.10667rem;
}
.machine-sales[data-v-05ec2147] {
    display: flex;
    align-items: center;
    gap: 0.32rem;
}
.sales-amount[data-v-05ec2147] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: var(--van-primary-color);
}
.rank-number[data-v-05ec2147] {
    font-size: 0.64rem;
    font-weight: 600;
    color: #d1d5db;
    width: 0.85333rem;
    text-align: center;
}

/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/NetworkPerformance.vue?vue&type=style&index=0&id=e33c9448&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.network-performance-page[data-v-e33c9448] {
    background: #fff;
    min-height: calc(100vh - 0.37333rem);
    padding: 0.37333rem;
}
.manager-header[data-v-e33c9448] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.37333rem;
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    margin-bottom: 0.56rem;
}
.manager-info[data-v-e33c9448] {
    flex: 1;
}
.manager-name[data-v-e33c9448] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.16rem;
    display: flex;
    align-items: center;
    gap: 0.18667rem;
}
.manager-id[data-v-e33c9448],
.outlet-count[data-v-e33c9448] {
    font-size: 0.32rem;
    color: #6B7280;
}
.semester-btn[data-v-e33c9448] {
    font-size: 0.32rem;
    border-radius: 0.21333rem;
}
.stats-section[data-v-e33c9448] {
    margin-bottom: 0.56rem;
}
.stats-grid[data-v-e33c9448] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.32rem;
}
.stat-card[data-v-e33c9448] {
    border-radius: 0.18667rem;
    padding: 0.29333rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.stat-card.total[data-v-e33c9448] {
    background: #FEF2F2;
}
.stat-card.subscribed[data-v-e33c9448] {
    background: #F0FDF4;
}
.stat-card.amount[data-v-e33c9448] {
    background: #EFF6FF;
}
.stat-card.copies[data-v-e33c9448] {
    background: #FAF5FF;
}
.stat-card.rate[data-v-e33c9448] {
    background: #FEFCE8;
}
.stat-card.target[data-v-e33c9448] {
    background: #EEF2FF;
}
.stat-card.collected[data-v-e33c9448] {
    background: #F0FDF4;
}
.stat-card.uncollected[data-v-e33c9448] {
    background: #FEF2F2;
}
.stat-title[data-v-e33c9448] {
    font-size: 0.32rem;
    color: #6B7280;
    margin-bottom: 0.26667rem;
}
.stat-value[data-v-e33c9448] {
    font-size: 0.42667rem;
    font-weight: 500;
}
.stat-card.total .stat-value[data-v-e33c9448] {
    color: var(--van-primary-color);
}
.stat-card.subscribed .stat-value[data-v-e33c9448] {
    color: #16A34A;
}
.stat-card.amount .stat-value[data-v-e33c9448] {
    color: #2563EB;
}
.stat-card.copies .stat-value[data-v-e33c9448] {
    color: #9333EA;
}
.stat-card.rate .stat-value[data-v-e33c9448] {
    color: #CA8A04;
}
.stat-card.target .stat-value[data-v-e33c9448] {
    color: #4F46E5;
}
.stat-card.collected .stat-value[data-v-e33c9448] {
    color: #16A34A;
}
.stat-card.uncollected .stat-value[data-v-e33c9448] {
    color: #DC2626;
}
.tab-section[data-v-e33c9448] {
    margin-bottom: 0.53333rem;
}
.performance-tabs[data-v-e33c9448] {
    background: #fff;
    border-radius: 0.32rem;
}
[data-v-e33c9448] .van-tabs__nav {
    padding: 0;
}
.tab-content[data-v-e33c9448] {
    padding: 0.42667rem 0;
}
.school-list[data-v-e33c9448] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.school-item[data-v-e33c9448] {
    background: #fff;
    border-radius: 0.32rem;
    padding: 0.42667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.school-header[data-v-e33c9448] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.26667rem;
}
.school-name[data-v-e33c9448] {
    font-size: 0.37333rem;
    font-weight: 500;
}
.target-info[data-v-e33c9448],
.detail-item[data-v-e33c9448] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
}
.target-label[data-v-e33c9448],
.detail-label[data-v-e33c9448] {
    font-size: 0.32rem;
    color: #6B7280;
}
.target-value[data-v-e33c9448] {
    font-size: 0.32rem;
    color: var(--van-primary-color);
}
.school-details[data-v-e33c9448] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.detail-value[data-v-e33c9448] {
    font-size: 0.32rem;
    font-weight: 500;
}
.detail-value.subscribed[data-v-e33c9448] {
    color: var(--van-primary-color);
}
.detail-value.rate[data-v-e33c9448] {
    color: #16A34A;
}
.face-purchase-stats[data-v-e33c9448] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.face-school-item[data-v-e33c9448] {
    background: #fff;
    border-radius: 0.32rem;
    padding: 0.42667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.face-school-name[data-v-e33c9448] {
    font-size: 0.37333rem;
    font-weight: 500;
    margin-bottom: 0.26667rem;
}
.face-stats-grid[data-v-e33c9448] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.32rem;
}
.face-stat-item[data-v-e33c9448] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
}
.face-stat-label[data-v-e33c9448] {
    font-size: 0.32rem;
    color: #6B7280;
}
.face-stat-value[data-v-e33c9448] {
    font-size: 0.32rem;
    font-weight: 500;
}
.face-stat-value.sales-quantity[data-v-e33c9448] {
    color: var(--van-primary-color);
}
.face-stat-value.sales-amount[data-v-e33c9448] {
    color: #2563EB;
}
.face-stat-value.collected-people[data-v-e33c9448] {
    color: #16A34A;
}
.face-stat-value.collection-rate[data-v-e33c9448] {
    color: #9333EA;
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/MyOrders.vue?vue&type=style&index=0&id=3b9ce12a&scoped=true&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.my-orders-page[data-v-3b9ce12a] {
    background: #fff;
    min-height: 100vh;
}
[data-v-3b9ce12a] .van-tabs__wrap {
    padding: 0.37333rem 0;
    position: sticky;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
}
[data-v-3b9ce12a] .van-tabs--line .van-tabs__wrap {
    background: #fff;
}
.orders-content[data-v-3b9ce12a] {
    padding: 0 0.26667rem 0.26667rem 0.26667rem;
}
.order-card[data-v-3b9ce12a] {
    border-radius: 0.21333rem;
    padding: 0.42667rem;
    margin-bottom: 0.42667rem;
    box-shadow: 0 0.05333rem 0.21333rem rgba(0, 0, 0, 0.1);
}
.student-info[data-v-3b9ce12a] {
    margin-bottom: 0.42667rem;
}
.student-name[data-v-3b9ce12a] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.10667rem;
}
.student-details[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.package-section[data-v-3b9ce12a] {
    margin-bottom: 0.42667rem;
}
.section-title[data-v-3b9ce12a] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.32rem;
}
.milk-week-list[data-v-3b9ce12a] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.26667rem;
}
.milk-week-item[data-v-3b9ce12a] {
    display: flex;
    justify-content: center;
}
.milk-week-card[data-v-3b9ce12a] {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.18667rem;
    padding: 0.21333rem 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 1.44rem;
    position: relative;
}
.milk-week-title[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    font-weight: 500;
}
.milk-type-tag[data-v-3b9ce12a] {
    position: absolute;
    top: 0.90667rem;
    right: 0.05333rem;
    color: #fff;
    font-size: 0.29333rem;
    font-weight: 500;
    border-radius: 50%;
    width: 0.56rem;
    height: 0.56rem;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.milk-icon[data-v-3b9ce12a] {
    width: 0.42667rem;
    height: 0.85333rem;
    margin: 0.48rem 0;
    display: block;
}
.milk-label[data-v-3b9ce12a] {
    font-size: 0.29333rem;
    font-weight: 500;
}
.order-details[data-v-3b9ce12a] {
    border-top: 0.02667rem solid #E5E7EB;
    padding-top: 0.42667rem;
}
.order-details .van-row[data-v-3b9ce12a] {
    margin-bottom: 0.21333rem;
}
.order-details .van-row[data-v-3b9ce12a]:last-child {
    margin-bottom: 0;
}
.detail-item[data-v-3b9ce12a] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.detail-label[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.detail-value[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #1F2937;
    font-weight: 500;
}
.detail-value.price[data-v-3b9ce12a] {
    color: var(--van-primary-color);
}
.view-btn-container[data-v-3b9ce12a] {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.32rem;
}
.view-details-btn[data-v-3b9ce12a] {
    border: none;
    border-radius: 0.16rem;
    font-size: 0.32rem;
    padding: 0.16rem 0.32rem;
}

/* 售卖机订单样式 */
.vending-order-card[data-v-3b9ce12a] {
    background: #fff;
    border-radius: 0.21333rem;
    margin-bottom: 0.42667rem;
    padding: 0.42667rem;
    box-shadow: 0 0.05333rem 0.21333rem rgba(0, 0, 0, 0.03);
}
.vending-order-header[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #717070;
    margin-bottom: 0.32rem;
    font-weight: 600;
    padding-bottom: 0.32rem;
    border-bottom: 0.02667rem solid rgba(246, 246, 246, 1);
}
.vending-order-row[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #333;
    margin-bottom: 0.21333rem;
    line-height: 1.5;
}
.vending-order-row b[data-v-3b9ce12a] {
    font-weight: 500;
    color: #222;
}
.empty-state[data-v-3b9ce12a] {
    padding: 1.6rem 0;
    text-align: center;
}

/* 日期筛选样式 */
.date-filter[data-v-3b9ce12a] {
    background: #fff;
    padding: 0 0.16rem 0.32rem 0.16rem;
    display: flex;
    align-items: center;
    gap: 0.26667rem;
    border-bottom: 0.02667rem solid #f0f0f0;
    position: sticky;
    top: 0.96rem;
    z-index: 10;
}
.filter-tabs[data-v-3b9ce12a] {
    display: flex;
    flex-shrink: 0;
    gap: 0.21333rem;
}
.filter-tab[data-v-3b9ce12a] {
    font-size: 0.37333rem;
    color: #666;
    padding: 0.16rem 0.32rem;
    border-radius: 0.42667rem;
    cursor: pointer;
    transition: all 0.3s ease;
}
.filter-tab.active[data-v-3b9ce12a] {
    background: #8B0000;
    color: #fff;
}
.date-picker[data-v-3b9ce12a] {
    position: relative;
    flex: 1;
}
.date-range[data-v-3b9ce12a] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.21333rem 0.32rem;
    background: #f6f6f6;
    border-radius: 0.16rem;
    font-size: 0.37333rem;
    color: #333;
    cursor: pointer;
}
.date-range .van-icon[data-v-3b9ce12a] {
    color: #999;
    font-size: 0.42667rem;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/PauseDelivery.vue?vue&type=style&index=0&id=36ec3f0a&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.pause-popup[data-v-36ec3f0a] {
    padding: 0.26667rem;
}
.date-select[data-v-36ec3f0a] {
    display: flex;
    align-items: center;
    padding: 0.26667rem;
    background: #F5F5F5;
    border-radius: 0.13333rem;
}
.date-select .label[data-v-36ec3f0a] {
    font-size: 0.37333rem;
    color: #333;
    margin-right: 0.26667rem;
}
.date-select .date-range[data-v-36ec3f0a] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 0.37333rem;
    color: #666;
}
.date-select .date-range .van-icon[data-v-36ec3f0a] {
    color: #999;
    font-size: 0.45333rem;
}
.pause-notice[data-v-36ec3f0a] {
    margin-top: 0.42667rem;
    padding: 0.26667rem;
    border-radius: 0.13333rem;
    background: #F5F5F5;
}
.pause-notice .notice-title[data-v-36ec3f0a] {
    font-size: 0.37333rem;
    font-weight: 500;
    color: #333;
    margin-bottom: 0.26667rem;
}
.pause-notice .notice-list .notice-item[data-v-36ec3f0a] {
    font-size: 0.32rem;
    color: #666;
    line-height: 1.8;
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/OrderDetail.vue?vue&type=style&index=0&id=134ba775&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.order-detail-page[data-v-134ba775] {
    background: #f5f5f5;
    min-height: 100vh;
}
.student-info-section[data-v-134ba775] {
    background: #fff;
    padding: 0.53333rem 0.42667rem;
    margin-bottom: 0.32rem;
}
.student-name[data-v-134ba775] {
    font-size: 0.48rem;
    font-weight: 600;
    color: #1F2937;
    margin-bottom: 0.10667rem;
}
.student-details[data-v-134ba775] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.package-section[data-v-134ba775] {
    background: #fff;
    margin-bottom: 0.32rem;
    padding: 0.42667rem;
}
.section-title[data-v-134ba775] {
    font-size: 0.42667rem;
    font-weight: 600;
    color: #1F2937;
    margin-bottom: 0.32rem;
}
.milk-week-list[data-v-134ba775] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}
.milk-week-item[data-v-134ba775] {
    display: flex;
    justify-content: center;
}
.milk-week-card[data-v-134ba775] {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.18667rem;
    padding: 0.21333rem 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 1.44rem;
    position: relative;
}
.milk-week-title[data-v-134ba775] {
    font-size: 0.37333rem;
    font-weight: 500;
}
.milk-type-tag[data-v-134ba775] {
    position: absolute;
    top: 0.90667rem;
    right: 0.05333rem;
    color: #fff;
    font-size: 0.29333rem;
    font-weight: 500;
    border-radius: 50%;
    width: 0.56rem;
    height: 0.56rem;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.milk-icon[data-v-134ba775] {
    width: 0.42667rem;
    height: 0.85333rem;
    margin: 0.48rem 0;
    display: block;
}
.milk-label[data-v-134ba775] {
    font-size: 0.29333rem;
    font-weight: 500;
}
.order-info-section[data-v-134ba775] {
    background: #fff;
    margin-bottom: 0.32rem;
    padding: 0.42667rem;
}
.order-info-section .van-row[data-v-134ba775] {
    margin-bottom: 0.32rem;
}
.order-info-section .van-row[data-v-134ba775]:last-child {
    margin-bottom: 0;
}
.info-item[data-v-134ba775] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.info-label[data-v-134ba775] {
    font-size: 0.37333rem;
    color: #6B7280;
}
.info-value[data-v-134ba775] {
    font-size: 0.37333rem;
    color: #1F2937;
    font-weight: 500;
}
.info-value.price[data-v-134ba775] {
    color: var(--van-primary-color);
    font-weight: 600;
}
.delivery-log-section[data-v-134ba775] {
    background: #fff;
    margin-bottom: 0.32rem;
    padding: 0.42667rem;
}
.delivery-summary[data-v-134ba775] {
    font-size: 0.42667rem;
    color: #1F2937;
    margin-bottom: 0.42667rem;
}
.bold[data-v-134ba775] {
    font-weight: 600;
}
.red[data-v-134ba775] {
    color: var(--van-primary-color);
}
.delivery-log-list[data-v-134ba775] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.delivery-log-item[data-v-134ba775] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.32rem;
    background: #f9f9f9;
    border-radius: 0.21333rem;
}
.log-time[data-v-134ba775] {
    font-size: 0.37333rem;
    color: #1F2937;
    font-weight: 500;
}
.log-status[data-v-134ba775] {
    display: flex;
    align-items: center;
}
.status-btn.van-tag--primary[data-v-134ba775] {
    background: #609DFF;
}
.log-count[data-v-134ba775] {
    font-size: 0.37333rem;
    color: #1F2937;
    font-weight: 500;
}

/* 暂停取奶按钮 */
.pause-milk-btn[data-v-134ba775] {
    position: fixed;
    right: 0.42667rem;
    bottom: 0.53333rem;
    background: var(--van-primary-color);
    color: #fff;
    padding: 0.32rem 0.42667rem;
    border-radius: 0.66667rem;
    display: flex;
    align-items: center;
    gap: 0.16rem;
    font-size: 0.37333rem;
    font-weight: 500;
    box-shadow: 0 0.10667rem 0.32rem rgba(139, 0, 0, 0.3);
    z-index: 999;
    cursor: pointer;
    transition: all 0.3s ease;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/home/Index.vue?vue&type=style&index=0&id=5e7337c8&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.home[data-v-5e7337c8] {
    height: calc(100vh - 1.33333rem - env(safe-area-inset-bottom));
    background: #f7f8fa;
    overflow: auto;
}
.my-swipe[data-v-5e7337c8] {
    height: calc(100vh - 3.86667rem - env(safe-area-inset-bottom));
}
.banner-img[data-v-5e7337c8] {
    width: 100%;
    height: calc(100vh - 3.86667rem - env(safe-area-inset-bottom));
}
.order-btn-wrap[data-v-5e7337c8] {
    margin: 0.64rem 0.42667rem;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/home/Order.vue?vue&type=style&index=0&id=2cddb6d0&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.order-page[data-v-2cddb6d0] {
    background: #fff;
    min-height: 100vh;
    padding: 0.37333rem 0.37333rem 3.2rem 0.37333rem;
}
.order-section[data-v-2cddb6d0] {
    margin: 0 0 0.56rem 0;
    background: #fff;
    padding: 0.37333rem;
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.section-title[data-v-2cddb6d0] {
    font-weight: 500;
    font-size: 0.42667rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.37333rem;
}
.add-student[data-v-2cddb6d0] {
    color: #4B5563;
    font-size: 0.34667rem;
    font-weight: 400;
    display: flex;
    align-items: center;
    gap: 0.08rem;
}
.student-list[data-v-2cddb6d0] {
    display: flex;
    flex-direction: column;
    gap: 0.32rem;
}
.student-card[data-v-2cddb6d0] {
    display: flex;
    align-items: center;
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.18667rem;
    padding: 0.32rem;
}
.student-card.selected[data-v-2cddb6d0] {
    border: 0.02667rem solid var(--van-primary-color);
}
.avatar[data-v-2cddb6d0] {
    width: 0.93333rem;
    height: 0.93333rem;
    margin-right: 0.24rem;
}
.info[data-v-2cddb6d0] {
    flex: 1;
}
.name-row[data-v-2cddb6d0] {
    font-size: 0.37333rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.26667rem;
}
.status-tags[data-v-2cddb6d0] {
    display: flex;
    gap: 0.16rem;
    align-items: center;
}
.status-tag[data-v-2cddb6d0] {
    padding: 0.05333rem 0.18667rem;
    font-size: 0.29333rem;
}
.desc[data-v-2cddb6d0] {
    color: #6B7280;
    font-size: 0.32rem;
    margin: 0.05333rem 0 0.13333rem 0;
}
.tag[data-v-2cddb6d0] {
    padding: 0.05333rem 0.18667rem;
}
.tag-box[data-v-2cddb6d0] {
    display: flex;
    align-items: center;
    gap: 0.16rem;
}
.order-card[data-v-2cddb6d0] {
    border: 0.02667rem solid var(--van-primary-color);
    border-radius: 0.18667rem;
    padding: 0.32rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 0.37333rem;
    font-weight: 500;
}
.price[data-v-2cddb6d0] {
    color: var(--van-primary-color);
}
.period-list[data-v-2cddb6d0] {
    display: flex;
    gap: 0.26667rem;
    flex-wrap: wrap;
}
.period-item[data-v-2cddb6d0] {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.18667rem;
    padding: 0.32rem 0;
    font-size: 0.37333rem;
    font-weight: 500;
    text-align: center;
    min-width: 2.58667rem;
}
.period-item.selected[data-v-2cddb6d0] {
    border: 0.02667rem solid var(--van-primary-color);
    background: #FEF2F2;
}
.period-tip[data-v-2cddb6d0] {
    color: #6B7280;
    font-size: 0.32rem;
    margin-top: 0.13333rem;
}
.milk-type-tip[data-v-2cddb6d0] {
    color: #6B7280;
    font-size: 0.34667rem;
    margin-bottom: 0.37333rem;
}
.milk-week-list[data-v-2cddb6d0] {
    display: flex;
    gap: 0.24rem;
    flex-wrap: wrap;
}
.milk-week-item[data-v-2cddb6d0] {
    display: flex;
    justify-content: center;
}
.milk-week-card[data-v-2cddb6d0] {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.18667rem;
    padding: 0.21333rem 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 1.44rem;
    position: relative;
}
.milk-week-title[data-v-2cddb6d0] {
    font-size: 0.37333rem;
    font-weight: 500;
}
.milk-type-tag[data-v-2cddb6d0] {
    position: absolute;
    top: 0.90667rem;
    right: 0.05333rem;
    color: #fff;
    font-size: 0.29333rem;
    font-weight: 500;
    border-radius: 50%;
    width: 0.56rem;
    height: 0.56rem;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.milk-icon[data-v-2cddb6d0] {
    width: 0.42667rem;
    height: 0.85333rem;
    margin: 0.48rem 0;
    display: block;
}
.milk-label[data-v-2cddb6d0] {
    font-size: 0.29333rem;
    font-weight: 500;
}
.milk-label.fresh[data-v-2cddb6d0] {
    color: #3B82F6;
}
.milk-label.yogurt[data-v-2cddb6d0] {
    color: #D50F5F;
}
.machine-card[data-v-2cddb6d0] {
    border-radius: 0.18667rem;
    padding: 0.28rem;
    background: rgba(254, 242, 242, 0.5);
    display: flex;
    gap: 0.10667rem;
}
.machine-icon[data-v-2cddb6d0] {
    font-size: 0.42667rem;
    margin-top: 0.05333rem;
}
.machine-title[data-v-2cddb6d0] {
    color: #1F2937;
    font-size: 0.37333rem;
    font-weight: 500;
}
.machine-desc[data-v-2cddb6d0] {
    color: #4B5563;
    font-size: 0.32rem;
    margin-top: 0.05333rem;
}
.machine-note[data-v-2cddb6d0] {
    color: #6B7280;
    font-size: 0.32rem;
    margin-top: 0.05333rem;
}
.order-desc[data-v-2cddb6d0] {
    color: #4B5563;
    font-size: 0.32rem;
    line-height: 1.9;
}
.order-footer[data-v-2cddb6d0] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 0.02667rem solid #eee;
    padding: 0.32rem 0.37333rem 0.42667rem 0.37333rem;
    display: flex;
    flex-direction: column;
    z-index: 999;
    /* 提高优先级，确保在最上层 */
}
.total[data-v-2cddb6d0] {
    color: #4B5563;
    font-size: 0.37333rem;
    margin-bottom: 0.21333rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.price[data-v-2cddb6d0] {
    color: var(--van-primary-color);
    font-size: 0.45333rem;
    font-weight: 500;
}
.order-btn[data-v-2cddb6d0] {
    margin-top: 0.21333rem;
}
.go-face[data-v-2cddb6d0] {
    display: flex;
    align-items: center;
    color: var(--van-primary-color);
    font-size: 0.34667rem;
    gap: 0.10667rem;
}
.go-face-icon[data-v-2cddb6d0] {
    font-size: 0.42667rem;
}
.success-icon[data-v-2cddb6d0] {
    font-size: 0.48rem;
}
.auth-face-section[data-v-2cddb6d0] {
    display: flex;
    align-items: center;
}
.auth-checkbox[data-v-2cddb6d0] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.auth-checkbox[data-v-2cddb6d0] .van-checkbox__label {
    margin-left: 0;
}
.auth-checkbox[data-v-2cddb6d0] .van-checkbox__icon .van-icon {
    border-radius: 0.13333rem;
}
.auth-text[data-v-2cddb6d0] {
    font-size: 0.37333rem;
    color: #4B5563;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/LoadingOverlay.vue?vue&type=style&index=0&id=681413a4&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.loading-container[data-v-681413a4] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 100%;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/home/Payment.vue?vue&type=style&index=0&id=4bce0ed0&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.payment-page[data-v-4bce0ed0] {
    background: #fff;
    min-height: 100vh;
    padding-bottom: 2.66667rem;
    box-sizing: border-box;
}
.payment-section[data-v-4bce0ed0] {
    margin: 0 0.37333rem 0.37333rem 0.37333rem;
    background: #fff;
    padding: 0.42667rem;
    border-radius: 0.21333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.section-title[data-v-4bce0ed0] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
    margin-bottom: 0.42667rem;
}
.amount-row[data-v-4bce0ed0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.32rem 0;
}
.amount-label[data-v-4bce0ed0] {
    font-size: 0.37333rem;
    color: #666;
}
.amount-value[data-v-4bce0ed0] {
    font-size: 0.48rem;
    font-weight: 600;
    color: var(--van-primary-color);
}
.payment-methods[data-v-4bce0ed0] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.payment-method[data-v-4bce0ed0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.32rem 0;
    border-bottom: 0.02667rem solid #f5f5f5;
}
.payment-method[data-v-4bce0ed0]:last-child {
    border-bottom: none;
}
.method-info[data-v-4bce0ed0] {
    display: flex;
    align-items: center;
    gap: 0.32rem;
}
.method-icon[data-v-4bce0ed0] {
    font-size: 0.53333rem;
}
.method-details[data-v-4bce0ed0] {
    display: flex;
    flex-direction: column;
    gap: 0.10667rem;
}
.method-name[data-v-4bce0ed0] {
    font-size: 0.37333rem;
    font-weight: 500;
    color: #333;
}
.method-available[data-v-4bce0ed0] {
    font-size: 0.32rem;
    color: #999;
}
.method-amount[data-v-4bce0ed0] {
    font-size: 0.37333rem;
    font-weight: 500;
    color: var(--van-primary-color);
}
.payment-footer[data-v-4bce0ed0] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    border-top: 0.02667rem solid #eee;
    padding: 0.42667rem 0.37333rem;
    z-index: 1000;
}
.confirm-btn[data-v-4bce0ed0] {
    background: var(--van-primary-color);
    border: none;
    height: 1.28rem;
    font-size: 0.42667rem;
    font-weight: 500;
}
.confirm-btn[data-v-4bce0ed0]:active {
    background: var(--van-primary-color);
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/FacePurchase.vue?vue&type=style&index=0&id=52763290&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.face-purchase-page[data-v-52763290] {
    background: #fff;
    min-height: calc(100vh - 2.50667rem);
    padding: 0.37333rem 0.37333rem 2.13333rem 0.37333rem;
}
.instructions-section[data-v-52763290] {
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    padding: 0.37333rem;
    margin-bottom: 0.56rem;
}
.section-title[data-v-52763290] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.37333rem;
}
.instructions-list[data-v-52763290] {
    display: flex;
    flex-direction: column;
    gap: 0.26667rem;
}
.instruction-item[data-v-52763290] {
    display: flex;
    align-items: flex-start;
    gap: 0.26667rem;
}
.instruction-icon[data-v-52763290] {
    color: var(--van-primary-color);
    font-size: 0.42667rem;
}
.instruction-text[data-v-52763290] {
    font-size: 0.32rem;
    color: #4B5563;
    flex: 1;
}
.students-section[data-v-52763290] {
    border-radius: 0.18667rem;
    padding: 0.37333rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.section-header[data-v-52763290] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.37333rem;
}
.students-section .section-title[data-v-52763290] {
    margin-bottom: 0;
}
.add-student-btn[data-v-52763290] {
    border: none;
    padding: 0;
}
.students-list[data-v-52763290] {
    display: flex;
    flex-direction: column;
    gap: 0.42667rem;
}
.student-item[data-v-52763290] {
    display: flex;
    align-items: center;
    gap: 0.32rem;
    padding: 0.32rem;
    border: 0.02667rem solid #f0f0f0;
    border-radius: 0.21333rem;
}
.student-avatar[data-v-52763290] {
    flex-shrink: 0;
}
.student-avatar-img[data-v-52763290] {
    width: 1.12rem;
    height: 1.12rem;
}
.student-info[data-v-52763290] {
    flex: 1;
}
.student-name[data-v-52763290] {
    font-size: 0.42667rem;
    font-weight: 500;
    margin-bottom: 0.10667rem;
}
.student-class[data-v-52763290] {
    font-size: 0.37333rem;
    color: #666;
}
.student-status[data-v-52763290] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.13333rem;
}
.face-status[data-v-52763290] {
    font-size: 0.32rem;
    padding: 0.10667rem 0.21333rem;
}
.register-face-btn[data-v-52763290] {
    border-radius: 0.18667rem;
    height: 0.64rem;
}

/* 底部充值按钮样式 */
.bottom-recharge-section[data-v-52763290] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: #fff;
    padding: 0.42667rem 0.37333rem;
    border-top: 0.02667rem solid #f0f0f0;
    z-index: 100;
}
.recharge-btn[data-v-52763290] {
    height: 1.28rem;
    border-radius: 0.21333rem;
    font-size: 0.42667rem;
    font-weight: 500;
    border: none;
}

/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/FaceCollection.vue?vue&type=style&index=0&id=2d320e15&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.face-collection-page[data-v-2d320e15] {
    background: #fff;
    min-height: calc(100vh - 0.74667rem);
    padding: 0.37333rem;
}
.stats-section[data-v-2d320e15] {
    margin-bottom: 0.56rem;
}
.stats-grid[data-v-2d320e15] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.37333rem;
}
.stat-card[data-v-2d320e15] {
    border-radius: 0.18667rem;
    padding: 0.37333rem;
}
.stat-title[data-v-2d320e15] {
    font-size: 0.32rem;
    color: #6B7280;
    margin-bottom: 0.21333rem;
}
.stat-value[data-v-2d320e15] {
    font-size: 0.42667rem;
    font-weight: 500;
}
.stat-card.new-auth[data-v-2d320e15] {
    color: var(--van-primary-color);
    background: #FEF2F2;
}
.stat-card.total-outlets[data-v-2d320e15] {
    color: #2563EB;
    background: #EFF6FF;
}
.stat-card.total-students[data-v-2d320e15] {
    color: #16A34A;
    background: #F0FDF4;
}
.stat-card.not-registered[data-v-2d320e15] {
    color: #CA8A04;
    background: #FEFCE8;
}

/* 自定义van-tabs样式 */
.custom-tabs[data-v-2d320e15] {
    margin-bottom: 0.56rem;
}
.custom-tabs[data-v-2d320e15] .van-tabs__wrap {
    margin-bottom: 0.42667rem;
}
.custom-tabs[data-v-2d320e15] .van-tabs__nav {
    padding: 0;
}

/* 筛选条件区域样式 */
.filter-section[data-v-2d320e15] {
    margin-bottom: 0.56rem;
}
.filter-row[data-v-2d320e15] {
    display: flex;
    gap: 0.26667rem;
    margin-top: 0.26667rem;
}
.filter-item[data-v-2d320e15] {
    flex: 1;
}
.filter-field[data-v-2d320e15] {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.16rem;
    padding: 0.13333rem 0.26667rem;
}
.search-section[data-v-2d320e15] {
    margin-bottom: 0.56rem;
}
.search-bar[data-v-2d320e15] {
    position: relative;
    border-radius: 0.21333rem;
    padding-left: 0.32rem;
    display: flex;
    align-items: center;
    border: 0.02667rem solid #E5E7EB;
}
.search-icon[data-v-2d320e15] {
    color: #999;
    font-size: 0.42667rem;
    flex-shrink: 0;
}
.search-input[data-v-2d320e15] {
    flex: 1;
    border: none;
    background: transparent;
    font-size: 0.37333rem;
    padding: 0.13333rem 0.26667rem;
}
.search-input[data-v-2d320e15] .van-field__control {
    border: none;
    background: transparent;
}

/* 学生列表区域样式 */
.students-section[data-v-2d320e15] {
    flex: 1;
}
.students-list[data-v-2d320e15] {
    display: flex;
    flex-direction: column;
    gap: 0.37333rem;
}
.student-card[data-v-2d320e15] {
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    padding: 0.37333rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.student-info[data-v-2d320e15] {
    flex: 1;
}
.student-name[data-v-2d320e15] {
    font-size: 0.37333rem;
    font-weight: 500;
    margin-bottom: 0.10667rem;
}
.student-details[data-v-2d320e15] {
    font-size: 0.32rem;
    color: #6B7280;
}
.student-status[data-v-2d320e15] {
    flex-shrink: 0;
}
.register-face-btn[data-v-2d320e15] {
    border-radius: 0.18667rem;
    font-size: 0.32rem;
    height: 0.74667rem;
}
.registered-btn[data-v-2d320e15] {
    border: none;
    background: #F3F4F6;
    color: #4B5563;
    border-radius: 0.18667rem;
    font-size: 0.32rem;
    height: 0.74667rem;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/InspectionReport.vue?vue&type=style&index=0&id=d64033fc&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.inspection-report-page[data-v-d64033fc] {
    background: #fff;
    min-height: 100vh;
}
.report-tabs[data-v-d64033fc] .van-tabs__nav {
    gap: 0.18667rem;
}
[data-v-d64033fc] .van-tabs--line .van-tabs__wrap {
    background: #fff;
    padding: 0.37333rem 0;
}
[data-v-d64033fc] .van-tab {
    font-size: 0.32rem;
}
.reports-section[data-v-d64033fc] {
    padding: 0 0.37333rem 0.37333rem 0.37333rem;
}

/* 日期筛选样式 */
.date-filter[data-v-d64033fc] {
    padding-bottom: 0.37333rem;
}
.date-filter[data-v-d64033fc] .van-field {
    background: #f8f9fa;
    border-radius: 0.21333rem;
}
.field-icons[data-v-d64033fc] {
    display: flex;
    align-items: center;
    gap: 0.21333rem;
}
.clear-icon[data-v-d64033fc] {
    color: #999;
    font-size: 0.42667rem;
}
.calendar-icon[data-v-d64033fc] {
    color: #666;
    font-size: 0.42667rem;
}

/* 报告网格样式 */
.reports-grid[data-v-d64033fc] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.37333rem;
}
.report-card[data-v-d64033fc] {
    background: #fff;
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
    overflow: hidden;
}
.report-thumbnail[data-v-d64033fc] {
    height: 2.98667rem;
    background: #F9FAFB;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

/* PDF缩略图样式 */
.pdf-thumbnail[data-v-d64033fc] {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.image-pdf[data-v-d64033fc] {
    width: 1.12rem;
    height: 1.12rem;
}

/* 图片缩略图样式 */
.image-thumbnail[data-v-d64033fc] {
    width: 100%;
    height: 100%;
    border-radius: 0;
}
.image-thumbnail[data-v-d64033fc] .van-image__img {
    border-radius: 0;
}

/* PDF预览弹窗样式 */
[data-v-d64033fc] .van-dialog {
    top: 48%;
    width: 92%;
}
[data-v-d64033fc] .van-dialog__content {
    height: 75vh;
    overflow-y: auto;
    padding: 0;
}
.pdf-container[data-v-d64033fc] {
    width: 100%;
    height: 100%;
}
.pdf-viewer[data-v-d64033fc] {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.pdf-loading[data-v-d64033fc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 50vh;
}
.pdf-loading span[data-v-d64033fc] {
    margin-top: 0.26667rem;
    color: var(--van-primary-color);
    font-size: 0.37333rem;
}

/* 报告信息样式 */
.report-info[data-v-d64033fc] {
    padding: 0.26667rem;
}
.report-title[data-v-d64033fc] {
    font-size: 0.32rem;
    font-weight: 500;
    margin-bottom: 0.21333rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.report-date[data-v-d64033fc] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
    color: #6B7280;
    font-size: 0.26667rem;
}
.report-date .van-icon[data-v-d64033fc] {
    font-size: 0.32rem;
}

/* 图片预览样式优化 */
[data-v-d64033fc] .van-image-preview__index {
    display: none;
}
[data-v-d64033fc] .van-image-preview__close-icon {
    color: #fff;
    font-size: 0.53333rem;
}
[data-v-d64033fc] .van-image-preview__image {
    max-width: 100%;
    max-height: 100%;
}



/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/MilkNotice.vue?vue&type=style&index=0&id=35886de6&scoped=true&lang=css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.milk-notice[data-v-35886de6] {
  min-height: 100vh;
  background: #fff;
}
.empty-state[data-v-35886de6] {
  padding: 1.6rem 0;
  text-align: center;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/FaceRecognition.vue?vue&type=style&index=0&id=271cced0&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.face-recognition[data-v-271cced0] {
    min-height: 100vh;
    background: #fff;
    display: flex;
    flex-direction: column;
}
.camera-container[data-v-271cced0] {
    flex: 1;
    position: relative;
}
.preview-area[data-v-271cced0] {
    width: 100%;
    height: calc(100vh - 2.24rem);
    position: relative;
    overflow: hidden;
    border-radius: 0.26667rem;
    background: #000;
    display: flex;
    align-items: center;
    justify-content: center;
}
.preview-image[data-v-271cced0] {
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.empty-preview[data-v-271cced0] {
    width: 100%;
    height: 100%;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}
.face-frame[data-v-271cced0] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 5.33333rem;
    height: 5.33333rem;
    border-radius: 0.26667rem;
}
.corner[data-v-271cced0] {
    position: absolute;
    width: 0.53333rem;
    height: 0.53333rem;
    border: 0.05333rem solid #fff;
}
.corner.top-left[data-v-271cced0] {
    top: 0;
    left: 0;
    border-right: none;
    border-bottom: none;
    border-top-left-radius: 0.26667rem;
}
.corner.top-right[data-v-271cced0] {
    top: 0;
    right: 0;
    border-left: none;
    border-bottom: none;
    border-top-right-radius: 0.26667rem;
}
.corner.bottom-left[data-v-271cced0] {
    bottom: 0;
    left: 0;
    border-right: none;
    border-top: none;
    border-bottom-left-radius: 0.26667rem;
}
.corner.bottom-right[data-v-271cced0] {
    bottom: 0;
    right: 0;
    border-left: none;
    border-top: none;
    border-bottom-right-radius: 0.26667rem;
}
.tips-text[data-v-271cced0] {
    position: absolute;
    bottom: 0.8rem;
    left: 50%;
    transform: translateX(-50%);
    color: #fff;
    font-size: 0.37333rem;
    text-shadow: 0 0 0.13333rem rgba(0, 0, 0, 0.5);
}
.button-area[data-v-271cced0] {
    padding: 0.53333rem;
    background: #fff;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    gap: 0.32rem;
}
.button-area .van-button[data-v-271cced0] {
    flex: 1;
    height: 1.17333rem;
    border-radius: 0.58667rem;
    font-size: 0.42667rem;
}
.button-area .van-button--primary[data-v-271cced0] {
    background: var(--van-primary-color);
    border-color: var(--van-primary-color);
}

/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/BindStudent.vue?vue&type=style&index=0&id=44a15df4&scoped=true&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.bind-student-page[data-v-44a15df4] {
    background: #fff;
    min-height: calc(100vh - 2.4rem);
    padding-bottom: 2.4rem;
}
.school-info[data-v-44a15df4] {
    padding: 0.37333rem;
    display: flex;
    align-items: center;
    gap: 0.21333rem;
    font-size: 0.37333rem;
    flex-wrap: wrap;
}
.school-info-section[data-v-44a15df4] {
    margin: 0 0.37333rem 0.37333rem;
    padding: 0.37333rem;
    font-size: 0.37333rem;
    color: #666;
    border: 0.02667rem solid #f0f0f0;
    border-radius: 0.21333rem;
}
.school-name[data-v-44a15df4] {
    font-size: 0.48rem;
    font-weight: 600;
    color: #333;
}
.class-name[data-v-44a15df4],
.semester[data-v-44a15df4] {
    color: #999;
    font-weight: 400;
}
.separator[data-v-44a15df4] {
    width: 0.02667rem;
    height: 0.32rem;
    background: #6B7280;
}
.search-section[data-v-44a15df4] {
    padding: 0 0.37333rem;
}
.search-input[data-v-44a15df4] {
    border-radius: 0.21333rem;
    background: #f7f8fa;
}
.search-input[data-v-44a15df4] .van-field__control {
    background: transparent;
}
.students-list[data-v-44a15df4] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.26667rem;
    padding: 0.37333rem;
}
.student-card[data-v-44a15df4] {
    height: 1.33333rem;
    border-radius: 0.21333rem;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    cursor: pointer;
    transition: all 0.2s;
}
.student-card.bound[data-v-44a15df4] {
    background: #f7f8fa;
    color: #999;
    cursor: not-allowed;
    border: 0.02667rem solid #e5e5e5;
    opacity: 0.7;
}
.student-card.available[data-v-44a15df4] {
    background: #fff;
    border: 0.02667rem solid #e5e5e5;
    color: #333;
}
.student-card.selected[data-v-44a15df4] {
    background: var(--van-primary-color);
    color: #fff;
    border-color: var(--van-primary-color);
}
.student-name[data-v-44a15df4] {
    font-size: 0.37333rem;
    font-weight: 500;
}
.bound-status[data-v-44a15df4] {
    position: absolute;
    top: 0.10667rem;
    right: 0.21333rem;
    color: #999;
    font-size: 0.26667rem;
    font-weight: 400;
    z-index: 1;
}
.selection-indicator[data-v-44a15df4] {
    position: absolute;
    top: 0.10667rem;
    right: 0.10667rem;
    width: 0.42667rem;
    height: 0.42667rem;
    background: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.selection-indicator .van-icon[data-v-44a15df4] {
    font-size: 0.32rem;
    color: var(--van-primary-color);
}
.add-student-section[data-v-44a15df4] {
    padding: 0 0.37333rem 0.37333rem;
    display: flex;
    justify-content: flex-start;
}
.add-student-btn[data-v-44a15df4] {
    border: 0.02667rem dashed #ccc;
    color: #666;
    background: #fff;
    border-radius: 0.21333rem;
    height: 1.28rem;
    padding: 0 0.42667rem;
}
.confirm-section[data-v-44a15df4] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 0.37333rem 0.37333rem 0.53333rem 0.37333rem;
    background: #fff;
    border-top: 0.02667rem solid #f0f0f0;
}
.confirm-btn[data-v-44a15df4] {
    width: 100%;
    height: 1.28rem;
    border-radius: 0.21333rem;
    font-size: 0.42667rem;
    font-weight: 500;
}
.add-student-popup[data-v-44a15df4] {
    padding: 0.53333rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.popup-header[data-v-44a15df4] {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.53333rem;
}
.popup-title[data-v-44a15df4] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
}
.close-icon[data-v-44a15df4] {
    font-size: 0.53333rem;
    color: #999;
}
.popup-content[data-v-44a15df4] {
    width: 100%;
    margin-bottom: 0.53333rem;
}
.name-input[data-v-44a15df4] {
    border-radius: 0.21333rem;
    background: #f7f8fa;
}
.popup-footer[data-v-44a15df4] {
    width: 100%;
    display: flex;
    gap: 0.32rem;
}
.cancel-btn[data-v-44a15df4] {
    background: #f5f5f5;
    border: none;
    color: #4B5563;
    border-radius: 0.21333rem;
    height: 1.01333rem;
    flex: 1;
}
.confirm-add-btn[data-v-44a15df4] {
    border-radius: 0.21333rem;
    height: 1.01333rem;
    flex: 1;
}
.wechat-popup[data-v-44a15df4] {
    padding: 0.53333rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.wechat-popup .popup-header[data-v-44a15df4] {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.53333rem;
}
.wechat-popup .popup-title[data-v-44a15df4] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #333;
}
.wechat-popup .close-icon[data-v-44a15df4] {
    font-size: 0.53333rem;
    color: #999;
}
.wechat-popup .popup-content[data-v-44a15df4] {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.qr-code-container[data-v-44a15df4] {
    margin-bottom: 0.42667rem;
}
.qr-code[data-v-44a15df4] {
    width: 5.33333rem;
    height: 5.33333rem;
    border-radius: 0.21333rem;
}
.qr-tip[data-v-44a15df4] {
    font-size: 0.37333rem;
    color: #666;
    text-align: center;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/user/ProfileCompletion.vue?vue&type=style&index=0&id=5fcf071b&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/

.profile-completion[data-v-5fcf071b] {
    background: #FFFFFF;
    padding: 0.37333rem;
    height: calc(100vh - 0.74667rem);
}
.info-section[data-v-5fcf071b] {
    margin-bottom: 0.26667rem;
    padding: 0.29333rem;
    border-radius: 0.18667rem;
    box-shadow: 0 0.02667rem 0.05333rem 0 rgba(0, 0, 0, 0.05);
}
.section-title[data-v-5fcf071b] {
    font-size: 0.42667rem;
    font-weight: 500;
    color: #000000;
}
.margin-bottom[data-v-5fcf071b] {
    margin-bottom: 0.29333rem;
}
.section-header[data-v-5fcf071b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.29333rem;
}
.info-item[data-v-5fcf071b] {
    margin-bottom: 0.29333rem;
    padding: 0.21333rem 0;
}
.info-item[data-v-5fcf071b]:last-child {
    margin-bottom: 0;
}
.info-content[data-v-5fcf071b],
.face-info[data-v-5fcf071b] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.info-item.border-top[data-v-5fcf071b] {
    border-top: 0.02667rem solid #F3F4F6;
}
.info-label[data-v-5fcf071b] {
    font-size: 0.37333rem;
    font-weight: 500;
    color: #000000;
    margin-bottom: 0.05333rem;
}
.info-value[data-v-5fcf071b] {
    font-size: 0.32rem;
    color: #6B7280;
}
.edit-action[data-v-5fcf071b] {
    display: flex;
    align-items: center;
    gap: 0.10667rem;
    cursor: pointer;
}
.edit-text[data-v-5fcf071b] {
    font-size: 0.32rem;
    color: var(--van-primary-color);
}
.readonly-text[data-v-5fcf071b] {
    font-size: 0.32rem;
    color: #9CA3AF;
}
.face-recorded[data-v-5fcf071b],
.face-not-recorded[data-v-5fcf071b] {
    display: flex;
    flex-direction: column;
    align-items: start;
}
.status-icon[data-v-5fcf071b] {
    font-size: 0.8rem;
}
.status-text[data-v-5fcf071b] {
    font-size: 0.37333rem;
    color: #000000;
}
.face-instruction[data-v-5fcf071b] {
    margin-top: 0.08rem;
    font-size: 0.34667rem;
    color: #9CA3AF;
}
.face-info[data-v-5fcf071b] {
    margin-bottom: 0.45333rem;
    gap: 0.26667rem;
}
.face-record-btn[data-v-5fcf071b] {
    background: #16A34A;
    border: none;
    width: 4.72rem;
    height: 0.96rem;
    font-size: 0.37333rem;
}
.face-delete-btn[data-v-5fcf071b] {
    border: 0.02667rem solid #EF4444;
    color: #EF4444;
    background: #fff;
    width: 4.72rem;
    height: 0.96rem;
    font-size: 0.37333rem;
}
.delete-icon[data-v-5fcf071b] {
    font-size: 0.4rem;
    margin-right: 0.10667rem;
}

/* 修改姓名弹框样式 */
[data-v-5fcf071b] .name-dialog .van-dialog {
    border-radius: 0.21333rem;
    border: 0.02667rem solid #E5E7EB;
}
[data-v-5fcf071b] .name-field .van-field__control {
    border: 0.02667rem solid #E5E7EB;
    border-radius: 0.16rem;
    padding: 0.21333rem 0.32rem;
    font-size: 0.37333rem;
}
[data-v-5fcf071b] .name-field .van-field__control:focus {
    border-color: var(--van-primary-color);
}

