*{margin:0;-webkit-tap-highlight-color:transparent}html,body{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%}body{overflow-x:hidden;font-size:16px}uni-app,uni-page,uni-page-wrapper,uni-page-body{display:block;box-sizing:border-box;width:100%}uni-page-wrapper{position:relative}#app,uni-app,uni-page,uni-page-wrapper{height:100%}.uni-mask{position:fixed;z-index:999;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,.5)}.uni-fade-enter-active,.uni-fade-leave-active{transition-duration:.25s;transition-property:opacity;transition-timing-function:ease}.uni-fade-enter-from,.uni-fade-leave-active{opacity:0}.uni-loading,uni-button[loading]:before{background-color:transparent;background-image:url(data:image/svg+xml;base64,\ PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=);background-repeat:no-repeat}.uni-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;animation:uni-loading 1s steps(12,end) infinite;background-size:100%}@keyframes uni-loading{0%{transform:rotate3d(0,0,1,0)}to{transform:rotate3d(0,0,1,360deg)}}html{--primary-color: #007aff;--UI-BG: #fff;--UI-BG-1: #f7f7f7;--UI-BG-2: #fff;--UI-BG-3: #f7f7f7;--UI-BG-4: #4c4c4c;--UI-BG-5: #fff;--UI-FG: #000;--UI-FG-0: rgba(0, 0, 0, .9);--UI-FG-HALF: rgba(0, 0, 0, .9);--UI-FG-1: rgba(0, 0, 0, .5);--UI-FG-2: rgba(0, 0, 0, .3);--UI-FG-3: rgba(0, 0, 0, .1)}uni-page[data-type] uni-page-body{background-color:transparent}body:after{position:fixed;content:"";left:-1000px;top:-1000px;animation:shadow-preload .1s;animation-delay:3s}@keyframes shadow-preload{0%{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}to{background-image:url(https://cdn.dcloud.net.cn/img/shadow-grey.png)}}.uni-async-error{position:absolute;left:0;right:0;top:0;bottom:0;color:#999;padding:100px 10px;text-align:center}.uni-async-loading{box-sizing:border-box;width:100%;padding:50px;text-align:center}.uni-async-loading .uni-loading{width:30px;height:30px}uni-tabbar{display:block;box-sizing:border-box;width:100%;z-index:998}.uni-tabbar{display:flex;z-index:998;box-sizing:border-box}.uni-tabbar-top,.uni-tabbar-bottom,.uni-tabbar-top .uni-tabbar,.uni-tabbar-bottom .uni-tabbar{position:fixed;left:var(--window-left);right:var(--window-right)}.uni-app--showlayout+.uni-tabbar-top,.uni-app--showlayout+.uni-tabbar-bottom,.uni-app--showlayout+.uni-tabbar-top .uni-tabbar,.uni-app--showlayout+.uni-tabbar-bottom .uni-tabbar{left:var(--window-margin);right:var(--window-margin)}.uni-tabbar-bottom .uni-tabbar{bottom:0;padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.uni-tabbar~.uni-placeholder{width:100%;margin-bottom:0;margin-bottom:constant(safe-area-inset-bottom);margin-bottom:env(safe-area-inset-bottom)}.uni-tabbar *{box-sizing:border-box}.uni-tabbar__item{display:flex;justify-content:center;align-items:center;flex-direction:column;flex:1;font-size:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.uni-tabbar__bd{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}.uni-tabbar__icon{position:relative;display:inline-block;margin-top:5px}.uni-tabbar__icon.uni-tabbar__icon__diff{margin-top:0;width:34px;height:34px}.uni-tabbar__icon img{width:100%;height:100%}.uni-tabbar__iconfont{font-family:UniTabbarIconFont}.uni-tabbar__label{position:relative;text-align:center;font-size:10px}.uni-tabbar-border{position:absolute;left:0;top:0;width:100%;height:1px;transform:scaleY(.5)}.uni-tabbar__reddot{position:absolute;top:2px;right:0;width:12px;height:12px;border-radius:50%;background-color:#f43530;color:#fff;transform:translate(40%)}.uni-tabbar__badge{width:auto;height:16px;line-height:16px;border-radius:16px;min-width:16px;padding:0 2px;font-size:12px;text-align:center;white-space:nowrap}.uni-tabbar__mid{display:flex;justify-content:center;position:absolute;bottom:0;background-size:100% 100%}.uni-app--showtabbar uni-page-wrapper{display:block;height:calc(100% - var(--tab-bar-height));height:calc(100% - var(--tab-bar-height) - constant(safe-area-inset-bottom));height:calc(100% - var(--tab-bar-height) - env(safe-area-inset-bottom))}uni-page[data-type] uni-page-wrapper{height:100%}.uni-app--showtabbar uni-page-wrapper:after{content:"";display:block;width:100%;height:var(--tab-bar-height);height:calc(var(--tab-bar-height) + constant(safe-area-inset-bottom));height:calc(var(--tab-bar-height) + env(safe-area-inset-bottom))}.uni-app--showtabbar uni-page-head[uni-page-head-type=default]~uni-page-wrapper{height:calc(100% - 44px - var(--tab-bar-height));height:calc(100% - 44px - constant(safe-area-inset-top) - var(--tab-bar-height) - constant(safe-area-inset-bottom));height:calc(100% - 44px - env(safe-area-inset-top) - var(--tab-bar-height) - env(safe-area-inset-bottom))}:root{--color-bg: #f8fbf6;--color-bg2: #ffffff;--color-ink: #17332a;--color-muted: #65746d;--color-rule: #d9e7dd;--color-accent: #2f7d4f;--color-accent2: #d9903d;--color-soft: #edf7ee;--color-header-purple-start: #6b4ce6;--color-header-purple-end: #8b6ef5;--color-header-red-start: #ef5350;--color-header-red-end: #f27573;--color-header-green-start: #2f7d4f;--color-header-green-end: #4a9d6a;--color-card-bg: #ffffff;--color-input-bg: #fafafa;--color-modal-overlay: rgba(0,0,0,.5);--color-shadow: rgba(0,0,0,.04);--color-sub-nav-bg: #f5f7f5;--color-tag-bg: #f5f5f5;--color-empty-text: #65746d}html.dark-mode{--color-bg: #0f0f23;--color-bg2: #1a1a2e;--color-ink: #e0e0e0;--color-muted: #8899aa;--color-rule: #2a3a5c;--color-accent: #3d9d63;--color-accent2: #e8a850;--color-soft: #1a2744;--color-header-purple-start: #4a35a0;--color-header-purple-end: #5a48b8;--color-header-red-start: #b71c1c;--color-header-red-end: #d32f2f;--color-header-green-start: #1b5e20;--color-header-green-end: #2e7d32;--color-card-bg: #16213e;--color-input-bg: #1a1a2e;--color-modal-overlay: rgba(0,0,0,.7);--color-shadow: rgba(0,0,0,.2);--color-sub-nav-bg: #1a1a2e;--color-tag-bg: #2a2a44;--color-empty-text: #7788aa}html.dark-mode .input-wrapper,html.dark-mode uni-input,html.dark-mode uni-textarea{background:var(--color-bg2)!important;color:var(--color-ink)!important;border-color:var(--color-rule)!important}html.dark-mode .card,html.dark-mode .section-card,html.dark-mode .plan-card,html.dark-mode .chart-section,html.dark-mode .card-item,html.dark-mode .mistake-card,html.dark-mode .review-card,html.dark-mode .subject-card,html.dark-mode .stat-card,html.dark-mode .profile-card,html.dark-mode .stats-row>*{background:var(--color-bg2)!important;border-color:var(--color-rule)!important;color:var(--color-ink)!important}html.dark-mode .stat-card,html.dark-mode .stats-overview .stat-card,html.dark-mode .stats-row .stat-item{background:var(--color-bg2)!important;border-color:var(--color-rule)!important}html.dark-mode .task-select,html.dark-mode .tag-chip,html.dark-mode .tag-preview .tag-chip,html.dark-mode .mastery-badge,html.dark-mode .card-tag,html.dark-mode .mistake-tag,html.dark-mode .subject-item,html.dark-mode .filter-item,html.dark-mode .mode-btn,html.dark-mode .legend-item,html.dark-mode .manage-item,html.dark-mode .export-option,html.dark-mode .record-item,html.dark-mode .history-item,html.dark-mode .tag-picker-chip,html.dark-mode .upload-action-btn,html.dark-mode .image-upload-area{background:var(--color-soft)!important}html.dark-mode .sub-nav,html.dark-mode .mode-toggle,html.dark-mode .time-tabs{background:var(--color-sub-nav-bg)!important}html.dark-mode .empty-text,html.dark-mode .empty-hint{color:var(--color-empty-text)!important}html.dark-mode .section-title,html.dark-mode .card-title,html.dark-mode .section-header .section-title,html.dark-mode .page-title,html.dark-mode .title{color:var(--color-ink)!important}html.dark-mode .section-count,html.dark-mode .stat-label,html.dark-mode .stat-desc,html.dark-mode .card-item-subject,html.dark-mode .review-count,html.dark-mode .mistake-date,html.dark-mode .time-unit,html.dark-mode .setting-unit,html.dark-mode .record-time,html.dark-mode .history-time,html.dark-mode .info-label,html.dark-mode .form-label,html.dark-mode .menu-title,html.dark-mode .task-duration{color:var(--color-muted)!important}html.dark-mode .review-counter,html.dark-mode .question-label,html.dark-mode .question-text,html.dark-mode .answer-text,html.dark-mode .analysis-text{color:var(--color-ink)!important}html.dark-mode .review-subject{background:var(--color-soft)!important}html.dark-mode .stat-num,html.dark-mode .stat-value,html.dark-mode .progress-num{color:var(--color-accent)!important}html.dark-mode .modal-overlay{background:var(--color-modal-overlay)!important}html.dark-mode .card,html.dark-mode .section-card,html.dark-mode .card-item,html.dark-mode .mistake-card{box-shadow:0 1px 4px var(--color-shadow)!important}html.dark-mode .manual-row,html.dark-mode .manual-input{background:var(--color-input-bg)!important;border-color:var(--color-rule)!important}html.dark-mode .filter-item{background:var(--color-tag-bg)!important;color:var(--color-muted)!important}html.dark-mode .filter-item.active{background:var(--color-accent)!important;color:#fff!important}html.dark-mode .tag-picker-chip{background:var(--color-tag-bg)!important;color:var(--color-muted)!important}html.dark-mode .tag-picker-chip.picked{background:rgba(107,76,230,.2)!important;color:#8b6ef5!important;border-color:#8b6ef5!important}*{box-sizing:border-box}uni-page-body,.uni-page-body{margin:0;font-family:Outfit,Microsoft YaHei,sans-serif;color:var(--color-ink, #17332a);background:var(--color-bg, #f8fbf6);line-height:1.72;min-height:100vh;-webkit-font-smoothing:antialiased}body{background:var(--color-bg, #f8fbf6)}html,body{background:var(--color-bg, #f8fbf6);min-height:100vh}.page{width:min(1080px,100%);margin:0 auto;padding:0 20px;box-sizing:border-box}.page-sm{width:min(1080px,100% - 24px);margin:0 auto}.btn-primary{background:var(--color-accent, #2f7d4f);color:#fff;border:none;border-radius:14px;padding:14px 28px;font-size:16px;font-weight:600;transition:all .25s;box-shadow:0 4px 14px rgba(47,125,79,.25);cursor:pointer}.btn-primary:active{transform:scale(.97);opacity:.9;box-shadow:0 2px 8px rgba(47,125,79,.2)}.btn-secondary{background:var(--color-bg2, #ffffff);color:var(--color-accent, #2f7d4f);border:1.5px solid var(--color-accent, #2f7d4f);border-radius:14px;padding:14px 28px;font-size:16px;font-weight:600;transition:all .2s;cursor:pointer}.btn-secondary:active{transform:scale(.97);background:var(--color-soft, #edf7ee)}.input-base{width:100%;background:var(--color-bg2, #ffffff);border:1.5px solid var(--color-rule, #d9e7dd);border-radius:14px;padding:14px 18px;font-size:16px;color:var(--color-ink, #17332a);transition:border-color .2s}.input-base:focus{border-color:var(--color-accent, #2f7d4f);outline:none;box-shadow:0 0 0 3px rgba(47,125,79,.1)}.input-base::-moz-placeholder{color:var(--color-muted, #65746d)}.input-base::placeholder{color:var(--color-muted, #65746d)}.input-wrapper{width:100%;padding:14px 16px;border:1.5px solid var(--color-rule, #d9e7dd);border-radius:14px;background:var(--color-bg2, #ffffff);transition:border-color .2s,box-shadow .2s}.input-wrapper:focus-within{border-color:var(--color-accent, #2f7d4f);box-shadow:0 0 0 3px rgba(47,125,79,.1)}.input-field{width:100%;font-size:16px;color:var(--color-ink, #17332a);border:none;outline:none;background:transparent;padding:0;line-height:1.5}.card{background:var(--color-bg2, #ffffff);border:1px solid var(--color-rule, #d9e7dd);border-radius:20px;padding:20px;box-shadow:0 2px 8px rgba(0,0,0,.04);transition:box-shadow .2s,transform .2s}.card:active{transform:scale(.99)}.card-hover{cursor:pointer}.card-hover:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}.text-muted{color:var(--color-muted, #65746d)}.text-accent{color:var(--color-accent, #2f7d4f)}.text-center{text-align:center}.text-sm{font-size:14px}.text-lg{font-size:18px}.text-xl{font-size:24px}.font-bold{font-weight:700}.flex-row{display:flex;flex-direction:row}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-20{gap:20px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.page-header,.page-header-gradient{padding:60px 0 24px;margin-bottom:20px}.page-header-gradient{background:linear-gradient(135deg,var(--color-header-green-start, #2f7d4f) 0%,var(--color-header-green-end, #4a9d6a) 100%);border-radius:0 0 32px 32px;padding-left:20px;padding-right:20px;margin-left:-20px;margin-right:-20px}.page-header-title{font-size:28px;font-weight:700;color:#fff;display:block;margin-bottom:4px}.page-header-subtitle{font-size:14px;color:rgba(255,255,255,.75)}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.section-title{font-size:18px;font-weight:600;color:var(--color-ink, #17332a)}.section-link{font-size:14px;color:var(--color-accent, #2f7d4f);font-weight:500}.empty-state{display:flex;flex-direction:column;align-items:center;padding:60px 20px;text-align:center}.empty-icon{font-size:56px;margin-bottom:16px;opacity:.8}.empty-title{font-size:18px;font-weight:600;color:var(--color-ink, #17332a);margin-bottom:8px}.empty-hint{font-size:14px;color:var(--color-muted, #65746d);line-height:1.6}.progress-bar{height:8px;background:var(--color-soft, #edf7ee);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:var(--color-accent, #2f7d4f);border-radius:4px;transition:width .5s ease}.tag{display:inline-flex;align-items:center;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500}.tag-green{background:#e8f5e9;color:#2e7d32}.tag-orange{background:#fff3e0;color:#e65100}.tag-red{background:#ffebee;color:#c62828}.tag-blue{background:#e3f2fd;color:#1565c0}.tag-purple{background:#f3e5f5;color:#7b1fa2}.fab{position:fixed;right:20px;bottom:120px;z-index:100}.fab-btn{display:flex;align-items:center;gap:8px;padding:14px 22px;background:var(--color-accent, #2f7d4f);border-radius:50px;box-shadow:0 4px 16px rgba(47,125,79,.35);color:#fff;font-size:15px;font-weight:600;transition:all .2s}.fab-btn:active{transform:scale(.95);box-shadow:0 2px 8px rgba(47,125,79,.25)}.bottom-space{height:100px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fade-in{animation:fadeInUp .4s ease}.animate-pulse{animation:pulse 2s ease infinite}
