.theme-toggle{border-radius:var(--r-sm);width:34px;height:34px;color:var(--on-sidebar);background:#f3f1fb14;border:1px solid #f3f1fb24;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s;display:inline-flex}.theme-toggle:hover{background:#f3f1fb29}.sidebar{background:var(--sidebar-bg);color:var(--on-sidebar);border-radius:var(--r-lg);padding:var(--sp-5) var(--sp-4);gap:var(--sp-6);flex-direction:column;display:flex}@media (width<=860px){.sidebar{padding:var(--sp-3) var(--sp-4);justify-content:space-between;align-items:center;gap:var(--sp-3);flex-direction:row}}.sidebar-brand{align-items:center;gap:var(--sp-3);display:flex}.sidebar-brand-mark{border-radius:var(--r-sm);background:var(--brand);width:34px;height:34px;color:var(--on-brand);font-family:var(--font-mono);font-weight:700;font-size:var(--text-lg);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-brand-title{font-family:var(--font-head);font-size:var(--text-sm);font-weight:700}.sidebar-brand-sub{font-family:var(--font-mono);font-size:var(--text-2xs);color:#f3f1fb8c}@media (width<=860px){.sidebar-brand-sub{display:none}}.sidebar-nav{gap:var(--sp-1);flex-direction:column;display:flex}@media (width<=860px){.sidebar-nav{display:none}}.sidebar-link{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);color:#f3f1fbb8;font-size:var(--text-sm);text-decoration:none;transition:background .12s,color .12s;display:flex}.sidebar-link:hover{color:var(--on-sidebar);background:#f3f1fb14}.sidebar-link.is-active{background:var(--brand);color:var(--on-brand);font-weight:700}.sidebar-footer{margin-top:auto;display:flex}@media (width<=860px){.sidebar-footer{margin-top:0}}.tabbar{display:none}@media (width<=860px){.tabbar{left:var(--sp-4);right:var(--sp-4);bottom:calc(var(--sp-3) + env(safe-area-inset-bottom,0px));background:var(--sidebar-bg);border-radius:var(--r-lg);height:64px;box-shadow:var(--shadow-hero);padding:0 var(--sp-1);z-index:20;display:flex;position:fixed}}.tabbar-link{color:#f3f1fb8c;border-radius:var(--r-md);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-width:0;margin:8px 2px;font-size:10px;text-decoration:none;display:flex}.tabbar-link span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.tabbar-link.is-active{color:var(--brand)}.authgate-screen{justify-content:center;align-items:center;gap:var(--sp-3);min-height:100vh;padding:var(--sp-5);background:var(--bg);color:var(--ink-soft);flex-direction:column;display:flex}.authgate-checking-text{font-size:var(--text-sm)}.authgate-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;max-width:420px;box-shadow:var(--shadow-card);padding:var(--sp-6) var(--sp-5);text-align:left}.authgate-icon{border-radius:var(--r-sm);background:var(--warn-soft);width:46px;height:46px;color:var(--warn);margin-bottom:var(--sp-4);justify-content:center;align-items:center;display:flex}.authgate-card h1{font-size:var(--text-lg);margin-bottom:var(--sp-3)}.authgate-desc{font-size:var(--text-sm);color:var(--ink-soft);margin:0 0 var(--sp-4);line-height:1.6}.authgate-steps{font-size:var(--text-sm);color:var(--ink-soft);margin:0 0 var(--sp-5);padding-left:var(--sp-5);line-height:1.7}.authgate-steps li{margin-bottom:var(--sp-1)}.authgate-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.authgate-btn{border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;font-weight:600;text-decoration:none;display:inline-flex}.authgate-btn--primary{background:var(--brand);color:var(--on-brand)}.authgate-btn--primary:hover{background:color-mix(in srgb, var(--brand) 85%, black)}.authgate-btn--ghost{border-color:var(--line);color:var(--ink-soft);background:0 0}.authgate-btn--ghost:hover{background:var(--bg);color:var(--ink)}.authgate-warn{margin-top:var(--sp-4);font-size:var(--text-xs);color:var(--warn)}.meta-dot{opacity:.5;vertical-align:middle;background:currentColor;border-radius:50%;width:3px;height:3px;margin:0 6px;display:inline-block}.confirm-overlay{padding:var(--sp-4);z-index:100;background:#15121f8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-hero);padding:var(--sp-5);width:100%;max-width:360px}.confirm-icon{border-radius:var(--r-sm);background:var(--warn-soft);width:40px;height:40px;color:var(--warn);margin-bottom:var(--sp-3);justify-content:center;align-items:center;display:flex}.confirm-title{font-family:var(--font-head);font-weight:700;font-size:var(--text-base);color:var(--ink);margin-bottom:var(--sp-2)}.confirm-message{font-size:var(--text-sm);color:var(--ink-soft);margin-bottom:var(--sp-5)}.confirm-actions{justify-content:flex-end;gap:var(--sp-2);display:flex}.txn-card{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card);transition:border-color .12s}.txn-card--duplicate{border-left-color:var(--warn)}.txn-card-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);cursor:pointer;grid-template-columns:32px 1fr auto 18px;display:grid}@media (width<=640px){.txn-card-row{grid-template-columns:28px 1fr 18px}.txn-amount-block{grid-column:2/3;align-items:flex-start!important}}.txn-source-badge{border-radius:var(--r-sm);background:var(--brand-soft);width:32px;height:32px;color:var(--brand);flex-shrink:0;justify-content:center;align-items:center;display:flex}.txn-main{min-width:0}.txn-main-top{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.txn-recipient{font-weight:600;font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.txn-dup-flag{font-size:var(--text-2xs);color:var(--warn);background:var(--warn-soft);border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.txn-category-flag{font-size:var(--text-2xs);color:var(--tint);background:color-mix(in srgb, var(--tint) 16%, var(--surface));white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.txn-meta{font-size:var(--text-xs);color:var(--ink-soft);margin-top:2px}.txn-amount-block{text-align:right;flex-direction:column;align-items:flex-end;display:flex}.txn-amount{font-size:var(--text-base);font-weight:600}.txn-amount-fx{font-size:var(--text-2xs);color:var(--ink-faint)}.txn-chevron{color:var(--ink-faint);transition:transform .15s}.txn-chevron.is-open{transform:rotate(180deg)}.txn-edit{padding:0 var(--sp-4) var(--sp-4);border-top:1px solid var(--line);margin-top:var(--sp-1);padding-top:var(--sp-4)}.txn-edit-grid{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.txn-edit-grid{grid-template-columns:1fr}}.txn-field{font-size:var(--text-xs);color:var(--ink-soft);flex-direction:column;gap:4px;display:flex}.txn-field--wide{grid-column:1/-1}.txn-field input,.txn-field select{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);background:var(--bg);color:var(--ink);font-family:inherit;font-size:var(--text-sm)}.txn-field input:focus,.txn-field select:focus{border-color:var(--brand)}.txn-error{color:var(--warn);font-size:var(--text-xs);margin-top:var(--sp-3)}.txn-edit-actions,.txn-quick-actions{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:var(--sp-4);display:flex}.txn-edit-actions-right{gap:var(--sp-2);display:flex}.txn-quick-actions{padding:0 var(--sp-4) var(--sp-3);margin-top:0}.txn-btn{border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs);border:1px solid #0000;align-items:center;gap:6px;font-weight:600;display:inline-flex}.txn-btn--primary{background:var(--brand);color:var(--on-brand)}.txn-btn--primary:hover{background:color-mix(in srgb, var(--brand) 85%, black)}.txn-btn--primary:disabled{opacity:.6;cursor:default}.txn-btn--ghost{border-color:var(--line);color:var(--ink-soft);background:0 0}.txn-btn--ghost:hover{background:var(--bg)}.txn-btn--danger{border-color:var(--line);color:var(--warn);background:0 0}.txn-btn--danger:hover{background:var(--warn-soft);border-color:var(--warn)}.txn-btn--danger-solid{background:color-mix(in srgb, var(--warn) 82%, black);color:#fff}.txn-btn--danger-solid:hover{background:color-mix(in srgb, var(--warn) 68%, black)}.status-state{text-align:center;align-items:center;gap:var(--sp-2);color:var(--ink-faint);padding:var(--sp-7) var(--sp-4);flex-direction:column;display:flex}.status-state-title{font-size:var(--text-sm);color:var(--ink-soft);margin:0;font-weight:600}.status-state-hint{font-size:var(--text-xs);max-width:320px;margin:0}.page-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-2);display:flex}.page-header h1{font-size:var(--text-xl)}.page-sub{color:var(--ink-soft);font-size:var(--text-sm);margin:var(--sp-1) 0 0;max-width:46ch}.refresh-btn{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs);color:var(--ink-soft);flex-shrink:0;align-items:center;gap:6px;font-weight:600;display:inline-flex}.refresh-btn:hover{border-color:var(--brand);color:var(--ink)}.refresh-btn:disabled{opacity:.6}.pending-summary{align-items:center;gap:var(--sp-2);font-size:var(--text-xs);color:var(--ink-faint);margin-bottom:var(--sp-4);display:flex}.pending-summary-dot{opacity:.6}.txn-list{gap:var(--sp-3);flex-direction:column;display:flex}.acct-card{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card);grid-column:span 2}@media (width<=640px){.acct-card{grid-column:span 2}}.acct-card--inactive{opacity:.6;border-left-color:var(--warn)}.acct-card-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);cursor:pointer;grid-template-columns:32px 1fr 18px;display:grid}.acct-icon{border-radius:var(--r-sm);background:var(--brand-soft);width:32px;height:32px;color:var(--brand);flex-shrink:0;justify-content:center;align-items:center;display:flex}.acct-icon--tint{background:color-mix(in srgb, var(--tint,var(--brand)) 18%, var(--surface));color:var(--tint,var(--brand))}.acct-main{min-width:0}.acct-name{font-weight:600;font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.acct-meta{font-size:var(--text-xs);color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;overflow:hidden}.acct-chevron{color:var(--ink-faint);transition:transform .15s}.acct-chevron.is-open{transform:rotate(180deg)}.acct-edit{padding:0 var(--sp-4) var(--sp-4);border-top:1px solid var(--line);margin-top:var(--sp-1);padding-top:var(--sp-4)}.acct-edit-grid{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.acct-edit-grid{grid-template-columns:1fr}}.acct-field{font-size:var(--text-xs);color:var(--ink-soft);flex-direction:column;gap:4px;display:flex}.acct-field--wide{grid-column:1/-1}.acct-field input,.acct-field select{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);background:var(--bg);color:var(--ink);font-family:inherit;font-size:var(--text-sm)}.acct-field input:focus,.acct-field select:focus{border-color:var(--brand)}.acct-error{color:var(--warn);font-size:var(--text-xs);margin-top:var(--sp-3)}.acct-edit-actions{justify-content:space-between;gap:var(--sp-2);margin-top:var(--sp-4);display:flex}.acct-btn{border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs);border:1px solid #0000;align-items:center;gap:6px;font-weight:600;display:inline-flex}.acct-btn--primary{background:var(--brand);color:var(--on-brand)}.acct-btn--primary:hover{background:color-mix(in srgb, var(--brand) 85%, black)}.acct-btn--primary:disabled{opacity:.6;cursor:default}.acct-btn--ghost{border-color:var(--line);color:var(--ink-soft);background:0 0}.acct-btn--ghost:hover{border-color:var(--warn);color:var(--warn)}.acct-add-card{border:1px dashed var(--line);border-radius:var(--r-md);color:var(--ink-soft);justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-4);min-height:64px;font-size:var(--text-sm);background:0 0;grid-column:span 2;font-weight:600;display:flex}.acct-add-card:hover{border-color:var(--brand);color:var(--brand)}.acct-add-card--open{text-align:left;border-style:solid;border-color:var(--brand);background:var(--surface);border-radius:var(--r-md);padding:var(--sp-4);cursor:default;display:block}.acct-add-card--open:hover{color:var(--ink-soft)}.acct-add-header{font-size:var(--text-sm);color:var(--ink);margin-bottom:var(--sp-4);justify-content:space-between;align-items:center;font-weight:600;display:flex}.acct-add-close{color:var(--ink-faint);border-radius:var(--r-sm);background:0 0;border:none;padding:4px}.acct-add-close:hover{background:var(--bg);color:var(--ink)}.bento-card{border-radius:var(--r-md);padding:var(--sp-4)}.bento-card--default{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-card)}.bento-card--hero{background:var(--hero-gradient);color:var(--on-brand);border-radius:var(--r-lg);box-shadow:var(--shadow-hero);padding:var(--sp-5)}.bento-card--flat{box-shadow:none;background:0 0;border:none;padding:0}.bento-card--tint{background:color-mix(in srgb, var(--tint,var(--brand)) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--tint,var(--brand)) 32%, transparent)}.month-picker{position:relative}.month-picker-trigger{border:1px solid var(--line);border-radius:var(--r-sm);padding:6px var(--sp-3);background:var(--bg);color:var(--ink);font-size:var(--text-xs);align-items:center;gap:6px;font-weight:600;display:inline-flex}.month-picker-trigger:hover{border-color:var(--brand)}.month-picker-pop{z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);width:232px;box-shadow:var(--shadow-hero);padding:var(--sp-3);position:absolute;top:calc(100% + 6px);left:0}.month-picker-year-row{font-weight:700;font-family:var(--font-head);color:var(--ink);margin-bottom:var(--sp-2);justify-content:space-between;align-items:center;display:flex}.month-picker-year-row button{color:var(--ink-soft);border-radius:var(--r-sm);background:0 0;border:none;padding:4px;display:flex}.month-picker-year-row button:hover{background:var(--bg);color:var(--ink)}.month-picker-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.month-picker-cell{background:var(--bg);border-radius:var(--r-sm);font-size:var(--text-xs);color:var(--ink-soft);border:1px solid #0000;padding:8px 0;font-weight:600}.month-picker-cell:hover{border-color:var(--brand);color:var(--ink)}.month-picker-cell.is-selected{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}.month-picker-today{width:100%;margin-top:var(--sp-2);border:1px dashed var(--line);border-radius:var(--r-sm);font-size:var(--text-2xs);color:var(--brand);background:0 0;padding:6px;font-weight:600}.month-picker-today:hover{border-color:var(--brand);background:var(--brand-soft)}.stat-label{font-size:var(--text-xs);color:var(--ink-soft)}.bento-card--hero .stat-label{color:var(--on-brand);opacity:.72}.stat-value{font-size:var(--text-2xl);margin-top:var(--sp-2);font-weight:700;font-family:var(--font-head)}.stat-sub{font-size:var(--text-xs);color:var(--on-brand);opacity:.64;margin-top:var(--sp-1)}.stat-value-sm{font-size:var(--text-lg);margin-top:var(--sp-2);color:var(--ink);font-weight:700;font-family:var(--font-head)}.chart-header{font-size:var(--text-sm);color:var(--ink);margin-bottom:var(--sp-3);font-weight:600}.chart-wrap{margin:0 calc(var(--sp-2) * -1) 0 calc(var(--sp-4) * -1)}.history-header{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.history-header .chart-header{margin-bottom:0}.history-controls{align-items:center;gap:var(--sp-2);display:flex}.ov-btn{border-radius:var(--r-sm);padding:6px var(--sp-3);font-size:var(--text-xs);border:1px solid var(--line);color:var(--ink-soft);background:0 0;align-items:center;gap:6px;font-weight:600;display:inline-flex}.ov-btn:hover{border-color:var(--brand);color:var(--ink)}.ov-btn:disabled{opacity:.5;cursor:default}.upload-panel{gap:var(--sp-4);flex-direction:column;max-width:560px;display:flex}.upload-panel .acct-field select{max-width:360px}.upload-drop{border:1px dashed var(--line);border-radius:var(--r-md);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;min-height:160px;display:flex;overflow:hidden}.upload-drop:hover{border-color:var(--brand)}.upload-drop-empty{align-items:center;gap:var(--sp-2);color:var(--ink-faint);font-size:var(--text-sm);padding:var(--sp-6);text-align:center;flex-direction:column;display:flex}.upload-preview{max-width:100%;max-height:360px;display:block}.upload-hint{font-size:var(--text-xs);color:var(--warn)}.upload-draft{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4)}.upload-done{align-items:center;gap:var(--sp-3);color:var(--brand);padding:var(--sp-7) var(--sp-4);text-align:center;flex-direction:column;display:flex}.upload-done p{color:var(--ink-soft);font-size:var(--text-sm);max-width:360px;margin:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f4fb;--surface:#fff;--surface-2:#fbfaff;--ink:#221c33;--ink-soft:#5b5570;--ink-faint:#9891b3;--line:#e4e0f0;--on-sidebar:#f3f1fb;--brand:#5fb03e;--on-brand:#15291c;--warn:#d9455b;--cat-1:#f0545c;--cat-2:#f2a93b;--cat-3:#2fa793;--cat-4:#5b7fde;--cat-5:#9b6bd6;--cat-6:#e85d9e;--cat-none:#8b8899;--brand-soft:color-mix(in srgb, var(--brand) 16%, var(--surface));--warn-soft:color-mix(in srgb, var(--warn) 14%, var(--surface));--hero-gradient:linear-gradient(135deg, var(--brand) 0%, var(--cat-3) 100%);--sidebar-bg:linear-gradient(165deg, #241f38 0%, #17131f 100%);--font-head:"Manrope", "Segoe UI", system-ui, sans-serif;--font-body:"Inter", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--text-2xs:.6875rem;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.75rem;--text-2xl:2.5rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--r-sm:10px;--r-md:16px;--r-lg:24px;--shadow-card:0 1px 3px #221c330f;--shadow-hero:0 12px 28px #5fb03e38}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15121f;--surface:#1e1930;--surface-2:#241f3a;--ink:#f1eefb;--ink-soft:#a9a3c4;--ink-faint:#766f92;--line:#332b4d;--shadow-card:0 1px 3px #00000059;--shadow-hero:0 12px 28px #5fb03e52}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#15121f;--surface:#1e1930;--surface-2:#241f3a;--ink:#f1eefb;--ink-soft:#a9a3c4;--ink-faint:#766f92;--line:#332b4d;--shadow-card:0 1px 3px #00000059;--shadow-hero:0 12px 28px #5fb03e52}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5;transition:background-color .2s,color .2s}h1,h2,h3,h4{font-family:var(--font-head);color:var(--ink);letter-spacing:-.01em;margin:0}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}a{color:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{gap:var(--sp-5);min-height:100%;padding:var(--sp-5);grid-template-columns:236px 1fr;display:grid}@media (width<=860px){.app-shell{padding:var(--sp-4);padding-bottom:calc(76px + env(safe-area-inset-bottom,0px));gap:var(--sp-4);grid-template-columns:1fr;align-content:start}}.main-scroll{width:100%;max-width:1080px}.bento{gap:var(--sp-4);grid-template-columns:repeat(4,1fr);align-items:start;display:grid}@media (width<=640px){.bento{grid-template-columns:repeat(2,1fr)}}.bento-span-4{grid-column:span 4}.bento-span-3{grid-column:span 3}.bento-span-2{grid-column:span 2}.bento-span-1{grid-column:span 1}@media (width<=640px){.bento-span-4,.bento-span-3,.bento-span-2,.bento-span-1{grid-column:span 2}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}::-webkit-scrollbar-track{background:0 0}
