*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:#333;background-color:#f5f5f5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none}#root{height:100%;width:100%;overflow-x:hidden}@media screen and (max-width: 768px){body{font-size:16px}}::-webkit-scrollbar{width:0;background:transparent}*{-webkit-overflow-scrolling:touch}.ant-btn{-webkit-tap-highlight-color:transparent}.ant-input,.ant-input-affix-wrapper{-webkit-appearance:none;border-radius:6px}.safe-area-inset-top{padding-top:env(safe-area-inset-top)}.safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.page-container{min-height:100vh;background-color:#f5f5f5;padding-bottom:env(safe-area-inset-bottom)}.content-wrapper{padding:16px;background-color:#fff;margin:8px;border-radius:8px;box-shadow:0 2px 8px #0000001a}.mobile-card{background:#fff;border-radius:8px;padding:16px;margin-bottom:12px;box-shadow:0 2px 8px #0000000f;border:1px solid #f0f0f0}.navbar{position:sticky;top:0;z-index:1000;background:#fff;border-bottom:1px solid #f0f0f0;padding:0 16px;height:48px;display:flex;align-items:center;justify-content:space-between}.bottom-safe-area{height:env(safe-area-inset-bottom);background-color:#fff}.dingtalk-primary{color:#2779ee}.dingtalk-primary-bg{background-color:#2779ee;color:#fff}.loading-container{display:flex;justify-content:center;align-items:center;height:200px;flex-direction:column}.empty-state{text-align:center;padding:40px 20px;color:#999}.title-large{font-size:18px;font-weight:600;color:#333}.title-medium{font-size:16px;font-weight:500;color:#333}.text-secondary{color:#666;font-size:14px}.text-muted{color:#999;font-size:12px}.login-page{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;padding:20px}.login-container{width:100%;max-width:400px}.login-card{border-radius:16px;box-shadow:0 8px 32px #0003;overflow:hidden}.login-card .ant-card-body{padding:32px 24px}.login-header{text-align:center;margin-bottom:32px}.logo-section{display:flex;flex-direction:column;align-items:center;margin-bottom:16px}.app-title{font-size:28px;font-weight:600;color:#333;margin:0;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-subtitle{font-size:14px;color:#666;margin:0}.login-tabs{display:flex;margin-bottom:24px;border-bottom:2px solid #f0f0f0}.tab-item{flex:1;text-align:center;padding:12px;font-size:16px;font-weight:500;color:#666;cursor:pointer;transition:all .3s;position:relative}.tab-item.active{color:#667eea}.tab-item.active:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:2px;background:linear-gradient(135deg,#667eea,#764ba2)}.login-form{margin-top:24px}.login-form .ant-form-item{margin-bottom:20px}.login-form .ant-input-affix-wrapper,.login-form .ant-input{border-radius:8px;border:1px solid #e0e0e0}.login-form .ant-input-affix-wrapper:focus,.login-form .ant-input-affix-wrapper-focused{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a}.submit-button{height:48px;font-size:16px;font-weight:500;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;box-shadow:0 4px 12px #667eea4d;margin-top:8px}.submit-button:hover{background:linear-gradient(135deg,#5568d3,#6a3f8f);box-shadow:0 6px 16px #667eea66}.login-footer{text-align:center;margin-top:24px}.login-footer p{font-size:12px;color:#999;margin:0}@media (max-width: 480px){.login-page{padding:0;align-items:flex-start}.login-container{max-width:100%}.login-card{border-radius:0;min-height:100vh}.login-card .ant-card-body{padding:24px 20px}.app-title{font-size:22px}.app-subtitle{font-size:12px}.tab-item{padding:10px;font-size:15px}.submit-button{height:44px;font-size:15px}}.bottom-navigation{position:fixed;bottom:0;left:0;right:0;background:#fffffffa;border-top:1px solid rgba(240,240,240,.8);box-shadow:0 -2px 16px #0000000f;z-index:1000;padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.nav-container{display:flex;height:64px;align-items:center;justify-content:space-around;padding:6px 12px;max-width:600px;margin:0 auto}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:6px 4px;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);border-radius:12px;margin:0 4px;min-height:48px;position:relative}.nav-item:hover{background-color:#1890ff0a}.nav-item:active{transform:scale(.93)}.nav-item-active{background:linear-gradient(135deg,#1890ff14,#1890ff1f)}.nav-item-active:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:24px;height:3px;background:linear-gradient(90deg,#1890ff,#40a9ff);border-radius:0 0 3px 3px}.nav-icon{font-size:22px;color:#8c8c8c;margin-bottom:2px;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;width:28px;height:28px}.nav-item-active .nav-icon{color:#1890ff;transform:translateY(-2px) scale(1.08)}.nav-label{font-size:11px;color:#8c8c8c;line-height:1.2;font-weight:400;transition:all .25s cubic-bezier(.4,0,.2,1);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:64px;margin-top:2px}.nav-item-active .nav-label{color:#1890ff;font-weight:600;transform:scale(1.02)}@media (max-width: 320px){.nav-icon{font-size:20px;width:24px;height:24px}.nav-label{font-size:10px}.nav-container{height:60px;padding:4px 8px}.nav-item{margin:0 2px}}@media (min-width: 768px){.bottom-navigation{display:none}}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-navigation{padding-bottom:calc(env(safe-area-inset-bottom) + 6px)}}@keyframes navItemBounce{0%{transform:translateY(-2px) scale(1)}50%{transform:translateY(-4px) scale(1.1)}to{transform:translateY(-2px) scale(1.08)}}.nav-item-active .nav-icon{animation:navItemBounce .4s cubic-bezier(.68,-.55,.265,1.55)}@keyframes ripple{0%{transform:scale(0);opacity:.6}to{transform:scale(2);opacity:0}}.nav-item:after{content:"";position:absolute;width:100%;height:100%;border-radius:12px;background:#1890ff33;transform:scale(0);opacity:0;pointer-events:none}.nav-item:active:after{animation:ripple .5s ease-out}.face-attendance-page{padding:16px;min-height:100vh;background:#f5f5f5}.face-attendance-page .ant-card{border-radius:8px;box-shadow:0 2px 8px #00000014}.face-attendance-page .ant-list-item{transition:background .3s}.face-attendance-page .ant-list-item:hover{background:#fafafa}.face-attendance-page .ant-avatar{transition:transform .3s}.face-attendance-page .ant-avatar:hover{transform:scale(1.1)}.page-content{padding:8px 8px 80px;background-color:#f5f5f7;min-height:100vh}.user-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.user-name{font-size:16px;font-weight:600;color:#333;margin-bottom:2px}.user-title{font-size:12px;color:#666;margin-bottom:4px}.env-badge{font-size:10px;color:#52c41a;font-weight:500}.stats-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.stat-item{text-align:center;padding:8px}.stat-title{font-size:12px;color:#666;margin-bottom:4px}.stat-value{font-size:20px;font-weight:700}.schedule-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.schedule-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.schedule-item:last-child{border-bottom:none}.schedule-content{width:100%}.schedule-header{display:flex;align-items:center;margin-bottom:6px}.schedule-time{margin-left:8px;font-size:12px;color:#666}.schedule-title{font-size:14px;font-weight:500;color:#333;margin-bottom:4px}.schedule-meta{font-size:12px;color:#999}.activity-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.activity-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.activity-item:last-child{border-bottom:none}.activity-icon{width:32px;height:32px;border-radius:50%;background-color:#f0f2f5;display:flex;align-items:center;justify-content:center}.activity-content{font-size:14px;color:#333;margin-bottom:2px}.activity-time{font-size:12px;color:#999}.kpi-overview-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.overall-score{text-align:center;margin-bottom:16px}.kpi-details-card,.achievements-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.kpi-detail-item{padding:16px 0;border-bottom:1px solid #f0f0f0}.kpi-detail-item:last-child{border-bottom:none}.kpi-description{margin-bottom:8px;color:#666;font-size:13px}.kpi-progress{margin-bottom:4px}.kpi-trend{text-align:right;min-width:60px}.profile-header-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.profile-header{display:flex;align-items:center;gap:16px}.profile-info{flex:1}.profile-name{font-size:18px;font-weight:600;color:#333;margin-bottom:4px}.profile-title{font-size:14px;color:#666;margin-bottom:4px}.profile-meta{font-size:12px;color:#999;margin-bottom:4px}.profile-env{font-size:12px;color:#52c41a}.profile-details-card,.settings-section-card,.logout-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.profile-details{display:flex;flex-direction:column;gap:16px}.detail-item{display:flex;align-items:center;gap:12px}.detail-icon{color:#1890ff;font-size:16px;width:20px}.detail-label{font-size:14px;color:#666;min-width:80px}.detail-value{font-size:14px;color:#333;flex:1}.settings-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.settings-item:last-child{border-bottom:none}.settings-control{display:flex;align-items:center}.activities-list-card,.students-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.activity-list-item,.student-list-item{padding:16px 0;border-bottom:1px solid #f0f0f0}.activity-list-item:last-child,.student-list-item:last-child{border-bottom:none}.activity-title{font-size:16px;font-weight:500;color:#333}.activity-description{margin-top:8px}.activity-meta{margin-top:8px;font-size:12px;color:#666}.activity-extra{margin-top:8px;font-size:12px;color:#999}.activity-actions,.student-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.calendar-card,.daily-schedule-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.events{list-style:none;margin:0;padding:0}.events li{margin-bottom:2px;font-size:11px}.notes-month{text-align:center;font-size:12px}.schedule-list-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.schedule-list-item:last-child{border-bottom:none}.class-name{font-size:14px;font-weight:500;color:#333;margin-bottom:4px}.class-meta{font-size:12px;color:#666}.empty-schedule{text-align:center;padding:40px 20px;color:#999}.students-overview-card,.search-filter-card,.students-list-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.student-list-item{padding:16px 0;border-bottom:1px solid #f0f0f0}.student-list-item:last-child{border-bottom:none}.student-header{width:100%}.student-info-row{display:flex;justify-content:space-between;align-items:flex-start;width:100%}.student-name-section{display:flex;flex-direction:column;align-items:flex-start;gap:6px;flex:1}.student-name{font-size:16px;font-weight:500;color:#333}.student-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.student-age{font-size:11px;color:#666;background:#f5f5f5;padding:2px 6px;border-radius:10px;white-space:nowrap}.student-content{margin-top:8px}.student-basic{margin-bottom:12px}.basic-info{display:flex;justify-content:space-between;margin-bottom:4px}.class-info{color:#333;font-size:13px;font-weight:500}.parent-info{color:#666;font-size:12px}.contact-info{color:#999;font-size:12px;display:flex;align-items:center;margin-bottom:6px}.class-progress{background:#fafafa;padding:4px 8px;border-radius:6px;font-size:12px;margin-bottom:8px}.progress-text{color:#666}.progress-value{font-weight:600;margin-right:6px}.student-stats{background:#fafafa;border-radius:8px;padding:8px 12px;margin-bottom:8px}.stat-row{display:flex;justify-content:space-around}.stat-item{text-align:center;flex:1}.stat-label{display:block;font-size:10px;color:#999;margin-bottom:2px}.stat-value{display:block;font-size:14px;font-weight:600}.student-awards{display:flex;align-items:center;gap:4px;margin-top:4px}.more-awards{font-size:10px;color:#999;background:#f0f0f0;padding:1px 4px;border-radius:8px}.student-actions{display:flex;align-items:center;min-width:60px}.class-overview-card,.classes-list-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.class-list-item{padding:16px 0;border-bottom:1px solid #f0f0f0}.class-list-item:last-child{border-bottom:none}.class-header{width:100%}.class-title-row{display:flex;justify-content:space-between;align-items:center;width:100%}.class-name{font-size:16px;font-weight:500;color:#333;flex:1}.class-content{margin-top:8px}.class-basic-info{margin-bottom:10px}.time-location{display:flex;flex-direction:column;gap:4px}.info-item{display:flex;align-items:center;font-size:12px;color:#666}.class-stats{background:#fafafa;border-radius:6px;padding:8px 10px}.stats-row{display:flex;justify-content:space-between;align-items:center}.stats-left{flex:1}.student-count{font-size:13px;color:#333;font-weight:500}.stats-right{display:flex;align-items:center}.attendance-display{display:flex;align-items:center;gap:6px}.attendance-text{font-size:12px;color:#666;font-weight:500;min-width:30px}.class-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end;min-width:80px}@media (max-width: 480px){.student-name-section{gap:4px}.student-name{font-size:15px}.student-tags{gap:4px}.student-age{font-size:10px;padding:1px 4px}.basic-info{flex-direction:column;gap:3px}.class-info{font-size:12px}.parent-info{font-size:11px}.stat-row{gap:8px}.stat-item{min-width:0}.stat-label{font-size:9px}.stat-value{font-size:12px}.class-actions{min-width:70px}.time-location{gap:3px}.info-item{font-size:11px}.student-count{font-size:12px}.attendance-text{font-size:11px;min-width:25px}}.crm-overview-card,.crm-filter-card,.crm-list-card{margin-bottom:12px;border-radius:12px;box-shadow:0 2px 8px #0000000f}.stat-card{text-align:center;padding:8px;background:#fafafa;border-radius:8px}.stat-number{font-size:20px;font-weight:700;line-height:1.2}.stat-label{font-size:11px;color:#666;margin-top:2px}.conversion-progress{background:#fafafa;padding:10px;border-radius:8px;margin-top:8px}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.progress-label{font-size:12px;color:#666}.progress-value{font-size:12px;font-weight:700;color:#722ed1}.conversion-rate{text-align:center;font-size:11px;color:#666;margin-top:4px}.customer-list-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.customer-list-item:last-child{border-bottom:none}.customer-header{width:100%}.customer-name-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px}.customer-name{font-size:15px;font-weight:500;color:#333;flex:1}.customer-badges{display:flex;gap:4px;flex-shrink:0}.customer-content{margin-top:6px}.customer-contact{margin-bottom:6px}.phone-row{display:flex;align-items:center;justify-content:space-between}.phone-number{font-size:12px;color:#666;flex:1;margin-right:8px}.child-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;color:#666}.child-detail{font-weight:500}.location-info{font-size:11px;color:#999}.customer-tags{margin-bottom:8px;display:flex;align-items:center;flex-wrap:wrap;gap:4px}.more-tags{font-size:10px;color:#999;background:#f0f0f0;padding:1px 4px;border-radius:6px}.follow-summary{display:flex;justify-content:space-between;align-items:center;background:#f8f9fa;padding:6px 8px;border-radius:6px;font-size:11px}.follow-left{display:flex;gap:8px;color:#666}.follow-count{color:#1890ff;font-weight:500}.last-contact{color:#999}.follow-right{color:#fa8c16;font-weight:500}.budget-info{font-size:10px}.customer-actions{display:flex;align-items:center;margin-left:8px}.action-buttons{display:flex;flex-direction:column;gap:6px}.action-btn{width:60px;height:28px;font-size:11px;padding:0}@media (max-width: 480px){.crm-overview-card .ant-card-body{padding:12px}.stat-card{padding:6px}.stat-number{font-size:18px}.stat-label{font-size:10px}.customer-list-item{padding:10px 0}.customer-name{font-size:14px}.phone-number,.child-info{font-size:11px}.follow-summary{padding:4px 6px;font-size:10px}.action-btn{width:55px;height:26px;font-size:10px}.crm-filter-card .ant-space-vertical{gap:8px}}.customer-detail-content{padding:8px 0}.detail-sections{margin-bottom:16px}.detail-row{display:flex;align-items:flex-start;padding:8px 0;border-bottom:1px solid #f5f5f5;min-height:40px}.detail-row:last-child{border-bottom:none}.detail-label{display:inline-block;width:80px;flex-shrink:0;font-size:14px;color:#666;font-weight:500;line-height:1.5}.detail-value{flex:1;font-size:14px;color:#333;line-height:1.5;word-break:break-all}.detail-section{margin-bottom:16px}.detail-section h4{font-size:14px;color:#333;margin-bottom:8px;font-weight:600}@media (max-width: 480px){.ant-modal{margin:0;padding:0}.ant-modal-content{border-radius:12px 12px 0 0}.detail-label{width:70px;font-size:13px}.detail-value{font-size:13px}.detail-row{padding:6px 0;min-height:36px}}.app-layout{min-height:100vh;background-color:#f5f5f7}.app-content{min-height:100vh;padding:0;overflow-x:hidden}.loading-container{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#f5f5f7;z-index:9999}@media (max-width: 768px){.ant-card{margin-bottom:8px;border-radius:12px;border:none}.ant-card-head{padding:12px 16px;min-height:auto;border-bottom:1px solid #f0f0f0}.ant-card-head-title{font-size:16px;font-weight:600;color:#333}.ant-card-body{padding:16px}.ant-card-extra{font-size:14px}}.ant-statistic-title{margin-bottom:4px;font-size:12px;color:#666;font-weight:400}.ant-statistic-content{font-size:18px;font-weight:700}.ant-statistic-content-value{font-weight:600}.ant-progress{margin-bottom:8px}.ant-progress-text{font-size:12px;font-weight:500}.ant-progress-inner,.ant-progress-bg{border-radius:6px}.ant-list{background:transparent}.ant-list-item{padding:12px 0;border-bottom:1px solid #f0f0f0}.ant-list-item:last-child{border-bottom:none}.ant-list-item-meta-title{margin-bottom:4px;font-size:14px;color:#333;font-weight:500}.ant-list-item-meta-description{font-size:12px;color:#666;line-height:1.4}.ant-list-item-meta-avatar{margin-right:12px}.ant-badge-status-text{font-size:12px;margin-left:4px;color:#666}.ant-badge-status-dot{width:8px;height:8px}.ant-btn{border-radius:6px;font-weight:500;transition:all .3s ease}.ant-btn-primary{background:linear-gradient(135deg,#1890ff,#096dd9);border:none;box-shadow:0 2px 4px #1890ff4d}.ant-btn-primary:hover{background:linear-gradient(135deg,#096dd9,#0050b3);box-shadow:0 4px 8px #1890ff66;transform:translateY(-1px)}.ant-btn-sm{height:28px;padding:0 12px;font-size:12px;border-radius:14px}.ant-float-btn-group .ant-float-btn{box-shadow:0 4px 12px #00000026;background:#fff}.ant-float-btn-group .ant-float-btn-primary{background:#1890ff}.ant-float-btn-group .ant-float-btn:hover{transform:scale(1.1)}.ant-tag{border-radius:10px;font-size:11px;font-weight:500;border:none}.ant-tag-blue{background:#1890ff1a;color:#1890ff}.ant-tag-green{background:#52c41a1a;color:#52c41a}.ant-tag-orange{background:#fa8c161a;color:#fa8c16}.ant-tag-gold{background:#faad141a;color:#faad14}.ant-modal-content{border-radius:12px}.ant-modal-header{border-radius:12px 12px 0 0;padding:16px 24px}.ant-modal-body{padding:24px}.ant-form-item{margin-bottom:16px}.ant-form-item-label{font-weight:500}.ant-input,.ant-input-affix-wrapper{border-radius:6px;border:1px solid #d9d9d9;transition:all .3s ease}.ant-input:focus,.ant-input-affix-wrapper:focus{box-shadow:0 0 0 2px #1890ff33}.ant-picker-calendar{background:transparent}.ant-picker-calendar-header{padding:8px 0}.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-calendar-date,.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-calendar-date{background:#1890ff;color:#fff}.ant-switch{background:#00000040}.ant-switch-checked{background:#1890ff}@media (max-width: 480px){.ant-row{margin-left:-8px;margin-right:-8px}.ant-row>.ant-col{padding-left:8px;padding-right:8px}.ant-space-item{margin-right:8px}.app-content{padding-bottom:60px}}.error-container{text-align:center;padding:40px 20px;color:#999}.error-container .ant-result-title{color:#333}.error-container .ant-result-subtitle{color:#666}
