:root{--bg:#fbf6ef;--surface:#fff;--surface-2:#f4ece2;--text:#2d2620;--muted:#85796d;--border:#e8ddd0;--accent:#c8553d;--accent-text:#fff;--accent-soft:#f7e3dc;--income:#2a8c7e;--expense:#c8553d;--danger:#b3261e;--shadow:0 1px 2px #3c28140f, 0 4px 16px #3c28140f;--radius:14px;--tabbar-h:60px;--chart-income:#00917c;--chart-expense:#c8553d;--chart-saving:#3a6fd8;--chart-muted:#c9bdb0;--chart-grid:#eee5da;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1c1815;--surface:#26211d;--surface-2:#312a25;--text:#f1e9e0;--muted:#a69888;--border:#3c342e;--accent:#e0745a;--accent-text:#1c1815;--accent-soft:#3d2a23;--income:#5cc2b2;--expense:#ee8a72;--danger:#f2756a;--shadow:none;--chart-income:#26a690;--chart-expense:#df5f42;--chart-saving:#5b8def;--chart-muted:#5e544c;--chart-grid:#3a322c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:pan-x pan-y;margin:0;font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,Yu Gothic UI,sans-serif;font-size:16px;line-height:1.6}h1,h2,h3,h4,p{margin:0}h2{font-size:1.25rem}h3{font-size:1rem}h4{color:var(--muted);font-size:.875rem;font-weight:600}a{color:var(--accent)}hr{border:0;border-top:1px solid var(--border);width:100%;margin:4px 0}input,select,button{font:inherit;color:inherit}input:not([type=color]),select{border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;min-height:44px;padding:8px 12px}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input[type=color]{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;flex:none;width:44px;height:44px;padding:4px}.muted{color:var(--muted)}.small{font-size:.875rem}.center{text-align:center}.stack{flex-direction:column;gap:16px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;min-height:44px;color:var(--text);border-radius:10px;justify-content:center;align-items:center;padding:8px 18px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:var(--accent);filter:brightness(1.05)}.btn-danger{color:var(--danger)}.btn-block{width:100%}.btn-icon{min-width:44px;padding:0;font-size:1.25rem;line-height:1}.topbar{z-index:10;padding:4px 10px 4px 16px;padding-top:max(4px, env(safe-area-inset-top));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:8px;font-weight:700;text-decoration:none;display:flex}.topbar-title{color:var(--muted);font-size:.9rem;font-weight:600}.tabbar{z-index:10;padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{height:var(--tabbar-h);color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.7rem;font-weight:600;text-decoration:none;display:flex}.tabbar a.active{color:var(--accent)}.content{max-width:640px;padding:16px 16px calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 96px);margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card>h3{margin-bottom:8px}.card.empty{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;display:flex}.banner{background:var(--accent-soft);border-radius:10px;padding:10px 14px;font-size:.875rem;font-weight:600}.auth{flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding:48px 16px;display:flex}.auth-brand{justify-content:center;align-items:center;gap:12px;display:flex}.auth-lead,.auth-switch{text-align:center}.auth .card h2{margin-bottom:16px}.field{flex-direction:column;gap:4px;display:flex}.field-label{font-size:.875rem;font-weight:600}.field-hint{color:var(--muted);font-size:.75rem}.form-error{color:var(--danger);white-space:pre-line;font-size:.875rem}.form-error:empty{display:none}.segments{background:var(--surface-2);border-radius:12px;grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segment{min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;font-weight:600}.segment.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.month-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.month-title{text-align:center;flex-direction:column;align-items:center;line-height:1.4;display:flex}.month-title h2{font-size:1.1rem}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:2px 4px;font-size:.8rem;font-weight:600}.summary{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}@media (width>=560px){.summary{grid-template-columns:repeat(4,1fr)}}.stat{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);flex-direction:column;min-width:0;padding:12px;display:flex}.stat-label{color:var(--muted);font-size:.75rem;font-weight:600}.stat-value{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:1.05rem;font-weight:700}.stat.income .stat-value{color:var(--income)}.stat.expense .stat-value{color:var(--expense)}.stat.saving .stat-value,.tx-amount.saving{color:var(--chart-saving)}.breakdown{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.breakdown li{grid-template-columns:1fr auto;gap:4px 8px;font-size:.9rem;display:grid}.breakdown-name{align-items:center;gap:8px;min-width:0;display:flex}.breakdown-amount{font-variant-numeric:tabular-nums;font-weight:600}.bar{background:var(--surface-2);border-radius:3px;grid-column:1/-1;height:6px;overflow:hidden}.bar-fill{border-radius:3px;height:100%;display:block}.dot{border-radius:50%;flex:none;width:10px;height:10px}.day+.day{margin-top:12px}.day-label{color:var(--muted);border-bottom:1px solid var(--border);padding:4px 0;font-size:.8rem;font-weight:600}.tx-list{margin:0;padding:0;list-style:none}.tx-row{border:0;border-bottom:1px solid var(--border);text-align:left;background:0 0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:48px;padding:8px 4px;display:flex}button.tx-row{cursor:pointer}button.tx-row:hover{background:var(--surface-2)}.tx-list li:last-child .tx-row{border-bottom:0}.tx-main{align-items:center;gap:8px;min-width:0;display:flex}.tx-note{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;overflow:hidden}.tx-amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.tx-amount.income{color:var(--income)}.fab{right:max(20px,50% - 300px);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px);background:var(--accent);width:60px;height:60px;color:var(--accent-text);cursor:pointer;border:0;border-radius:50%;font-size:2rem;line-height:1;position:fixed;box-shadow:0 6px 20px #c8553d59}.sheet{border:1px solid var(--border);background:var(--surface);width:min(520px,100% - 32px);max-height:calc(100% - 32px);color:var(--text);border-radius:18px;padding:20px}.sheet::backdrop{background:#140c0673}.cat-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.cat-row{align-items:center;gap:8px;display:flex}.invite{background:var(--surface-2);text-align:center;border-radius:10px;padding:12px}.invite-code{letter-spacing:.15em;-webkit-user-select:all;user-select:all;font-family:ui-monospace,Cascadia Mono,Menlo,monospace;font-size:1.75rem;font-weight:700}.code-input{text-transform:uppercase;letter-spacing:.1em;font-family:ui-monospace,Cascadia Mono,Menlo,monospace}.toast{left:50%;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 88px);background:var(--text);max-width:calc(100% - 32px);color:var(--bg);z-index:100;white-space:pre-line;border-radius:999px;padding:10px 18px;font-size:.875rem;position:fixed;transform:translate(-50%)}.toast-error{background:var(--danger);color:#fff}@media (width<=420px){.stat-value{font-size:.95rem}}a.segment{justify-content:center;align-items:center;text-decoration:none;display:flex}.chart-card>h3{margin-bottom:2px}.chart{position:relative}.chart svg{display:block;overflow:visible}.chart-grid{stroke:var(--chart-grid);stroke-width:1px}.chart-axis{stroke:var(--border);stroke-width:1px}.chart-band{fill:var(--surface-2)}.chart-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.chart-tick-strong{fill:var(--text);font-weight:700}.chart-label{fill:var(--text);font-size:12px;font-weight:700}.chart-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{stroke:var(--surface);stroke-width:2px}.chart-mark.hover{filter:brightness(1.12)}.chart-hit{cursor:default;outline:none}.chart-cross{stroke:var(--muted);stroke-width:1px}.chart-legend{color:var(--muted);gap:14px;font-size:.8rem;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.key-rect{border-radius:2px;width:10px;height:10px}.key-line{border-radius:1px;flex:none;width:14px;height:2px}.chart-tip{z-index:5;background:var(--surface);border:1px solid var(--border);pointer-events:none;white-space:nowrap;border-radius:10px;padding:8px 10px;font-size:.8rem;display:none;position:absolute;box-shadow:0 6px 20px #1e140a26}.chart-tip-title{color:var(--muted);margin-bottom:2px}.chart-tip-row{align-items:center;gap:6px;display:flex}.chart-tip-row span{color:var(--muted)}.chart-table summary{cursor:pointer;color:var(--muted);font-size:.8rem}.chart-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:8px;font-size:.85rem}.chart-table th,.chart-table td{text-align:right;border-bottom:1px solid var(--border);padding:4px 6px}.chart-table th:first-child,.chart-table td:first-child{text-align:left}.breakdown-diff{grid-column:1/-1}.chat-log{flex-direction:column;gap:10px;display:flex}.bubble{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:16px;max-width:88%;padding:10px 14px;font-size:.95rem}.bubble.user{background:var(--accent);color:var(--accent-text);border-bottom-right-radius:4px;align-self:flex-end}.bubble.assistant{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:4px;align-self:flex-start}.bubble.pending{color:var(--muted)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer;border-radius:999px;padding:8px 12px;font-size:.85rem}.chat-form{align-items:flex-end;gap:8px;display:flex}textarea{border:1px solid var(--border);background:var(--surface);min-height:44px;font:inherit;color:inherit;resize:none;border-radius:10px;flex:1;padding:10px 12px}.chat-reset{align-self:center}.badge{background:var(--accent-soft);color:var(--text);border-radius:6px;flex:none;padding:0 6px;font-size:.72rem;font-weight:600}[hidden]{display:none!important}.pie{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;display:flex}.pie-slice{stroke:var(--surface);stroke-width:2px;stroke-linejoin:round;outline:none}.pie-total{fill:var(--text);font-size:18px;font-weight:700}.pie-legend{flex-direction:column;gap:6px;min-width:140px;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.pie-legend li{align-items:center;gap:8px;display:flex}.pie-name{flex:1}.pie-pct{color:var(--muted);font-variant-numeric:tabular-nums}.brand img,.auth-brand img{border-radius:22%}.no-select,.no-select *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.balance-card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);grid-template-columns:1fr 1fr;gap:12px;padding:16px;display:grid}.balance-main,.balance-account{flex-direction:column;gap:2px;min-width:0;display:flex}.balance-account{border-left:1px solid var(--border);padding-left:12px}.balance-value{overflow-wrap:anywhere;font-size:1.6rem;font-weight:700;line-height:1.3}.account-value{overflow-wrap:anywhere;font-size:1.2rem;font-weight:700;line-height:1.5}.balance-value.minus,.account-value.minus{color:var(--expense)}.summary:has(>:nth-child(3):last-child){grid-template-columns:repeat(3,1fr)}.badge-account{background:color-mix(in srgb, var(--chart-saving) 18%, transparent)}.topbar-right{align-items:center;gap:8px;display:flex}.icon-btn{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover,.icon-btn.active{color:var(--accent);background:var(--surface-2)}.balance-card{position:relative}.balance-eye{width:36px;height:36px;position:absolute;top:6px;right:6px}.balance-account{padding-right:28px}.secret{color:var(--muted);font-weight:600}.savings-list{border-top:1px solid var(--border);flex-direction:column;grid-column:1/-1;gap:6px;margin:0;padding:10px 0 0;font-size:.9rem;list-style:none;display:flex}.savings-list li{justify-content:space-between;align-items:center;gap:8px;display:flex}.savings-list strong{font-variant-numeric:tabular-nums}.switch-row{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:6px 0;display:flex}.switch-text{flex-direction:column;gap:2px;display:flex}.switch-row input[type=checkbox]{appearance:none;background:var(--border);cursor:pointer;border:0;border-radius:999px;flex:none;width:48px;height:28px;min-height:0;margin:0;padding:0;transition:background .15s;position:relative}.switch-row input[type=checkbox]:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.switch-row input[type=checkbox]:checked{background:var(--accent)}.switch-row input[type=checkbox]:checked:after{transform:translate(20px)}.cat-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;display:grid}.cat-chip{border:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:6px;min-height:40px;padding:6px 10px;font-size:.85rem;display:flex}.cat-chip.active{border-color:var(--cat);background:color-mix(in srgb, var(--cat) 16%, var(--surface));box-shadow:inset 0 0 0 1px var(--cat);font-weight:700}.chip-active{border-color:var(--accent);background:var(--accent-soft);font-weight:700}.recurring-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recurring-item{border-bottom:1px solid var(--border);grid-template-columns:auto minmax(0,1fr) auto auto auto;align-items:center;gap:6px;padding:8px 0;font-size:.9rem;display:grid}.recurring-item.paused{opacity:.55}.recurring-day{color:var(--muted);white-space:nowrap;font-size:.75rem}.recurring-main{align-items:center;gap:6px;min-width:0;display:flex}.recurring-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.recurring-item .btn-icon{min-width:32px;height:32px;min-height:32px;font-size:1rem}.switch-row.mini input[type=checkbox]{transform:scale(.8)}.switch-row.mini{padding:0}.recurring-add summary{cursor:pointer;color:var(--accent);padding:6px 0;font-weight:600}.recurring-add form{margin-top:8px}.recurring-row>.field{flex:1}.bubble.answer{white-space:normal;flex-direction:column;gap:10px;display:flex}.answer-summary{font-weight:700;line-height:1.6}.answer-points{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.answer-points li{border-left:3px solid var(--accent-soft);flex-direction:column;gap:1px;padding-left:10px;font-size:.9rem;display:flex}.answer-points strong{font-size:.85rem}.answer-actions{background:var(--surface-2);border-radius:10px;padding:8px 10px;font-size:.9rem}.answer-label{color:var(--accent);font-size:.75rem;font-weight:700}.answer-actions ul{margin:4px 0 0;padding-left:1.2em}.savings-grid{border-top:1px solid var(--border);grid-column:1/-1;grid-template-columns:1fr 1fr;gap:12px;padding-top:12px;display:grid}.savings-cell{flex-direction:column;gap:2px;min-width:0;display:flex}.savings-cell:nth-child(2n){border-left:1px solid var(--border);padding-left:12px}.savings-label{align-items:center;gap:6px;display:flex}.sheet{overscroll-behavior:contain}input[type=date]{appearance:none;text-align:left;min-width:0;max-width:100%;display:block}input[type=date]::-webkit-date-and-time-value{text-align:left}.field{min-width:0}.badge-plan{background:var(--surface-2);color:var(--muted);border:1px dashed var(--border)}.topbar .icon-btn{width:34px;height:34px}.topbar .icon-btn svg{width:22px;height:22px}button.balance-account,button.savings-cell{text-align:left;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}button.balance-account,button.savings-cell:nth-child(2n){border-left:1px solid var(--border);padding-left:12px}.sheet.sheet-small{width:min(420px,100% - 32px)}.badge-card{background:#e9a03b38}.cat-locked{flex:none;width:44px}.password-card summary{cursor:pointer;list-style:none}.password-card summary::-webkit-details-marker{display:none}.password-card summary h3:after{content:" ›";color:var(--muted)}.password-card[open] summary{margin-bottom:12px}.tx-cat{white-space:nowrap;flex:none}.check-chip{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:6px;width:auto;padding:6px 12px;display:inline-flex}.check-chip input{width:18px;height:18px;min-height:0;accent-color:var(--accent);flex:none;margin:0;padding:0}.check-chip span{white-space:nowrap}.check-chip:has(input:not(:checked)){color:var(--muted);background:var(--surface-2)}.amount-input{font-variant-numeric:tabular-nums}.tx-item{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.875rem;overflow:hidden}.memo-row{align-items:stretch;gap:8px;display:flex}.memo-row input{flex:1;min-width:0}.detail-btn{flex:none;position:relative}.detail-btn.has-detail{border-color:var(--accent);color:var(--accent)}.detail-btn.has-detail:after{content:"";background:var(--accent);border-radius:50%;width:7px;height:7px;position:absolute;top:5px;right:5px}
