.safe-top[data-v-d7609cd9]{height:env(safe-area-inset-top);flex-shrink:0;background:var(--bg)}.fade-enter-active[data-v-d7609cd9],.fade-leave-active[data-v-d7609cd9]{transition:opacity .18s ease}.fade-enter-from[data-v-d7609cd9],.fade-leave-to[data-v-d7609cd9]{opacity:0}:root{--brand: #3e7a5e;--brand-dark: #2e5c46;--xc: #4f8a8b;--sl: #c9a227;--sw: #d4723f;--bg: #f4f5f3;--card: #ffffff;--text: #1f2a24;--text-2: #5c6b62;--text-3: #93a199;--line: #e6e9e5;--radius: 16px;--shadow: 0 2px 10px rgba(31, 42, 36, .06);--fs-12: 12px;--fs-14: 14px;--fs-16: 16px;--fs-18: 18px;--fs-24: 24px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif;background:var(--bg);color:var(--text);display:flex;justify-content:center}#app{width:100%;max-width:480px;min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}button{font-family:inherit}.tnum{font-variant-numeric:tabular-nums}.screen{flex:1;overflow-y:auto;padding:0 16px 96px;scrollbar-width:none}.screen::-webkit-scrollbar{display:none}.screen.active{display:block;animation:fadeIn .22s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-title{font-size:var(--fs-24);font-weight:700;padding:8px 4px 4px}.page-sub{font-size:13px;color:var(--text-2);padding:0 4px 12px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:12px}.card-title{font-size:var(--fs-16);font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:12px}.card-title .more{margin-left:auto;font-size:12px;color:var(--text-3);font-weight:400;cursor:pointer;padding:8px 0 8px 12px;border:none;background:none}.tag{display:inline-flex;align-items:center;font-size:11px;font-weight:500;padding:3px 8px;border-radius:6px;line-height:1.4}.tag.xc{background:#e7f0f0;color:var(--xc)}.tag.sl{background:#f7efd8;color:#9a7b1a}.tag.sw{background:#f9e7dd;color:var(--sw)}.tag.brand{background:#e4efea;color:var(--brand)}.bar{height:8px;background:#edefec;border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;border-radius:99px;transition:width .3s ease}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;border:none;border-radius:14px;font-size:var(--fs-16);font-weight:600;cursor:pointer;transition:opacity .15s ease,transform .15s ease}.btn:active{transform:scale(.97);opacity:.9}.btn-primary{background:var(--brand);color:#fff}.btn-soft{background:#e4efea;color:var(--brand)}.btn[disabled]{opacity:.45;cursor:not-allowed}.toast{position:fixed;left:50%;bottom:120px;transform:translate(-50%) translateY(16px);background:#1f2a24eb;color:#fff;font-size:14px;padding:12px 20px;border-radius:12px;opacity:0;pointer-events:none;transition:all .25s ease;z-index:50;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.hero{background:linear-gradient(135deg,#3e7a5e,#2e5c46);border-radius:20px;padding:20px;color:#fff;margin-bottom:12px;position:relative;overflow:hidden}.hero:after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:#ffffff14}.hero .hello{font-size:var(--fs-18);font-weight:700;margin-bottom:4px;position:relative;z-index:1}.hero .date{font-size:13px;opacity:.85;margin-bottom:14px;position:relative;z-index:1}.hero .streak{display:inline-flex;align-items:center;gap:6px;background:#ffffff29;border-radius:99px;padding:6px 14px;font-size:13px;font-weight:600;position:relative;z-index:1}.task-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);min-height:52px;cursor:pointer}.task-row:last-child{border-bottom:none}.checkbox{width:24px;height:24px;border-radius:8px;border:2px solid #cbd5ce;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .18s ease}.checkbox svg{width:14px;height:14px;opacity:0;transform:scale(.5);transition:all .18s ease}.task-row.done .checkbox{background:var(--brand);border-color:var(--brand)}.task-row.done .checkbox svg{opacity:1;transform:scale(1)}.task-row.done .task-name{color:var(--text-3);text-decoration:line-through}.task-name{font-size:15px;font-weight:500}.task-meta{font-size:12px;color:var(--text-3);margin-top:2px}.task-info{flex:1;min-width:0}.rec-card{border-left:4px solid var(--brand)}.rec-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.rec-title{font-size:15px;font-weight:600;line-height:1.5}.rec-body{font-size:13px;color:var(--text-2);line-height:1.7}.rec-foot{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;align-items:center}.ring-wrap{display:flex;align-items:center;gap:18px}.ring{position:relative;width:92px;height:92px;flex-shrink:0}.ring svg{transform:rotate(-90deg)}.ring .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring .num b{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.ring .num small{font-size:11px;color:var(--text-3)}.stat-line{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.stat-line:last-child{border:none}.stat-name{width:64px;font-size:var(--fs-14);font-weight:500;flex-shrink:0}.stat-bar{flex:1}.stat-val{width:72px;text-align:right;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;flex-shrink:0}.trend-up{color:#c0453e;font-size:11px}.trend-down{color:var(--brand);font-size:11px}.weak-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:var(--fs-14)}.weak-row:last-child{border:none}.weak-rank{width:22px;height:22px;border-radius:7px;background:#f9e7dd;color:var(--sw);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.advice{background:#e4efea;border-radius:12px;padding:12px 14px;font-size:13px;color:var(--brand-dark);line-height:1.6}.flip-card{background:linear-gradient(135deg,#fbf6e7,#f7efd8);border:1px solid #ebddaf;border-radius:var(--radius);padding:18px;margin-bottom:12px}.flip-q{font-size:15px;font-weight:600;margin-bottom:6px}.flip-hint{font-size:12px;color:#9a7b1a;margin-bottom:12px}.structure{display:flex;align-items:center;gap:6px;margin:10px 0;flex-wrap:wrap}.structure .node{background:#fff;border:1px solid #ebddaf;border-radius:8px;font-size:12px;font-weight:500;padding:6px 10px;color:#7a6115}.structure .arrow{color:var(--sl);font-size:12px}.article-card{display:flex;gap:12px}.article-cover{width:84px;height:84px;border-radius:12px;flex-shrink:0;background:linear-gradient(135deg,#c9a227,#9a7b1a);display:flex;align-items:center;justify-content:center;color:#fff}.article-info{flex:1;min-width:0}.article-title{font-size:var(--fs-14);font-weight:600;line-height:1.5;margin-bottom:6px}.article-meta{font-size:12px;color:var(--text-3);line-height:1.6}.grid4{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.grid-item{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 14px;cursor:pointer;transition:transform .15s ease;display:flex;flex-direction:column;gap:8px;min-height:96px}.grid-item:active{transform:scale(.97)}.grid-item .gicon{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center}.grid-item .gname{font-size:var(--fs-14);font-weight:600}.grid-item .gdesc{font-size:11px;color:var(--text-3);line-height:1.5}.practice-btns{display:flex;gap:8px;margin-top:12px}.practice-btns .pbtn{flex:1;min-height:44px;border-radius:12px;border:1.5px solid var(--sw);background:#fff;color:var(--sw);font-size:13px;font-weight:600;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;padding:4px}.practice-btns .pbtn:active{background:#f9e7dd}.chip-row{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{flex-shrink:0;font-size:13px;font-weight:500;padding:8px 16px;border-radius:99px;background:#edefec;color:var(--text-2);border:none;cursor:pointer;min-height:36px;transition:all .15s ease}.chip.on{background:var(--sw);color:#fff}.case-row{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);cursor:pointer}.case-row:last-child{border:none}.case-dot{width:8px;height:8px;border-radius:50%;background:var(--sw);margin-top:7px;flex-shrink:0}.case-title{font-size:var(--fs-14);font-weight:500;line-height:1.5}.case-meta{font-size:11px;color:var(--text-3);margin-top:3px}.sz-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.sz-row:last-child{border:none}.sz-num{font-size:12px;color:var(--text-3);width:20px;font-variant-numeric:tabular-nums}.sz-name{flex:1;font-size:var(--fs-14)}.sz-heat{font-size:11px;color:var(--sw);font-weight:600}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-cell{aspect-ratio:1;border-radius:7px;background:#edefec;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text-3)}.cal-cell.l1{background:#d3e5db}.cal-cell.l2{background:#a8cdb8}.cal-cell.l3{background:#74ae90;color:#fff}.cal-cell.l4{background:#3e7a5e;color:#fff}.cal-cell.head{background:none;font-weight:600;color:var(--text-2)}.cal-cell.empty{background:transparent}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:78px;background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;padding:6px 4px 18px;z-index:10}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;color:var(--text-3);min-height:44px;transition:color .18s ease;border:none;background:none}.tab svg{width:24px;height:24px;transition:transform .18s ease}.tab span{font-size:10px;font-weight:500}.tab.active{color:var(--brand)}.tab.active svg{transform:translateY(-1px)}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--text-2);margin-bottom:6px}.input,.textarea,.select{width:100%;min-height:44px;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;font-size:var(--fs-14);font-family:inherit;background:#fff;color:var(--text)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--brand)}.textarea{min-height:120px;resize:vertical;line-height:1.6}
