body{margin:0;touch-action:manipulation;-webkit-user-select:none;user-select:none}input{-webkit-user-select:auto;user-select:auto}:root{--c-primary: #2A9D8F;--c-primary-strong: #1F7A6F;--c-primary-press: #17635B;--c-primary-soft: #E4F2EF;--c-accent: #F08A3C;--c-accent-strong: #D9742A;--c-accent-soft: #FCEEDF;--c-bg: #FAF6EE;--c-surface: #FFFFFF;--c-border: #E9E1D2;--c-border-strong: #D8CEBA;--c-text: #33413B;--c-text-sub: #8A938D;--c-text-faint: #B7BCB4;--c-good: #3BA55D;--c-good-soft: #E6F4EB;--c-ok: #DD9A0B;--c-ok-soft: #FBF1DB;--c-weak: #E14B4B;--c-weak-soft: #FBE5E5;--c-gray-soft: #EFECE4;--c-gray-text: #9A968C;--fs-xs: 13px;--fs-sm: 14px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 28px;--fs-3xl: 40px;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-pill: 999px;--sh-sm: 0 1px 3px rgba(51, 65, 59, .05);--sh-md: 0 4px 16px rgba(51, 65, 59, .07);--sh-lg: 0 12px 32px rgba(51, 65, 59, .1);--topbar-h: 68px;--nav-h: 76px;--font: -apple-system, "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--van-primary-color: var(--c-primary);--van-dialog-confirm-button-text-color: var(--c-primary-strong);--van-toast-background: rgba(51, 65, 59, .88)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);font-size:var(--fs-md);line-height:1.55;color:var(--c-text);background:radial-gradient(1200px 420px at 85% -8%,rgba(42,157,143,.06),transparent 60%),radial-gradient(900px 380px at -10% 0%,rgba(240,138,60,.05),transparent 55%),var(--c-bg);min-height:100vh;-webkit-font-smoothing:antialiased}.answer-zone,.bottomnav{user-select:none;-webkit-user-select:none;touch-action:manipulation}button{font-family:inherit}a{color:inherit;text-decoration:none}b{font-weight:700}::selection{background:var(--c-primary-soft)}.portrait-overlay{display:none}@media (orientation: portrait){.portrait-overlay{position:fixed;inset:0;z-index:999;background:var(--c-bg);display:flex;align-items:center;justify-content:center}}.portrait-hint{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--c-primary-strong);font-weight:700}.portrait-hint svg{width:64px;height:64px}.portrait-hint small{font-size:var(--fs-sm);color:var(--c-text-sub);font-weight:400}.topbar{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--topbar-h);display:flex;align-items:center;gap:16px;padding:0 28px;background:#ffffffeb;backdrop-filter:blur(8px);border-bottom:1px solid var(--c-border)}.topbar-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:var(--fs-lg);color:var(--c-primary-strong)}.topbar-brand svg{width:34px;height:34px}.topbar-title{flex:1;text-align:center;font-size:var(--fs-lg);font-weight:700;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:12px}.topbar-user{display:flex;align-items:center;gap:10px}.user-meta{display:flex;flex-direction:column;line-height:1.3}.user-meta b{font-size:var(--fs-sm)}.user-meta i{font-style:normal;font-size:var(--fs-xs);color:var(--c-text-sub)}.avatar{width:42px;height:42px;border-radius:50%;background:var(--c-primary-soft);color:var(--c-primary-strong);display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-lg);font-weight:700;flex:none}.main{max-width:1080px;margin:0 auto;padding:calc(var(--topbar-h) + 24px) 28px calc(24px + var(--nav-h))}.main.has-nav{padding-bottom:calc(24px + var(--nav-h))}.main.focus{max-width:960px;padding-bottom:128px}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:100;height:var(--nav-h);display:flex;justify-content:center;gap:clamp(24px,8vw,96px);background:#fffffff5;backdrop-filter:blur(8px);border-top:1px solid var(--c-border);padding-bottom:env(safe-area-inset-bottom);user-select:none;-webkit-user-select:none;touch-action:manipulation}.bottomnav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:96px;color:var(--c-text-sub);font-size:var(--fs-sm);border-radius:var(--r-md);transition:color .15s}.bottomnav a svg{width:26px;height:26px}.bottomnav a.active{color:var(--c-primary-strong);font-weight:700}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.card-pad{padding:24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--r-pill);cursor:pointer;font-size:var(--fs-lg);font-weight:700;line-height:1;height:56px;padding:0 32px;transition:background-color .12s ease,transform .12s ease,box-shadow .12s ease}.btn:active{transform:scale(.97)}.btn svg{width:22px;height:22px}.btn-primary{background:var(--c-primary);color:#fff;box-shadow:var(--sh-sm)}.btn-primary:hover{background:var(--c-primary-strong)}.btn-primary:active{background:var(--c-primary-press)}.btn-ghost{background:transparent;color:var(--c-primary-strong);border:2px solid var(--c-primary)}.btn-ghost:hover{background:var(--c-primary-soft)}.btn-soft{background:var(--c-primary-soft);color:var(--c-primary-strong)}.btn-soft:hover{background:#d5eae5}.btn-danger{background:var(--c-weak);color:#fff}.btn-danger:hover{background:#c93e3e}.btn-md{height:48px;padding:0 24px;font-size:var(--fs-md)}.btn-md svg{width:18px;height:18px}.btn:disabled{background:var(--c-gray-soft);color:var(--c-text-faint);box-shadow:none;cursor:not-allowed;transform:none}.btn-ghost:disabled{background:transparent;border-color:var(--c-border);color:var(--c-text-faint)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--r-md);border:none;cursor:pointer;background:transparent;color:var(--c-text-sub);transition:background-color .12s ease}.icon-btn:hover{background:var(--c-gray-soft)}.icon-btn svg{width:24px;height:24px}.chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}.chip svg{width:15px;height:15px}.chip-subject-yu,.chip-subject-chinese{background:var(--c-accent-soft);color:var(--c-accent-strong)}.chip-subject-shu,.chip-subject-math{background:var(--c-primary-soft);color:var(--c-primary-strong)}.chip-subject-en,.chip-subject-english{background:var(--c-good-soft);color:#2e7d47}.chip-gray{background:var(--c-gray-soft);color:var(--c-gray-text)}.chip-warn{background:var(--c-ok-soft);color:#a8740a}.status-badge{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:700;white-space:nowrap}.status-todo{background:var(--c-primary-soft);color:var(--c-primary-strong)}.status-doing{background:var(--c-ok-soft);color:#a8740a}.status-done{background:var(--c-good-soft);color:#2e7d47}.status-expired{background:var(--c-gray-soft);color:var(--c-gray-text)}.kp-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--r-pill);font-size:var(--fs-md);font-weight:700}.kp-chip .kp-dot{width:12px;height:12px;border-radius:50%;flex:none}.kp-chip small{font-weight:600;font-size:var(--fs-xs);opacity:.75}.kp-weak{background:var(--c-weak-soft);color:#b73838}.kp-weak .kp-dot{background:var(--c-weak)}.kp-ok{background:var(--c-ok-soft);color:#a8740a}.kp-ok .kp-dot{background:var(--c-ok)}.kp-good{background:var(--c-good-soft);color:#2e7d47}.kp-good .kp-dot{background:var(--c-good)}.kp-none{background:var(--c-gray-soft);color:var(--c-gray-text)}.kp-none .kp-dot{background:var(--c-gray-text)}.kp-legend{display:flex;flex-wrap:wrap;gap:8px 20px;color:var(--c-text-sub);font-size:var(--fs-sm)}.kp-legend .kp-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:1px}.task-card{display:flex;align-items:center;gap:20px;padding:22px 24px;margin-bottom:16px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);transition:border-color .12s ease,box-shadow .12s ease}.task-card:hover{border-color:var(--c-border-strong);box-shadow:var(--sh-md)}.task-card.expired{opacity:.55}.task-icon{width:60px;height:60px;border-radius:var(--r-md);flex:none;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xl);font-weight:800}.task-main{flex:1;min-width:0}.task-name{font-size:var(--fs-xl);font-weight:700;margin-bottom:6px}.task-meta{display:flex;flex-wrap:wrap;gap:8px;color:var(--c-text-sub);font-size:var(--fs-sm);align-items:center}.task-side{display:flex;flex-direction:column;align-items:flex-end;gap:10px;flex:none}.progress{width:200px;height:10px;border-radius:var(--r-pill);background:var(--c-gray-soft);overflow:hidden}.progress-bar{height:100%;border-radius:var(--r-pill);background:var(--c-primary)}.tabs{display:flex;gap:10px;flex-wrap:wrap}.tab{height:48px;padding:0 26px;border-radius:var(--r-pill);border:1.5px solid var(--c-border);background:var(--c-surface);font-size:var(--fs-md);font-weight:700;color:var(--c-text-sub);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.tab.active{background:var(--c-primary-soft);border-color:var(--c-primary);color:var(--c-primary-strong)}.field{margin-bottom:20px}.field-label{display:block;font-size:var(--fs-md);font-weight:700;margin-bottom:10px}.field-input{width:100%;height:60px;padding:0 20px;border:2px solid var(--c-border);border-radius:var(--r-md);font-size:var(--fs-lg);font-family:inherit;color:var(--c-text);background:var(--c-surface);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.field-input:focus{border-color:var(--c-primary);box-shadow:0 0 0 4px #2a9d8f24}.field-input::placeholder{color:var(--c-text-faint)}.field-hint{margin-top:8px;font-size:var(--fs-sm);color:var(--c-text-sub)}.qhead{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.qtype-chip{display:inline-flex;align-items:center;height:30px;padding:0 12px;border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-primary-strong);font-size:var(--fs-sm);font-weight:700}.qstem{font-size:var(--fs-xl);font-weight:700;line-height:1.6;margin:8px 0 24px}.qstem .blank{color:var(--c-primary-strong);font-weight:800;letter-spacing:2px}.options{display:grid;gap:14px}.options.cols-2{grid-template-columns:1fr 1fr}.option{display:flex;align-items:center;gap:16px;min-height:76px;padding:14px 20px;background:var(--c-surface);border:2px solid var(--c-border);border-radius:var(--r-md);font-size:20px;font-weight:600;cursor:pointer;text-align:left;width:100%;transition:border-color .12s ease,background-color .12s ease}.option:hover{border-color:var(--c-border-strong)}.option.selected{border-color:var(--c-primary);background:var(--c-primary-soft)}.option-letter{width:44px;height:44px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;background:var(--c-gray-soft);color:var(--c-text-sub);font-size:var(--fs-lg);font-weight:800}.option.selected .option-letter{background:var(--c-primary);color:#fff}.option.selected .option-letter svg{width:24px;height:24px}.fill-input{width:100%;max-width:480px;height:68px;padding:0 24px;border:2px solid var(--c-border);border-radius:var(--r-md);font-size:var(--fs-2xl);font-weight:700;text-align:center;font-family:inherit;color:var(--c-text);background:var(--c-surface);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.fill-input:focus{border-color:var(--c-primary);box-shadow:0 0 0 4px #2a9d8f24}.qdots{display:flex;gap:8px;flex-wrap:wrap}.qdot{width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;background:var(--c-gray-soft);color:var(--c-gray-text);font-size:var(--fs-sm);font-weight:700;position:relative;transition:background-color .12s ease,color .12s ease}.qdot.done{background:var(--c-primary-soft);color:var(--c-primary-strong)}.qdot.current{background:var(--c-primary);color:#fff}.qdot.flagged:after{content:"";position:absolute;top:-3px;right:-3px;width:12px;height:12px;border-radius:50%;background:var(--c-accent);border:2px solid #fff}.countdown{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 18px;border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-primary-strong);font-size:var(--fs-lg);font-weight:800;font-variant-numeric:tabular-nums}.countdown svg{width:20px;height:20px}.countdown.warning{background:var(--c-ok-soft);color:#a8740a}.countdown.danger{background:var(--c-weak-soft);color:#b73838}.flag-btn{display:inline-flex;align-items:center;gap:8px;height:52px;padding:0 22px;border-radius:var(--r-pill);border:2px solid var(--c-border);background:var(--c-surface);color:var(--c-text-sub);font-size:var(--fs-md);font-weight:700;cursor:pointer;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.flag-btn svg{width:19px;height:19px}.flag-btn.on{border-color:var(--c-accent);background:var(--c-accent-soft);color:var(--c-accent-strong)}.save-indicator{display:inline-flex;align-items:center;gap:6px;color:var(--c-text-sub);font-size:var(--fs-sm);height:32px;opacity:0;transition:opacity .15s ease}.save-indicator.show{opacity:1}.save-indicator svg{width:15px;height:15px;color:var(--c-good)}.save-indicator.pending svg{color:var(--c-ok)}.answer-footer{position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fffffff5;backdrop-filter:blur(8px);border-top:1px solid var(--c-border);padding:14px max(28px,calc((100% - 960px)/2 + 28px));padding-bottom:calc(14px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:16px}.banner{display:flex;align-items:flex-start;gap:10px;padding:14px 18px;border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1.5;margin-bottom:16px}.banner svg{width:18px;height:18px;flex:none;margin-top:2px}.banner-info{background:var(--c-primary-soft);color:var(--c-primary-strong)}.banner-warn{background:var(--c-ok-soft);color:#a8740a}.dictation-box{display:flex;flex-direction:column;align-items:center;gap:18px;padding:28px 0 8px}.audio-btn{width:108px;height:108px;border-radius:50%;border:none;cursor:pointer;background:var(--c-primary);color:#fff;box-shadow:var(--sh-md);display:flex;align-items:center;justify-content:center;transition:background-color .12s ease,transform .12s ease}.audio-btn:active{transform:scale(.96)}.audio-btn svg{width:44px;height:44px}.audio-btn.playing{background:var(--c-accent)}.audio-hint{color:var(--c-text-sub);font-size:var(--fs-sm);display:flex;align-items:center;gap:6px}.audio-hint svg{width:15px;height:15px}.score-ring{position:relative;width:168px;height:168px;margin:0 auto}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring .ring-track,.score-ring .ring-bg{fill:none;stroke:var(--c-gray-soft);stroke-width:12}.score-ring .ring-val{fill:none;stroke:var(--c-primary);stroke-width:12;stroke-linecap:round}.score-ring .ring-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.score-ring .ring-num b{font-size:var(--fs-3xl);line-height:1.1;color:var(--c-primary-strong)}.score-ring .ring-num i{font-style:normal;font-size:var(--fs-sm);color:var(--c-text-sub)}.overlay{position:fixed;inset:0;z-index:200;background:#33413b73;display:flex;align-items:center;justify-content:center;padding:24px}.modal-box{width:100%;max-width:440px;background:var(--c-surface);border-radius:var(--r-lg);padding:24px;box-shadow:var(--sh-md)}.modal-title{font-size:var(--fs-lg);font-weight:800;margin-bottom:16px}.empty-state{text-align:center;padding:56px 24px;color:var(--c-text-sub)}.empty-state svg{width:52px;height:52px;color:var(--c-text-faint);margin-bottom:14px}.skeleton{border-radius:var(--r-sm);background:linear-gradient(100deg,var(--c-gray-soft) 40%,#f6f3ec 50%,var(--c-gray-soft) 60%);background-size:200% 100%;animation:sk 1.2s ease infinite}@keyframes sk{to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.row{display:flex;align-items:center;gap:12px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.muted{color:var(--c-text-sub);font-size:var(--fs-sm)}.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.mt32{margin-top:32px}.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.mb24{margin-bottom:24px}.center{text-align:center}@media (max-width: 700px){:root{--topbar-h: 60px;--nav-h: 64px}.topbar{padding:0 12px;gap:8px}.topbar-brand span{display:none}.topbar-brand svg{width:28px;height:28px}.topbar-title{font-size:var(--fs-md)}.topbar-right{gap:8px;flex-shrink:0;margin-left:auto}.user-meta{display:none}.main{padding:calc(var(--topbar-h) + 16px) 16px calc(16px + var(--nav-h))}.main.focus{padding-bottom:116px}.task-card{flex-wrap:wrap}.task-side{flex-direction:row;width:100%;justify-content:space-between;align-items:center}.progress{width:100%}.options.cols-2{grid-template-columns:1fr}.answer-footer{padding-left:16px;padding-right:16px}.bottomnav a{min-width:72px}}
