:root{--bg:#f8fafc;--surface:#fff;--text:#0f172a;--muted:#64748b;--border:#e2e8f0;--primary:#2563eb;--danger:#dc2626;--gain:#dc2626;--loss:#15803d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,Segoe UI,Noto Sans TC,Microsoft JhengHei,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f172a;--surface:#1e293b;--text:#f1f5f9;--muted:#94a3b8;--border:#334155;--danger:#f87171;--gain:#f87171;--loss:#4ade80}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}.center{place-items:center;min-height:100dvh;padding:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:12px;width:100%;max-width:360px;padding:24px;display:flex}.card h1{margin:0 0 4px;font-size:1.5rem}label{flex-direction:column;gap:4px;font-size:.9rem;display:flex}input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:10px 12px}button{font:inherit;background:var(--primary);color:#fff;cursor:pointer;border:0;border-radius:8px;padding:10px 12px}button:disabled{opacity:.6}.muted{color:var(--muted);margin:0}.error{color:var(--danger);margin:0;font-size:.9rem}:root{--income:#16a34a;--planned:#f59e0b;--tabbar-h:56px;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a}@media (prefers-color-scheme:dark){:root{--income:#4ade80;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70}}.content{max-width:640px;padding:16px 16px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom));margin:0 auto}.tabbar{height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--muted);flex:1;place-items:center;font-size:.85rem;text-decoration:none;display:grid}.tabbar a.active{color:var(--primary);font-weight:600}.page{flex-direction:column;gap:12px;display:flex}.page h1{margin:0;font-size:1.4rem}.page h2{color:var(--muted);margin:12px 0 4px;font-size:.9rem;font-weight:600}.page-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.hero-number{font-variant-numeric:tabular-nums;margin:0;font-size:2.2rem;font-weight:700}.page .card{max-width:none}.card h2{color:var(--text);margin:0;font-size:1.1rem}.list{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:0;padding:0;list-style:none;overflow:hidden}.list>li+li{border-top:1px solid var(--border)}.row{align-items:center;gap:8px;width:100%;min-height:48px;padding:8px 12px;display:flex}.row.indent{padding-left:32px}.row.planned{background:color-mix(in srgb, var(--planned) 8%, transparent)}button.row.clickable{color:inherit;text-align:left;background:0 0;border-radius:0;justify-content:space-between}.grow{flex:1;min-width:0}.tx{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.tx small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.amount{font-variant-numeric:tabular-nums;white-space:nowrap}.amount.negative,.amount.expense{color:var(--danger)}.amount.income{color:var(--income)}.badge{background:var(--planned);color:#fff;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:.7rem}button.link{color:var(--primary);text-align:left;background:0 0;padding:4px 0}.row button.link{color:var(--text)}button.icon{color:var(--muted);background:0 0;padding:4px 8px}button.secondary{background:var(--border);color:var(--text)}button.danger{background:var(--danger)}a.button{background:var(--primary);color:#fff;border-radius:8px;padding:10px 12px;text-decoration:none}a.button.secondary{background:var(--border);color:var(--text)}.gain{color:var(--gain)}.loss{color:var(--loss)}.actions{flex-wrap:wrap;gap:8px;display:flex}.backup-reminder{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.tabs{background:var(--border);border-radius:10px;gap:4px;padding:4px;display:flex}.tab{color:var(--text);background:0 0;flex:1}.tab.active{background:var(--surface);color:var(--primary);font-weight:600}select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:10px 12px}label.check{flex-direction:row;align-items:center;gap:8px}fieldset{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;margin:0;padding:12px;display:flex}legend{align-items:center;gap:12px;padding:0 4px;font-size:.9rem;display:flex}.share-row{align-items:flex-end;gap:8px;display:flex}.share-row>span{flex:1;align-self:center}.share-row input{width:9em}.share-row label.grow input{width:100%}.hint{color:var(--planned)}textarea{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);resize:vertical;border-radius:8px;padding:10px 12px}input.narrow{width:4.5em}button.icon.active{color:var(--primary);background:color-mix(in srgb, var(--primary) 12%, transparent);border-radius:8px}.swatch{vertical-align:middle;border-radius:3px;width:12px;height:12px;display:inline-block}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{background:var(--border);min-width:2.4em;color:var(--text);padding:6px 8px}.chip.on{background:var(--primary);color:#fff}.color-dot{border:2px solid #0000;border-radius:50%;width:28px;height:28px;padding:0}.color-dot.on{border-color:var(--text)}input[type=color]{background:0 0;border:none;width:36px;height:32px;padding:0}.scope{border:1px solid var(--primary);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.card.filter{gap:8px}.content:has(.wide){max-width:1200px}.calendar-page{height:calc(100dvh - var(--tabbar-h) - env(safe-area-inset-bottom) - 40px)}.calendar-wrap{flex:1;min-height:420px}.calendar-page .fc{--fc-border-color:var(--border);--fc-page-bg-color:var(--surface);--fc-neutral-bg-color:var(--bg);--fc-today-bg-color:color-mix(in srgb, var(--primary) 8%, transparent);--fc-button-bg-color:var(--surface);--fc-button-border-color:var(--border);--fc-button-text-color:var(--text);--fc-button-hover-bg-color:var(--border);--fc-button-hover-border-color:var(--border);--fc-button-active-bg-color:var(--primary);--fc-button-active-border-color:var(--primary);--fc-now-indicator-color:var(--danger);font-size:.85rem}.calendar-page .fc .fc-button-primary:not(:disabled).fc-button-active{color:#fff}.calendar-page .fc .fc-toolbar-title{font-size:1.05rem}@media (width<=600px){.calendar-page .fc .fc-toolbar{flex-wrap:wrap;gap:6px}.calendar-page .fc .fc-toolbar-chunk:nth-child(2){order:-1;width:100%}}.fc-ev{flex-direction:column;padding:1px 2px;line-height:1.25;display:flex;overflow:hidden}.fc-ev.month{white-space:nowrap;flex-direction:row;align-items:center;gap:4px}.fc-ev-dot{border-radius:50%;flex:none;width:8px;height:8px}.fc-ev-time{opacity:.85;font-size:.75rem}.fc-ev-title{text-overflow:ellipsis;font-weight:600;overflow:hidden}.fc-ev-loc{opacity:.85;font-size:.75rem}.fc-daygrid-dot-event .fc-ev{color:var(--text)}.fc-blank{min-height:100%;display:block}.fc-event.commute{opacity:.55;background-image:repeating-linear-gradient(-45deg,#fff9 0 4px,#0000 4px 8px)}.fc-daygrid-event.commute,.fc-daygrid-event.task-marker{display:none}.fc-event.task-marker{color:var(--text);border-style:dashed;border-width:2px;background-color:var(--surface)!important}.fc-event.task-marker .fc-ev{color:var(--text)}a.tab{text-align:center;border-radius:8px;padding:10px 12px;text-decoration:none;display:block}.task>.row{min-height:52px}.subtasks{flex-direction:column;gap:6px;margin:0;padding:0 12px 10px 44px;font-size:.9rem;list-style:none;display:flex}.done-text{color:var(--muted);text-decoration:line-through}.share-row input.grow{flex:1;width:auto}a.row.clickable{color:inherit;justify-content:space-between;text-decoration:none}.card-link{background:var(--surface);border:1px solid var(--border);border-radius:12px}.small-link{color:var(--primary);font-size:.9rem}.slot{border-bottom:1px dashed var(--border);flex-direction:column;gap:6px;padding-bottom:10px;display:flex}.slot .share-row{flex-wrap:wrap;align-items:center}.slot .share-row input:not(.grow){width:auto}table.periods{border-collapse:collapse;font-variant-numeric:tabular-nums}table.periods th,table.periods td{border-bottom:1px solid var(--border);text-align:left;padding:4px 12px}code{background:var(--border);border-radius:4px;padding:1px 4px}.budget-item{flex-direction:column;gap:4px;padding:10px 12px;display:flex}.budget-item .row{padding:0}.budget-bar{flex-direction:column;gap:4px;display:flex}.budget-bar .bar{background:var(--border);border-radius:5px;height:10px;position:relative;overflow:hidden}.budget-bar .bar span{border-radius:5px;position:absolute;inset:0 auto 0 0}.budget-bar .projected{background:color-mix(in srgb, var(--primary) 35%, transparent)}.budget-bar .spent{background:var(--primary)}.budget-bar .bar.over .projected{background:color-mix(in srgb, var(--danger) 40%, transparent)}.budget-bar .bar.over .spent{background:var(--danger)}label.check.indent{padding-left:24px}table.history{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.history th,table.history td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:6px 8px}table.history small{display:block}table.history .ok{color:var(--income)}table.history .over{color:var(--danger)}table.history td.num,table.history th.num{text-align:right}.filter-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.filter-row select,.filter-row input{width:auto}.charts{flex-direction:column;gap:16px;margin-top:8px;transition:opacity .15s;display:flex}.charts.stale{opacity:.5}.chart-card .page-header,.chart-card .page-header .actions{margin:0}.review-card{margin-bottom:16px}.review-card .page-header{margin:0}.review-lines{flex-direction:column;gap:4px;margin:0 0 8px;padding-left:20px;display:flex}.hero-number.small{font-size:1.6rem}.status.ok{color:var(--income)}.status.over{color:var(--danger)}.subtotal{text-align:right;font-variant-numeric:tabular-nums;margin:8px 0 0}.subtotal small{display:block}
