:root{--bg: #f7f7f5;--surface: #ffffff;--surface-2: #f1f1ee;--surface-3: #e9e9e5;--ink: #16181b;--ink-2: #454a4f;--muted: #5f666c;--border: #e3e3df;--border-strong: #cfcfca;--brand: #23795e;--brand-dark: #1a644d;--brand-soft: #e6f4ee;--brand-soft-border: #b9e2d3;--brand-ink: #145743;--brand-bright: #48a887;--income: #23795e;--danger: #a83a3a;--danger-soft: #fbecec;--shadow-sm: 0 1px 2px rgb(22 24 27 / .05);--shadow-md: 0 8px 24px -12px rgb(22 24 27 / .22);--shadow-lg: 0 24px 60px -20px rgb(22 24 27 / .3);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-script: "Playwrite VN", "Segoe Script", "Bradley Hand", cursive;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", monospace;--ease: cubic-bezier(.22, .8, .32, 1);--dur: .18s;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f1211;--surface: #171b19;--surface-2: #1f2523;--surface-3: #28302d;--ink: #f3f5f4;--ink-2: #c3cac6;--muted: #98a19c;--border: #2b3230;--border-strong: #3b4441;--brand: #6fd4ae;--brand-dark: #8ae3c0;--brand-soft: #172a23;--brand-soft-border: #2d574a;--brand-ink: #a7e8cf;--brand-bright: #6fd4ae;--income: #6fd4ae;--danger: #f08c8c;--danger-soft: #2a1a1a;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 8px 24px -12px rgb(0 0 0 / .6);--shadow-lg: 0 24px 60px -20px rgb(0 0 0 / .7);color-scheme:dark}}:root[data-theme=dark]{--bg: #0f1211;--surface: #171b19;--surface-2: #1f2523;--surface-3: #28302d;--ink: #f3f5f4;--ink-2: #c3cac6;--muted: #98a19c;--border: #2b3230;--border-strong: #3b4441;--brand: #6fd4ae;--brand-dark: #8ae3c0;--brand-soft: #172a23;--brand-soft-border: #2d574a;--brand-ink: #a7e8cf;--brand-bright: #6fd4ae;--income: #6fd4ae;--danger: #f08c8c;--danger-soft: #2a1a1a;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 8px 24px -12px rgb(0 0 0 / .6);--shadow-lg: 0 24px 60px -20px rgb(0 0 0 / .7);color-scheme:dark}:root[data-theme=dark] .btn-primary,:root[data-theme=dark] .btn-accent{color:#0f1211}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .btn-primary,:root:not([data-theme=light]) .btn-accent{color:#0f1211}}@font-face{font-family:Playwrite VN;src:url(/fonts/playwrite-vn-subset.woff2) format("woff2");font-weight:100 400;font-style:normal;font-display:swap}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.is-locked{overflow:hidden}h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}ul,ol{margin:0;padding:0;list-style:none}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{border:0;background:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}::selection{background:var(--brand-soft);color:var(--brand-ink)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.script{font-family:var(--font-script);font-weight:400;letter-spacing:.01em}.skip-link{position:fixed;top:8px;left:8px;z-index:100;padding:10px 16px;border-radius:10px;background:var(--ink);color:var(--bg);font-weight:650;transform:translateY(-160%);transition:transform .15s var(--ease)}.skip-link:focus-visible{transform:translateY(0);outline-color:var(--bg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--radius-md);font-size:1rem;font-weight:650;line-height:1.2;white-space:nowrap;transition:background-color var(--dur) var(--ease),transform var(--dur) var(--ease),border-color var(--dur) var(--ease);user-select:none}.btn:active{transform:scale(.98)}.btn-primary,.btn-accent{background:var(--brand);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover,.btn-accent:hover{background:var(--brand-dark)}.btn-ghost{background:var(--surface);border:1px solid var(--border);color:var(--ink)}.btn-ghost:hover{border-color:var(--border-strong);background:var(--surface-2)}.btn-quiet{background:transparent;color:var(--brand);min-height:44px;padding:0 12px}.btn-quiet:hover{background:var(--brand-soft)}.btn-danger{background:var(--danger);color:#fff}.btn-danger-soft{background:var(--danger-soft);color:var(--danger)}.btn-sm{min-height:40px;padding:0 14px;font-size:.9375rem;border-radius:var(--radius-sm)}.btn-block{width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:12px;color:var(--ink-2);transition:background-color var(--dur) var(--ease)}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon{display:inline-flex;flex:0 0 auto}.field{display:grid;gap:6px}.field>label{font-size:.75rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.field input,.field select,.field textarea{width:100%;min-height:48px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:1rem;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.field-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink-2);font-size:.9375rem;font-weight:550;white-space:nowrap;transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.chip:hover{border-color:var(--border-strong);color:var(--ink)}.chip[aria-pressed=true]{background:var(--brand-soft);border-color:var(--brand-soft-border);color:var(--brand-ink)}.segmented{display:inline-flex;padding:4px;gap:4px;border-radius:12px;background:var(--surface-2)}.segmented button{min-height:44px;padding:0 14px;border-radius:9px;font-size:.9375rem;font-weight:600;color:var(--muted);transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.badge{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:2px 10px;border-radius:999px;background:var(--brand-soft);border:1px solid var(--brand-soft-border);color:var(--brand-ink);font-size:.75rem;font-weight:650;letter-spacing:.02em;white-space:nowrap}.amount{font-variant-numeric:tabular-nums;font-weight:650;white-space:nowrap}.amount.income{color:var(--income)}.amount.saving{color:var(--ink-2)}.sheet-backdrop{position:fixed;inset:0;z-index:60;background:#0c0e0d6b;backdrop-filter:blur(2px);opacity:0;transition:opacity .22s var(--ease)}.sheet-backdrop.is-open{opacity:1}.sheet{position:fixed;z-index:61;left:50%;bottom:0;width:min(100%,560px);max-height:calc(100dvh - 24px);display:flex;flex-direction:column;transform:translate(-50%,105%);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--surface);box-shadow:var(--shadow-lg);transition:transform .32s var(--ease);outline:none}.sheet.is-open{transform:translate(-50%)}.sheet-header{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 12px;background:var(--surface);border-bottom:1px solid transparent}.sheet-header.is-stuck{border-bottom-color:var(--border)}.sheet-header h2{font-size:1.25rem;font-weight:700;letter-spacing:-.01em}.sheet-handle{width:40px;height:4px;margin:8px auto 0;border-radius:999px;background:var(--border-strong)}.sheet-body{overflow-y:auto;overscroll-behavior:contain;padding:4px 20px calc(24px + env(safe-area-inset-bottom))}.sheet-actions{display:flex;gap:10px;padding-top:8px}.toast{position:fixed;z-index:70;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 32px);padding:8px 8px 8px 16px;border-radius:14px;background:var(--ink);color:var(--bg);font-size:.9375rem;font-weight:550;box-shadow:var(--shadow-lg);transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:opacity .2s var(--ease),transform .2s var(--ease)}.toast.is-open{opacity:1;transform:translate(-50%);pointer-events:auto}.toast button{min-height:40px;padding:0 12px;border-radius:9px;color:var(--bg);font-weight:700;white-space:nowrap}.toast button:hover{background:#ffffff24}.muted{color:var(--muted)}.tabular{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:10px}.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}.stack{display:grid;gap:14px}@media(prefers-reduced-motion:reduce){.sheet,.sheet-backdrop,.toast{transition:none}}
