.ffi[data-v-149ca52c]{gap:4px;min-width:0}.ffi select[data-v-149ca52c],.ffi input[type=date][data-v-149ca52c],.ffi input[type=month][data-v-149ca52c]{width:100%;font:inherit;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface);color:var(--ink);min-width:0}.ffi textarea[data-v-149ca52c]{min-height:80px}.ffi.bad input[data-v-149ca52c],.ffi.bad select[data-v-149ca52c]{border-color:var(--warn)}.ffi-hint[data-v-149ca52c]{display:block;margin:0;color:var(--muted)}.ffi-bool[data-v-149ca52c]{align-items:flex-start;font-size:14px}.derived[data-v-99a3a19c]{gap:12px;align-items:baseline;font-size:14px;border-bottom:1px solid var(--line);padding:6px 0}.derived b[data-v-99a3a19c]{white-space:nowrap}.tablewrap[data-v-99a3a19c]{overflow-x:auto;max-width:100%}table[data-v-99a3a19c]{border-collapse:collapse;font-size:13px;width:100%}th[data-v-99a3a19c],td[data-v-99a3a19c]{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th[data-v-99a3a19c]{color:var(--muted);font-weight:500}.grid[data-v-99a3a19c]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.listrow[data-v-99a3a19c]{gap:8px}.hist[data-v-99a3a19c]{gap:10px;width:100%;background:none;border:0;border-bottom:1px solid var(--line);padding:8px 0;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.hist.on b[data-v-99a3a19c]{text-decoration:underline}:root{--bg: #f2f4f7;--surface: #ffffff;--ink: #151d2b;--muted: #5b6575;--line: #dde2ea;--soft: #e8ecf2;--act: #2443c9;--act-ink: #ffffff;--act-soft: #e4e9fb;--t-learn: #0f8080;--t-money: #9a6200;--t-trust: #7a3fb0;--t-body: #c2410c;--mark: #ffe58a;--mark-ink: #5a4300;--mark-line: #d9a700;--good: #1f8a4c;--good-soft: #dcf2e4;--warn: #b86a00;--warn-soft: #fbeed8;--bad: #c23b32;--bad-soft: #f9e1de;--f-display: "Noto Serif SC", "Songti SC", serif;--f-body: "Noto Sans SC", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--f-num: "IBM Plex Mono", ui-monospace, Menlo, monospace}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0f141c;--surface: #171e2a;--ink: #e7ebf2;--muted: #98a3b4;--line: #273142;--soft: #1f2836;--act: #7d96ff;--act-ink: #0c1226;--act-soft: #1e2a4d;--t-learn: #3fc6c6;--t-money: #e0a84a;--t-trust: #b88ae6;--t-body: #f08a5d;--mark: #5c4b12;--mark-ink: #ffe8a3;--mark-line: #c9a227;--good: #5ccb8a;--good-soft: #163323;--warn: #e6a64a;--warn-soft: #3a2c14;--bad: #f07c72;--bad-soft: #3b1d1b;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f141c;--surface: #171e2a;--ink: #e7ebf2;--muted: #98a3b4;--line: #273142;--soft: #1f2836;--act: #7d96ff;--act-ink: #0c1226;--act-soft: #1e2a4d;--t-learn: #3fc6c6;--t-money: #e0a84a;--t-trust: #b88ae6;--t-body: #f08a5d;--mark: #5c4b12;--mark-ink: #ffe8a3;--mark-line: #c9a227;--good: #5ccb8a;--good-soft: #163323;--warn: #e6a64a;--warn-soft: #3a2c14;--bad: #f07c72;--bad-soft: #3b1d1b;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.65}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--act);outline-offset:2px}.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}.app{max-width:480px;margin:0 auto;min-height:100%;padding-bottom:88px}header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.where{min-width:0}.where b{font-family:var(--f-display);font-size:18px;display:block;line-height:1.3}.where span{font-size:12px;color:var(--muted)}.streak{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:4px 12px;font-size:13px;white-space:nowrap}.streak b{font-family:var(--f-num)}.back{background:none;border:none;padding:4px 8px 4px 0;color:var(--act);font-weight:700;font-size:14px}main{padding:16px;display:flex;flex-direction:column;gap:16px}h1.h{font-family:var(--f-display);font-weight:900;font-size:26px;line-height:1.3;margin:0;text-wrap:balance}h2.h2{font-family:var(--f-display);font-weight:600;font-size:18px;margin:0}.lead{color:var(--muted);margin:4px 0 0;font-size:14px}.label{font-size:12px;letter-spacing:.12em;color:var(--muted);font-weight:700}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:12px}.grow{flex:1;min-width:0}.plan{display:flex;flex-direction:column;gap:10px}.item{display:flex;gap:12px;align-items:flex-start;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;width:100%}.item.must{border:2px solid var(--act)}.item .slot{flex:none;font-size:11px;font-weight:700;letter-spacing:.08em;border-radius:6px;padding:2px 8px;background:var(--soft);color:var(--muted)}.item.must .slot{background:var(--act);color:var(--act-ink)}.item b{display:block;font-size:15px}.item small{display:block;color:var(--muted);font-size:13px;line-height:1.5}.item .go{flex:none;color:var(--act);font-weight:700;align-self:center}.item.done{opacity:.6}.item.comp{border-left:4px solid var(--t-body)}.boss{border-radius:14px;padding:16px;background:var(--ink);color:var(--bg);display:flex;flex-direction:column;gap:8px}.boss .h2{color:var(--bg)}.boss p{margin:0;font-size:13px;opacity:.85}.pips{display:flex;gap:6px}.pips i{width:100%;height:8px;border-radius:4px;background:color-mix(in srgb,var(--bg) 25%,transparent)}.pips i.on{background:var(--mark-line)}.btn{display:block;width:100%;border:none;border-radius:12px;padding:13px 16px;font-weight:700;font-size:15px;background:var(--act);color:var(--act-ink)}.btn.sec{background:var(--surface);color:var(--act);border:1px solid var(--line)}.btn[disabled]{opacity:.45;cursor:default}.material{background:var(--soft);border-radius:12px;padding:14px;font-size:14px;color:var(--ink);white-space:pre-wrap}.req{border-left:3px solid var(--act);padding-left:12px;font-size:14px}.privacy{font-size:12px;color:var(--warn);background:var(--warn-soft);border-radius:8px;padding:6px 10px}textarea{width:100%;min-height:170px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:12px;font:inherit;line-height:1.7;resize:vertical}input[type=text],input[type=password]{width:100%;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:12px;font:inherit}.count{font-size:12px;color:var(--muted);text-align:right}.rounds{display:flex;gap:6px;font-size:12px;color:var(--muted)}.rounds span{border:1px solid var(--line);border-radius:99px;padding:1px 10px}.rounds span.on{border-color:var(--act);color:var(--act);font-weight:700}.loading{display:flex;flex-direction:column;align-items:center;gap:12px;padding:40px 0;color:var(--muted)}.pen{width:46px;height:46px;border-radius:50%;border:4px solid var(--soft);border-top-color:var(--act);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scores{display:flex;flex-direction:column;gap:10px}.score{display:grid;grid-template-columns:5.5em 1fr auto;align-items:center;gap:10px;font-size:14px}.meter{display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.meter i{height:10px;border-radius:3px;background:var(--soft)}.meter i.f{background:var(--act)}.meter.low i.f{background:var(--warn)}.delta{font-family:var(--f-num);font-size:12px;border-radius:6px;padding:0 6px}.delta.up{background:var(--good-soft);color:var(--good)}.delta.down{background:var(--bad-soft);color:var(--bad)}.passbar{border-radius:10px;padding:10px 12px;font-size:14px;font-weight:700}.passbar.ok{background:var(--good-soft);color:var(--good)}.passbar.no{background:var(--warn-soft);color:var(--warn)}.annotated{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:15px;line-height:1.9;white-space:pre-wrap}mark.an{background:var(--mark);color:var(--mark-ink);border-bottom:2px solid var(--mark-line);border-radius:2px;padding:1px 0;cursor:pointer}mark.an sup{font-family:var(--f-num);font-size:10px;font-weight:600;margin-left:1px}mark.an.on{outline:2px solid var(--mark-line)}.notes{display:flex;flex-direction:column;gap:8px}.note{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface);font-size:14px}.note.on{border-color:var(--mark-line);box-shadow:0 0 0 2px var(--mark)}.note .meta{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.note .meta b{font-family:var(--f-num);color:var(--mark-ink);background:var(--mark);border-radius:4px;padding:0 6px}.note p{margin:4px 0 0}.note .fix{color:var(--good)}.advice{background:var(--act-soft);border-radius:12px;padding:12px 14px;font-size:14px}.advice .label{color:var(--act)}.versions{display:grid;grid-template-columns:1fr;gap:10px}.ver{border:1px solid var(--line);border-radius:12px;padding:12px;font-size:13px;white-space:pre-wrap;background:var(--surface)}.ver .label{display:block;margin-bottom:4px}.diff{font-size:13px;line-height:1.8;white-space:pre-wrap}.diff ins{background:var(--good-soft);color:var(--good);text-decoration:none}.diff del{background:var(--bad-soft);color:var(--bad)}.chat{display:flex;flex-direction:column;gap:10px}.msg{max-width:86%;padding:10px 12px;border-radius:14px;font-size:14px;white-space:pre-wrap}.msg.ai{background:var(--surface);border:1px solid var(--line);border-top-left-radius:4px}.msg.me{align-self:flex-end;background:var(--act);color:var(--act-ink);border-top-right-radius:4px}.persona{display:flex;gap:10px;align-items:center}.avatar{width:40px;height:40px;border-radius:50%;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-family:var(--f-display);font-size:18px;flex:none}.composer{display:flex;gap:8px;align-items:flex-end}.composer textarea{min-height:64px}.composer .btn{width:auto;flex:none}.levels{display:flex;flex-direction:column;gap:14px}.lvl{border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden}.lvl header{padding:12px 14px;display:flex;justify-content:space-between;gap:8px;align-items:baseline;border-bottom:1px solid var(--line)}.lvl header b{font-family:var(--f-display);font-size:17px}.lvl header span{font-size:12px;color:var(--muted);text-align:right}.wk{display:grid;grid-template-columns:2.6em 1fr auto;gap:10px;padding:10px 14px;align-items:center;font-size:14px}.wk+.wk{border-top:1px dashed var(--line)}.wk .n{font-family:var(--f-num);font-weight:600;color:var(--muted)}.wk small{display:block;color:var(--muted);font-size:12px}.st{font-size:12px;font-weight:700;border-radius:6px;padding:1px 8px;white-space:nowrap}.st.done{background:var(--good-soft);color:var(--good)}.st.now{background:var(--act);color:var(--act-ink)}.st.lock{background:var(--soft);color:var(--muted)}button.st{border:none;font-family:inherit;cursor:pointer}button.st.lock:hover{color:var(--act)}.lvl.cur{border:2px solid var(--act)}.radar-wrap{display:flex;justify-content:center}.radar{width:100%;max-width:340px;height:auto}.legend{display:flex;gap:14px;justify-content:center;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:14px;height:3px;vertical-align:middle;margin-right:4px;border-radius:2px}.dims{display:flex;flex-direction:column}.dim{display:grid;grid-template-columns:5.5em 1fr 3.4em;gap:10px;align-items:center;padding:10px 0;font-size:14px}.dim+.dim{border-top:1px solid var(--line)}.dim .v{font-family:var(--f-num);font-weight:600;text-align:right}.dim small{color:var(--muted);font-size:12px}.spark{width:100%;height:30px}.work{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 0}.work+.work{border-top:1px solid var(--line)}.work b{font-size:14px}.work small{color:var(--muted);font-size:12px}.work .sc{font-family:var(--f-num);font-size:13px;text-align:right;white-space:nowrap}.work .sc em{font-style:normal;color:var(--good);font-weight:600}nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--surface);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px))}nav.tabs>div{max-width:480px;margin:0 auto;display:grid;grid-auto-flow:column;grid-auto-columns:1fr}nav.tabs button{background:none;border:none;padding:8px 2px;font-size:13px;font-weight:700;color:var(--muted);border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:2px}nav.tabs button svg{width:22px;height:22px}nav.tabs button.on{color:var(--act);background:var(--act-soft)}.emo{display:block;font-size:11px;opacity:.7;margin-top:4px}.reveal{background:var(--mark);color:var(--mark-ink);border-radius:12px;padding:12px 14px;font-size:14px}.reveal .label{color:var(--mark-ink)}.yr{display:grid;grid-template-columns:4px 1fr auto;gap:12px;align-items:center;padding:11px 0}.yr+.yr{border-top:1px solid var(--line)}.yr .c{align-self:stretch;border-radius:2px}.yr b{font-size:15px}.yr small{display:block;font-size:12px;color:var(--muted);line-height:1.5}.pv{background:none;border:1px solid var(--line);border-radius:8px;padding:4px 10px;font-size:13px;color:var(--act);font-weight:700;white-space:nowrap}.flash{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px 18px;min-height:190px;display:flex;flex-direction:column;justify-content:center;gap:14px;text-align:center}.flash .q{font-size:18px;font-weight:700;text-wrap:balance}.flash .a{color:var(--t-learn);font-size:16px;border-top:1px dashed var(--line);padding-top:14px}.grades{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.grades .btn{padding:11px 4px;font-size:14px}.btn.g-bad{background:var(--bad-soft);color:var(--bad)}.btn.g-mid{background:var(--warn-soft);color:var(--warn)}.btn.g-ok{background:var(--good-soft);color:var(--good)}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center}.kpi b{display:block;font-family:var(--f-num);font-size:20px}.kpi span{font-size:12px;color:var(--muted)}.cat{display:grid;grid-template-columns:3em 1fr 5.4em;gap:10px;align-items:center;font-size:14px;padding:3px 0}.cat .tr{height:12px;background:var(--soft);border-radius:6px;overflow:hidden}.cat .tr i{display:block;height:100%;background:var(--t-money);border-radius:6px}.cat .pct{font-family:var(--f-num);text-align:right;font-size:13px}.cat .pct small{color:var(--muted);font-size:11px}.factors{display:flex;flex-direction:column;gap:8px;font-size:14px}.factor{display:flex;gap:10px;align-items:flex-start}.factor .ic{flex:none;width:20px;height:20px;margin-top:2px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700}.factor.y .ic{background:var(--good-soft);color:var(--good)}.factor.n .ic{background:var(--bad-soft);color:var(--bad)}.small{font-size:12px;color:var(--muted);margin:0}.cm{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 0}.cm+.cm{border-top:1px solid var(--line)}.cm small{color:var(--muted);font-size:12px}.cs{font-size:12px;font-weight:700;border-radius:6px;padding:1px 8px;white-space:nowrap;align-self:center;grid-row:span 2}.cs.ok{background:var(--good-soft);color:var(--good)}.cs.late{background:var(--warn-soft);color:var(--warn)}.cs.open{background:var(--soft);color:var(--muted)}.ints{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.ints button,.words button{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.ints button{border-radius:10px;padding:10px 0;font-family:var(--f-num);font-weight:600}.ints button.on{background:var(--t-body);color:var(--surface);border-color:var(--t-body)}.words{display:flex;flex-wrap:wrap;gap:6px}.words button{border-radius:99px;padding:4px 12px;font-size:14px}.words button.on{border-color:var(--t-body);color:var(--t-body);font-weight:700;background:var(--soft)}.local{font-size:12px;color:var(--good);background:var(--good-soft);border-radius:8px;padding:6px 10px}.tinputs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tinputs label{font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:4px}input[type=time]{font:inherit;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface);color:var(--ink);min-width:0}.ex{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:15px}.ex input{width:20px;height:20px;accent-color:var(--t-body)}.wake{width:100%;height:auto;display:block}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
