:root{--ink: #1a1a1a;--ink-2: #3a3a3a;--muted: #8a8a8a;--line: #2a2a2a;--line-2: #bdbdbd;--paper: #f4f3ef;--paper-2: #ebeae4;--hatch: #d9d8d2;--accent: #1a1a1a;--note: #a86b00;--font-ui: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--tg-bar-h: 0px;--app-bar-h: 52px;--tab-bar-h: 72px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{overscroll-behavior-y:contain}#app{min-height:100%;display:flex;flex-direction:column}button{font:inherit;color:inherit}input,textarea,select{font:inherit}.tg-bar[data-v-14f4a82e]{position:sticky;top:0;z-index:30;height:44px;padding:0 14px;background:#fff;border-bottom:1px dashed var(--line-2);display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:11px;color:var(--muted)}.left[data-v-14f4a82e]{display:flex;align-items:center;gap:10px}.x[data-v-14f4a82e]{width:18px;height:18px;padding:0;border:1px solid var(--line);border-radius:50%;background:transparent;position:relative;cursor:pointer}.x-glyph[data-v-14f4a82e]:before,.x-glyph[data-v-14f4a82e]:after{content:"";position:absolute;left:50%;top:50%;width:8px;height:1px;background:var(--ink);transform-origin:center}.x-glyph[data-v-14f4a82e]:before{transform:translate(-50%,-50%) rotate(45deg)}.x-glyph[data-v-14f4a82e]:after{transform:translate(-50%,-50%) rotate(-45deg)}.app-name[data-v-14f4a82e]{font-weight:600;color:var(--ink-2)}.dev[data-v-14f4a82e]{text-transform:uppercase;letter-spacing:.1em;font-size:9px;padding:2px 6px;border:1px solid var(--line-2);border-radius:999px}.appbar[data-v-0602d483]{position:sticky;top:0;z-index:19;height:var(--app-bar-h);padding:0 16px;background:#fff;border-bottom:1.5px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:12px}.title-wrap[data-v-0602d483]{display:flex;flex-direction:column;min-width:0}.page-title[data-v-0602d483]{margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.page-sub[data-v-0602d483]{font-family:var(--font-mono);font-size:10px;color:var(--muted);margin-top:1px}.logout-btn[data-v-0602d483]{padding:6px 10px;border-radius:8px;background:transparent;border:1.5px solid var(--line);font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--ink-2);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.logout-btn[data-v-0602d483]:hover{border-color:var(--ink);color:var(--ink)}.pageview-frame[data-v-24cdb234]{flex:1 1 auto;min-height:0;overflow:hidden;position:relative;background:var(--paper)}.strip[data-v-24cdb234]{display:flex;width:300%;height:100%;transition:transform .35s cubic-bezier(.2,.8,.2,1);touch-action:pan-y;-webkit-user-select:none;user-select:none}.page[data-v-24cdb234]{width:33.3333%;height:100%;overflow-y:auto;overflow-x:hidden;padding:16px;box-sizing:border-box}.tabbar[data-v-4cb60daa]{position:relative;height:var(--tab-bar-h);border-top:1.5px solid var(--line);background:#fff;display:flex;align-items:stretch;z-index:20}.indicator[data-v-4cb60daa]{position:absolute;top:0;left:0;height:3px;width:33.3333%;background:var(--ink);transition:transform .2s cubic-bezier(.2,.8,.2,1)}.tab[data-v-4cb60daa]{flex:1 1 0;min-width:0;height:100%;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.tab .ico[data-v-4cb60daa]{width:22px;height:22px;border:1.5px solid currentColor;border-radius:4px;background:#fff;display:inline-block}.tab.cal .ico[data-v-4cb60daa]{border-radius:3px}.tab.port .ico[data-v-4cb60daa]{border-radius:50%}.tab.goal .ico[data-v-4cb60daa]{border-radius:3px}.tab.active[data-v-4cb60daa]{color:var(--ink)}.tab.active .ico[data-v-4cb60daa]{background:var(--ink);border-color:var(--ink)}.login-overlay[data-v-00d36477]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:24px}.card[data-v-00d36477]{width:100%;max-width:320px;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:28px 22px;box-shadow:6px 6px #0000000f;display:flex;flex-direction:column;gap:18px}.brand[data-v-00d36477]{text-align:center}.logo[data-v-00d36477]{width:56px;height:56px;margin:0 auto 12px;border-radius:14px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;letter-spacing:.04em;font-size:16px}.title[data-v-00d36477]{margin:0;font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.sub[data-v-00d36477]{margin:4px 0 0;font-family:var(--font-mono);font-size:11px;color:var(--muted)}.cta[data-v-00d36477]{width:100%;padding:12px 14px;background:var(--ink);color:#fff;border:1.5px solid var(--ink);border-radius:10px;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.cta[data-v-00d36477]:disabled{opacity:.6;cursor:not-allowed}.err[data-v-00d36477]{margin:0;padding:8px 10px;border:1px solid #b3261e;border-radius:8px;color:#b3261e;font-family:var(--font-mono);font-size:11px}.hint[data-v-00d36477]{margin:0;text-align:center;font-family:var(--font-mono);font-size:10px;color:var(--muted)}.shift-panel[data-v-6685d841]{margin-top:14px;border:1.5px solid var(--line);border-radius:10px;background:#fff;padding:12px;display:flex;flex-direction:column;gap:10px}.head[data-v-6685d841]{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px dashed var(--line-2)}.head .ttl[data-v-6685d841]{font-size:13px;font-weight:700}.head .day[data-v-6685d841]{flex:1;font-family:var(--font-mono);font-size:10px;color:var(--muted);letter-spacing:.04em}.head .close[data-v-6685d841]{width:22px;height:22px;border:1px solid var(--line-2);border-radius:6px;background:#fff;cursor:pointer;font-size:14px;line-height:1}.group[data-v-6685d841]{display:flex;flex-direction:column;gap:6px}.lbl[data-v-6685d841]{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;color:var(--ink-2);letter-spacing:.04em}.lbl .who[data-v-6685d841]{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:9px;border:1.5px solid var(--ink)}.lbl .who.p[data-v-6685d841]{background:var(--ink);color:#fff}.lbl .who.b[data-v-6685d841]{background:#fff;color:var(--ink)}.lbl .name[data-v-6685d841]{flex:1;font-weight:600;color:var(--ink-2)}.lbl .clear-btn[data-v-6685d841]{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:none;border:none;padding:3px 6px;cursor:pointer;border-radius:4px}.lbl .clear-btn[data-v-6685d841]:hover{color:var(--ink);background:var(--paper-2)}.chips[data-v-6685d841]{display:grid;gap:6px}.chips.cols-2[data-v-6685d841]{grid-template-columns:repeat(2,1fr)}.chips.cols-1[data-v-6685d841]{grid-template-columns:1fr}.chip[data-v-6685d841]{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line-2);border-radius:8px;background:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-mono);font-size:11px;color:var(--ink);min-height:40px}.chip[data-v-6685d841]:hover{border-color:var(--ink);background:var(--paper)}.chip.on[data-v-6685d841]{border-color:var(--ink);background:var(--ink);color:#fff}.chip.off[data-v-6685d841],.chip.vac[data-v-6685d841]{background:repeating-linear-gradient(45deg,#fff 0 4px,var(--paper) 4px 8px)}.chip.off.on[data-v-6685d841],.chip.vac.on[data-v-6685d841]{background:var(--ink);color:#fff}.chip .label[data-v-6685d841]{flex:1;text-align:left;letter-spacing:.02em}.chip .code[data-v-6685d841]{font-size:9px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}.chip.on .code[data-v-6685d841]{color:#ffffffa6}.note[data-v-6685d841]{width:100%;box-sizing:border-box;border:1.5px dashed var(--line-2);border-radius:8px;background:#fff;padding:8px 10px;font-family:var(--font-ui);font-size:12px;color:var(--ink);resize:vertical;min-height:34px;outline:none;line-height:1.45}.note[data-v-6685d841]::placeholder{color:var(--muted);font-family:var(--font-mono);font-size:11px}.note[data-v-6685d841]:focus{border-style:solid;border-color:var(--ink)}.upcoming-wrap[data-v-6493e70a]{display:flex;flex-direction:column;gap:8px}.inc-group-label[data-v-6493e70a]{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:4px 0 6px;border-bottom:1px solid var(--line-2);margin-top:6px}.inc-group-label[data-v-6493e70a]:first-child{margin-top:0}.empty[data-v-6493e70a]{font-family:var(--font-mono);font-size:11px;color:var(--muted);padding:8px 4px;font-style:italic}.inc-card[data-v-6493e70a]{border:1.5px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.inc-date[data-v-6493e70a]{background:var(--ink);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:600;padding:5px 12px;letter-spacing:.06em}.inc-row[data-v-6493e70a]{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px dashed var(--line-2)}.inc-row[data-v-6493e70a]:last-child{border-bottom:none}.tag[data-v-6493e70a]{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:10px;border:1.5px solid var(--ink);flex-shrink:0}.tag-p[data-v-6493e70a]{background:var(--ink);color:#fff}.tag-b[data-v-6493e70a]{background:#fff;color:var(--ink)}.inc-meta[data-v-6493e70a]{flex:1;min-width:0}.inc-name[data-v-6493e70a]{font-size:13px;font-weight:600}.inc-time[data-v-6493e70a]{font-family:var(--font-mono);font-size:10px;color:var(--muted);margin-top:1px}.cal-view[data-v-4bbe4423]{display:flex;flex-direction:column;gap:12px}.seg[data-v-4bbe4423]{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;border:1.5px solid var(--line);border-radius:8px;padding:3px;background:#fff}.seg div[data-v-4bbe4423]{text-align:center;padding:6px 0;font-size:11px;border-radius:6px;font-family:var(--font-mono);cursor:pointer}.seg div.on[data-v-4bbe4423]{background:var(--ink);color:#fff}.cal-mhead[data-v-4bbe4423]{display:flex;align-items:center;justify-content:space-between}.cal-mhead .title[data-v-4bbe4423]{font-size:18px;font-weight:700;letter-spacing:-.01em}.cal-mhead .nav[data-v-4bbe4423]{display:flex;gap:4px}.cal-mhead .nav button[data-v-4bbe4423]{width:28px;height:28px;border:1.5px solid var(--line);border-radius:6px;background:#fff;font-family:var(--font-mono);font-size:13px;cursor:pointer}.cal-mhead .nav button.today[data-v-4bbe4423]{width:auto;padding:0 10px;font-size:10px;letter-spacing:.06em;text-transform:uppercase}.cal-head[data-v-4bbe4423]{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:10px;font-family:var(--font-mono);color:var(--muted)}.cal-grid[data-v-4bbe4423]{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cell[data-v-4bbe4423]{aspect-ratio:1 / 1.35;border:1px solid var(--line-2);border-radius:8px;padding:4px 3px;background:#fff;display:flex;flex-direction:column;overflow:hidden;cursor:pointer}.cell.today[data-v-4bbe4423]{border-color:var(--ink);background:#fafafa}.cell.selected[data-v-4bbe4423]{outline:2px solid var(--ink);outline-offset:-2px}.cell.dim[data-v-4bbe4423]{cursor:default}.cell.dim .num[data-v-4bbe4423]{color:var(--line-2)}.num[data-v-4bbe4423]{font-family:var(--font-mono);font-weight:600;font-size:11px;color:var(--ink-2);width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;margin-bottom:3px}.cell.today .num[data-v-4bbe4423]{background:var(--ink);color:#fff;font-weight:700}.shift-lbls[data-v-4bbe4423]{display:flex;flex-direction:column;gap:2px;align-self:stretch;overflow:hidden}.sl[data-v-4bbe4423]{display:flex;align-items:stretch;min-width:0;font-family:var(--font-mono);font-size:7px;line-height:1;border-radius:3px;overflow:hidden;border:1px solid var(--ink)}.sl .who-tag[data-v-4bbe4423]{flex-shrink:0;width:11px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:8px}.sl.p .who-tag[data-v-4bbe4423]{background:var(--ink);color:#fff}.sl.b .who-tag[data-v-4bbe4423]{background:#fff;color:var(--ink);border-right:1px solid var(--ink)}.sl.work.p[data-v-4bbe4423]{background:var(--ink);color:#fff}.sl.work.b[data-v-4bbe4423]{background:#fff;color:var(--ink)}.sl.off[data-v-4bbe4423]{background:repeating-linear-gradient(45deg,var(--line-2) 0 2px,#fff 2px 4px);color:var(--muted)}.sl.vac[data-v-4bbe4423]{background:#fff;color:var(--ink);font-weight:700;border-style:dashed}.sl .txt[data-v-4bbe4423]{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:2px 3px;text-align:center}.ph[data-v-4bbe4423]{border:1px dashed var(--line-2);border-radius:6px;padding:24px;text-align:center;font-family:var(--font-mono);font-size:10px;color:var(--muted);background:repeating-linear-gradient(135deg,var(--hatch) 0 6px,transparent 6px 12px),#fff}.err[data-v-4bbe4423]{margin:0;padding:8px 10px;border:1px solid #b3261e;border-radius:8px;color:#b3261e;font-family:var(--font-mono);font-size:11px}.edit-sheet[data-v-4a5e6798]{margin-top:8px;border:1.5px dashed var(--note);border-radius:10px;background:#a86b000d;padding:10px;display:flex;flex-direction:column;gap:8px}.h[data-v-4a5e6798]{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--note)}.row[data-v-4a5e6798]{display:flex;align-items:center;gap:8px}.row label[data-v-4a5e6798]{font-family:var(--font-mono);font-size:10px;color:var(--ink-2);width:64px;flex-shrink:0}.row .input[data-v-4a5e6798]{flex:1;border:1px solid var(--line-2);border-radius:6px;background:#fff;padding:6px 10px;font-family:var(--font-mono);font-size:12px;outline:none}.row .input[data-v-4a5e6798]:focus{border-color:var(--ink)}.err[data-v-4a5e6798]{margin:0;padding:6px 8px;border:1px solid #b3261e;border-radius:6px;color:#b3261e;font-family:var(--font-mono);font-size:10px}.actions[data-v-4a5e6798]{display:flex;gap:6px}.actions .btn[data-v-4a5e6798]{flex:1;padding:6px 0;border-radius:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);cursor:pointer}.actions .btn[data-v-4a5e6798]:disabled{opacity:.6;cursor:not-allowed}.actions .btn.primary[data-v-4a5e6798]{background:var(--ink);color:#fff}.actions .btn.ghost[data-v-4a5e6798]{background:#fff;color:var(--ink)}.donut-wrap[data-v-70931c54]{display:flex;align-items:center;gap:14px;border:1.5px dashed var(--line-2);border-radius:12px;padding:14px;background:#fff}.donut[data-v-70931c54]{width:104px;height:104px;border-radius:50%;position:relative;flex-shrink:0}.donut .hole[data-v-70931c54]{position:absolute;top:18px;right:18px;bottom:18px;left:18px;background:#fff;border-radius:50%;border:1px solid var(--line-2)}.donut-legend[data-v-70931c54]{flex:1;display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:11px}.donut-legend .li[data-v-70931c54]{display:flex;align-items:center;gap:8px}.donut-legend .sw[data-v-70931c54]{width:10px;height:10px;border-radius:2px;flex-shrink:0}.donut-legend .name[data-v-70931c54]{flex:1}.donut-legend .pct[data-v-70931c54]{color:var(--ink-2)}.portfolio-view[data-v-474375e6]{display:flex;flex-direction:column;gap:14px}.total-card[data-v-474375e6]{border:1.5px solid var(--line);border-radius:14px;padding:14px;background:#fff}.total-card .lbl[data-v-474375e6]{font-family:var(--font-mono);font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.total-card .val[data-v-474375e6]{font-size:28px;font-weight:700;letter-spacing:-.02em;margin-top:4px}.total-card .delta[data-v-474375e6]{font-family:var(--font-mono);font-size:11px;color:var(--ink-2);margin-top:2px}.donut-wrap[data-v-474375e6]{display:flex;align-items:center;gap:14px;border:1.5px dashed var(--line-2);border-radius:12px;padding:14px;background:#fff}.donut[data-v-474375e6]{width:104px;height:104px;border-radius:50%;background:conic-gradient(#1a1a1a 0,#1a1a1a 38%,#6e6e6e 38%,#6e6e6e 64%,#b8b8b8 64%,#b8b8b8 86%,#e2e2e2 86%,#e2e2e2);position:relative;flex-shrink:0}.donut[data-v-474375e6]:after{content:"";position:absolute;top:18px;right:18px;bottom:18px;left:18px;background:#fff;border-radius:50%;border:1px solid var(--line-2)}.donut-legend[data-v-474375e6]{flex:1;display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:11px}.donut-legend .li[data-v-474375e6]{display:flex;align-items:center;gap:8px}.donut-legend .sw[data-v-474375e6]{width:10px;height:10px;border-radius:2px;background:var(--ink);flex-shrink:0}.donut-legend .name[data-v-474375e6]{flex:1}.donut-legend .amt[data-v-474375e6]{color:var(--ink-2)}.asset-list[data-v-474375e6]{display:flex;flex-direction:column;gap:8px}.asset[data-v-474375e6]{display:flex;align-items:center;gap:12px;padding:12px;border:1.5px solid var(--line);border-radius:10px;background:#fff}.asset .ico[data-v-474375e6]{width:36px;height:36px;border-radius:8px;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:12px}.asset .meta-col[data-v-474375e6]{flex:1;min-width:0}.asset .name[data-v-474375e6]{font-weight:600;font-size:14px}.asset .updated[data-v-474375e6]{font-family:var(--font-mono);font-size:9px;color:var(--muted);margin-top:2px}.asset .num[data-v-474375e6]{text-align:right;font-family:var(--font-mono)}.asset .num .v[data-v-474375e6]{font-size:14px;font-weight:600}.asset .num .d[data-v-474375e6]{font-size:10px;color:var(--ink-2);margin-top:2px}.asset .num .d.up[data-v-474375e6]{color:#1f7a3a}.asset .num .d.down[data-v-474375e6]{color:#b3261e}.pencil[data-v-474375e6]{width:28px;height:28px;border:1px solid var(--line-2);border-radius:6px;background:#fff;cursor:pointer;font-family:var(--font-mono);font-size:12px}.err[data-v-474375e6]{margin:0;padding:8px 10px;border:1px solid #b3261e;border-radius:8px;color:#b3261e;font-family:var(--font-mono);font-size:11px}.goal-form[data-v-7d42e7c7]{border:1.5px solid var(--ink);border-radius:10px;background:#fff;padding:12px;display:flex;flex-direction:column;gap:8px}.gf-title[data-v-7d42e7c7]{width:100%;border:none;border-bottom:1.5px dashed var(--line-2);font-family:var(--font-ui);font-size:14px;font-weight:600;padding:4px 0 6px;background:transparent;outline:none;color:var(--ink)}.gf-title[data-v-7d42e7c7]:focus{border-bottom-color:var(--ink)}.gf-desc[data-v-7d42e7c7]{width:100%;border:none;font-family:var(--font-ui);font-size:12px;padding:2px 0;background:transparent;outline:none;color:var(--ink-2)}.gf-row[data-v-7d42e7c7]{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.gf-row-lbl[data-v-7d42e7c7]{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);width:54px;flex-shrink:0}.gf-chip[data-v-7d42e7c7]{font-family:var(--font-mono);font-size:10px;border:1px solid var(--line-2);padding:3px 8px;border-radius:999px;color:var(--ink-2);background:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}.gf-chip[data-v-7d42e7c7]:disabled{opacity:.6;cursor:not-allowed}.gf-chip.on[data-v-7d42e7c7]{background:var(--ink);color:#fff;border-color:var(--ink)}.gf-chip.who[data-v-7d42e7c7]{display:inline-flex;align-items:center;gap:4px}.gf-chip.who .dot[data-v-7d42e7c7]{width:7px;height:7px;border-radius:50%;background:var(--ink);display:inline-block}.gf-chip.who.b .dot[data-v-7d42e7c7]{background:#fff;border:1.5px solid var(--ink)}.gf-chip.who.both .dot[data-v-7d42e7c7]{background:linear-gradient(90deg,var(--ink) 50%,#fff 50%);border:1.5px solid var(--ink)}.gf-chip.who.b.on .dot[data-v-7d42e7c7],.gf-chip.who.both.on .dot[data-v-7d42e7c7]{border-color:#fff}.err[data-v-7d42e7c7]{margin:0;padding:6px 8px;border:1px solid #b3261e;border-radius:6px;color:#b3261e;font-family:var(--font-mono);font-size:10px}.gf-actions[data-v-7d42e7c7]{display:flex;gap:6px}.gf-actions .btn[data-v-7d42e7c7]{flex:1;padding:7px 0;border-radius:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);cursor:pointer}.gf-actions .btn[data-v-7d42e7c7]:disabled{opacity:.6;cursor:not-allowed}.gf-actions .btn.primary[data-v-7d42e7c7]{background:var(--ink);color:#fff}.gf-actions .btn.ghost[data-v-7d42e7c7]{background:#fff;color:var(--ink)}.goals-view[data-v-01b77905]{display:flex;flex-direction:column;gap:12px}.year-head[data-v-01b77905]{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}.year-head .y[data-v-01b77905]{font-size:20px;font-weight:700;letter-spacing:-.01em}.year-head .yr-nav[data-v-01b77905]{width:28px;height:28px;border:1.5px solid var(--line);border-radius:7px;background:#fff;font-family:var(--font-mono);font-size:13px;cursor:pointer}.year-head .yr-nav[data-v-01b77905]:disabled{opacity:.3;cursor:not-allowed}.year-head .progress[data-v-01b77905]{flex:1;margin:0 8px;height:8px;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}.year-head .progress>i[data-v-01b77905]{display:block;height:100%;background:var(--ink)}.year-head .pct[data-v-01b77905]{font-family:var(--font-mono);font-size:11px}.filter-row[data-v-01b77905]{display:flex;gap:6px;flex-wrap:wrap}.filter-chip[data-v-01b77905]{font-family:var(--font-mono);font-size:10px;border:1px solid var(--line-2);padding:4px 10px;border-radius:999px;color:var(--ink-2);background:#fff;cursor:pointer}.filter-chip.on[data-v-01b77905]{background:var(--ink);color:#fff;border-color:var(--ink)}.goal-list[data-v-01b77905]{display:flex;flex-direction:column;gap:8px}.goal[data-v-01b77905]{display:flex;gap:12px;padding:12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;align-items:flex-start}.goal .check[data-v-01b77905]{width:22px;height:22px;border:1.5px solid var(--ink);border-radius:6px;background:#fff;cursor:pointer;flex-shrink:0;position:relative}.goal.done .check[data-v-01b77905]{background:var(--ink)}.goal.done .check[data-v-01b77905]:after{content:"";position:absolute;left:5px;top:2px;width:8px;height:13px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.goal.done .title[data-v-01b77905]{text-decoration:line-through;color:var(--muted)}.goal .body[data-v-01b77905]{flex:1;min-width:0}.goal .title[data-v-01b77905]{font-weight:600;font-size:14px}.goal .desc[data-v-01b77905]{font-size:12px;color:var(--ink-2);margin-top:2px}.goal .meta-line[data-v-01b77905]{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.chip[data-v-01b77905]{font-family:var(--font-mono);font-size:10px;border:1px solid var(--line-2);padding:2px 6px;border-radius:999px;color:var(--ink-2)}.chip.who[data-v-01b77905]{display:inline-flex;align-items:center;gap:4px}.chip.who .dot[data-v-01b77905]{width:8px;height:8px;border-radius:50%;background:var(--ink)}.chip.who.b .dot[data-v-01b77905]{background:#fff;border:1.5px solid var(--ink)}.chip.who.both .dot[data-v-01b77905]{background:linear-gradient(90deg,var(--ink) 50%,#fff 50%);border:1.5px solid var(--ink)}.goal .del[data-v-01b77905]{width:22px;height:22px;border:1px solid var(--line-2);border-radius:6px;background:#fff;cursor:pointer;font-size:14px;line-height:1;color:var(--muted);align-self:center;flex-shrink:0}.goal .del[data-v-01b77905]:hover{color:#b3261e;border-color:#b3261e}.empty[data-v-01b77905]{text-align:center;padding:24px 0;font-family:var(--font-mono);font-size:11px;color:var(--muted)}.goal-add[data-v-01b77905]{display:flex;align-items:center;justify-content:center;gap:8px;border:1.5px dashed var(--line-2);border-radius:10px;background:#fff;padding:12px;color:var(--muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;cursor:pointer}.goal-add[data-v-01b77905]:hover{border-color:var(--ink);color:var(--ink)}.goal-add .plus[data-v-01b77905]{font-size:14px}.err[data-v-01b77905]{margin:0;padding:8px 10px;border:1px solid #b3261e;border-radius:8px;color:#b3261e;font-family:var(--font-mono);font-size:11px}.shell{min-height:100dvh;display:flex;flex-direction:column;background:var(--paper)}.login-enter-active,.login-leave-active{transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .35s ease}.login-enter-from,.login-leave-to{transform:translateY(-100%);opacity:0}
