:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-display:"Manrope", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--bg:#eef5f3;--bg-elevated:#fff;--bg-muted:#e4eeeb;--bg-sidebar:#0a2a25;--bg-sidebar-hover:#ffffff0f;--bg-sidebar-active:#0f9a8a;--text:#0c1f1b;--text-secondary:#3f5852;--text-muted:#6a817b;--text-inverse:#f0fdfa;--text-sidebar:#b7d6cf;--text-sidebar-active:#fff;--border:#d3e2dd;--border-strong:#b4c9c2;--accent:#0f766e;--accent-hover:#0d9488;--accent-soft:#ccfbf1;--accent-contrast:#fff;--success:#15803d;--success-soft:#dcfce7;--warning:#b45309;--warning-soft:#ffedd5;--danger:#b91c1c;--danger-soft:#fee2e2;--info:#0369a1;--info-soft:#e0f2fe;--violet:#6d28d9;--violet-soft:#ede9fe;--shadow-sm:0 1px 2px #0c1f1b0a, 0 1px 3px #0c1f1b0f;--shadow-md:0 10px 30px #0c1f1b14;--shadow-lg:0 18px 48px #0c1f1b1f;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--fs-body:.78rem;--fs-caption:.7rem;--fs-head:.64rem;--fs-badge:.62rem;--sidebar-width:276px;--topbar-height:68px;--bottom-nav-height:0px;--transition:.18s cubic-bezier(.22, 1, .36, 1)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#081210;--bg-elevated:#101c19;--bg-muted:#172622;--bg-sidebar:#040d0b;--bg-sidebar-hover:#ffffff0f;--bg-sidebar-active:#2dd4bf29;--text:#e8f6f2;--text-secondary:#a5c0b9;--text-muted:#7d9790;--text-inverse:#04110e;--text-sidebar:#95c0b7;--text-sidebar-active:#fff;--border:#1f322d;--border-strong:#2f4841;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-soft:#2dd4bf24;--accent-contrast:#042f2e;--success:#4ade80;--success-soft:#4ade8024;--warning:#fbbf24;--warning-soft:#fbbf2424;--danger:#f87171;--danger-soft:#f8717124;--info:#38bdf8;--info-soft:#38bdf824;--violet:#c4b5fd;--violet-soft:#a78bfa2e;--shadow-sm:0 1px 2px #00000059;--shadow-md:0 12px 28px #00000059;--shadow-lg:0 20px 50px #00000073}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}html{-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font-body);background:radial-gradient(900px 420px at 0% -10%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 55%), radial-gradient(700px 380px at 100% 0%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 50%), var(--bg);color:var(--text);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.45;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);margin:0}p{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.phone-only{display:none!important}.skip-link{z-index:2000;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-contrast);transition:transform var(--transition);padding:10px 14px;font-weight:600;position:absolute;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.ptr-indicator{top:max(8px, env(safe-area-inset-top,0px));z-index:60;background:var(--bg-elevated);width:40px;height:40px;color:var(--accent);border:1px solid var(--border);box-shadow:var(--shadow-md);pointer-events:none;border-radius:50%;place-items:center;display:grid;position:fixed;left:50%}.ptr-indicator svg{animation:.9s linear infinite ptr-spin}.ptr-indicator:not(.is-refreshing) svg{animation-play-state:paused}@keyframes ptr-spin{to{transform:rotate(360deg)}}.app-shell{grid-template-columns:var(--sidebar-width) 1fr;min-height:100dvh;display:grid}.app-main{flex-direction:column;min-width:0;min-height:100dvh;display:flex}.app-content{flex-direction:column;flex:1;width:100%;max-width:1320px;margin:0 auto;padding:28px 28px 40px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px;display:flex}.page-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.page-header h1{letter-spacing:-.03em;font-size:clamp(1.7rem,2.4vw,2rem);font-weight:800}.page-header p{color:var(--text-secondary);max-width:54ch;font-size:var(--fs-body);margin-top:8px}.card{background:color-mix(in srgb, var(--bg-elevated) 92%, transparent);border:1px solid color-mix(in srgb, var(--border) 85%, transparent);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);padding:20px}.card:hover{border-color:color-mix(in srgb, var(--accent) 22%, var(--border));box-shadow:var(--shadow-md)}.card.form-stack,.card.table-card{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg-elevated)}.card.form-stack:hover,.card.table-card:hover{transform:none}.card-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.card-grid>.card{min-width:0}.card-grid>.card:has(.stat-label){padding:18px 20px 16px;position:relative;overflow:hidden}.card-grid>.card:has(.stat-label):before{content:"";background:linear-gradient(90deg, var(--accent), transparent 70%);opacity:.85;width:100%;height:3px;position:absolute;inset:0 auto auto 0}.stat-label{color:var(--text-muted);font-size:var(--fs-head);letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px;font-weight:600}.stat-value{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.55rem;font-weight:800}.card-grid>.card:has(.stat-label) .stat-value{overflow-wrap:anywhere;word-break:break-word;max-width:100%;font-size:clamp(1.05rem,1.8vw + .55rem,1.45rem);line-height:1.25}.inv-summary-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px}.inv-summary-grid>.card{min-width:0}.inv-summary-note{margin:6px 0 0;font-size:.75rem}.btn{min-height:36px;transition:background var(--transition), color var(--transition), border-color var(--transition), opacity var(--transition), transform var(--transition), box-shadow var(--transition);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:600;display:inline-flex}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg, color-mix(in srgb, var(--accent-hover) 35%, var(--accent)), var(--accent));color:var(--accent-contrast);box-shadow:0 8px 20px color-mix(in srgb, var(--accent) 28%, transparent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--bg-elevated);border:1px solid var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--bg-muted);border-color:color-mix(in srgb, var(--accent) 25%, var(--border-strong))}.btn-ghost{color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-muted);color:var(--text)}.btn-sm{min-height:28px;font-size:var(--fs-body);border-radius:999px;gap:6px;padding:0 10px}.btn-outline{background:var(--bg-elevated);border:1px solid var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-outline:hover:not(:disabled){background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 35%, var(--border-strong));color:var(--accent)}.btn-danger-outline{background:var(--bg-elevated);border:1px solid color-mix(in srgb, var(--danger) 35%, var(--border));color:var(--danger);box-shadow:var(--shadow-sm)}.btn-danger-outline:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-danger{background:var(--danger);color:#fff}.icon-action{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:background .16s,color .16s,transform .16s,box-shadow .16s;display:inline-flex}.icon-action:hover:not(:disabled){box-shadow:var(--shadow-sm);transform:translateY(-1px)}.icon-action:active:not(:disabled){transform:translateY(0)}.icon-action--neutral:hover:not(:disabled){background:var(--bg-muted);color:var(--text)}.icon-action--accent:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.icon-action--danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.icon-action:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:2px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field label{line-height:1.2;font-size:var(--fs-caption);color:var(--text-secondary);letter-spacing:.01em;margin:0;padding:0;font-weight:600}.check-row{font-size:var(--fs-body);align-items:flex-start;gap:10px;line-height:1.4;display:flex}.check-row input{margin-top:3px}.field input,.field select,.field textarea,.searchable-select-trigger,.searchable-select-search input{border:1px solid var(--border-strong);background:var(--bg-elevated);border-radius:12px;min-height:36px;margin:0;padding:8px 12px}.field textarea.notes-area{resize:vertical;min-height:96px;line-height:1.45;font:inherit;white-space:pre-wrap}.field-span-all{grid-column:1/-1}.notes-pre{white-space:pre-wrap;word-break:break-word;font:inherit;margin:0}.tx-detail-notes{flex-direction:column;gap:6px;margin-top:16px;display:flex}.searchable-select-trigger{transition:border-color var(--transition), box-shadow var(--transition), background var(--transition)}.field input:hover,.field select:hover,.field textarea:hover,.searchable-select-trigger:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 28%, var(--border-strong))}.field input:focus,.field select:focus,.field textarea:focus,.searchable-select-trigger:focus-visible,.searchable-select.is-open .searchable-select-trigger,.searchable-select-search input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.field input:read-only{background:var(--bg);color:var(--text-secondary);cursor:default}input[type=number]{appearance:textfield}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.date-field-control{align-items:center;display:flex;position:relative}.date-field-control input[type=text]{z-index:1;font-variant-numeric:tabular-nums;letter-spacing:.02em;width:100%;padding-right:44px;position:relative}.date-field-calendar{z-index:2;border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.date-field-calendar:hover:not(:disabled){background:var(--bg-muted);color:var(--text)}.date-field-calendar:disabled{opacity:.5;cursor:not-allowed}.password-field-control{align-items:center;display:flex;position:relative}.password-field-control input{width:100%;padding-right:44px}.password-toggle{z-index:2;border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.password-toggle:hover{background:var(--bg-muted);color:var(--text)}.check-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;margin-top:2px}.check-row small{color:var(--text-muted);margin-top:2px;font-weight:400;display:block}.date-field-native{opacity:.01;cursor:pointer;z-index:0;border:0;width:100%;height:100%;margin:0;padding:0;position:absolute;top:0;left:0}.date-field-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:2px;display:flex}.date-quick{gap:6px;display:flex}.date-chip{border:1px solid var(--border);background:var(--bg-muted);color:var(--text-secondary);font:inherit;font-size:var(--fs-body);cursor:pointer;border-radius:999px;padding:2px 10px;font-weight:600}.date-chip:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 40%, var(--border));color:var(--accent);background:var(--accent-soft)}.date-chip:disabled{opacity:.5;cursor:not-allowed}.date-error{color:var(--danger);font-size:var(--fs-caption);font-weight:600}.date-field-invalid input[type=text]{border-color:var(--danger)}.form-stack{flex-direction:column;gap:18px;display:flex}.card.form-stack{padding:22px 22px 20px}.badge{font-size:var(--fs-badge);letter-spacing:0;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 18%, transparent);border-radius:999px;align-items:center;gap:6px;padding:2px 6px;font-weight:700;display:inline-flex}.badge-ok{background:var(--success-soft);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 32%, transparent)}.badge-warn{color:#c2410c;background:#f973162e;border:1px solid #f973165c}.badge-split{border:1px solid color-mix(in srgb, var(--text-muted) 22%, transparent);background:0 0;gap:0;padding:0;display:inline-flex;overflow:hidden}.badge-split-part{font-size:inherit;font-weight:inherit;line-height:inherit;white-space:nowrap;padding:2px 5px}.badge-split-part--need{background:var(--success-soft);color:var(--success)}.badge-split-part--want{color:#c2410c;background:#f973162e}.badge-loss{background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 42%, transparent)}.badge-split-part--loss{background:var(--danger-soft);color:var(--danger)}.badge--type-expense{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb, var(--danger) 42%, transparent)}.badge--type-income{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb, var(--success) 32%, transparent)}.badge--type-transfer{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb, var(--accent) 32%, transparent)}.badge--type-investment{background:var(--violet-soft);color:var(--violet);border-color:color-mix(in srgb, var(--violet) 32%, transparent)}.badge--type-lent{background:var(--warning-soft);color:var(--warning);border-color:color-mix(in srgb, var(--warning) 32%, transparent)}.badge--type-borrowed{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb, var(--info) 32%, transparent)}.badge--type-repayment-received{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb, var(--success) 32%, transparent)}.badge--type-repayment-made{background:var(--warning-soft);color:var(--warning);border-color:color-mix(in srgb, var(--warning) 32%, transparent)}.badge--type-credit-card-payment{background:var(--violet-soft);color:var(--violet);border-color:color-mix(in srgb, var(--violet) 32%, transparent)}.badge--type-card-cash-out{background:var(--warning-soft);color:var(--warning);border-color:color-mix(in srgb, var(--warning) 32%, transparent)}.badge--type-card-cash-out-return,.badge--type-card-cashback,.badge--type-accrue-receivable{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb, var(--success) 32%, transparent)}.badge--type-accrue-payable{background:var(--warning-soft,var(--accent-soft));color:var(--warning,var(--accent));border-color:color-mix(in srgb, var(--warning,var(--accent)) 32%, transparent)}.badge--type-adjustment{background:var(--bg-muted);color:var(--text-secondary);border-color:var(--border-strong)}.empty-state,.error-state{text-align:center;border:1px solid var(--border);border-radius:var(--radius-xl);background:radial-gradient(420px 180px at 50% 0%, var(--accent-soft), transparent 70%), var(--bg-elevated);box-shadow:var(--shadow-sm);padding:56px 28px}.empty-state h3,.error-state h3{margin-bottom:8px;font-size:1.2rem;font-weight:700}.empty-state p,.error-state p{color:var(--text-secondary);max-width:42ch;margin:0 auto 18px}.skeleton{background:linear-gradient(90deg, var(--bg-muted) 0%, color-mix(in srgb, var(--bg-muted) 40%, var(--bg-elevated)) 50%, var(--bg-muted) 100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.2s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.toast-viewport{z-index:1000;flex-direction:column;gap:8px;width:min(360px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-elevated);box-shadow:var(--shadow-md);align-items:flex-start;gap:12px;padding:12px 14px;animation:.18s toast-in;display:flex}.toast.success{border-color:color-mix(in srgb, var(--success) 35%, var(--border))}.toast.error{border-color:color-mix(in srgb, var(--danger) 35%, var(--border))}.toast-title{font-weight:600;font-size:var(--fs-body)}.toast-message{color:var(--text-secondary);font-size:var(--fs-caption)}.toast-action{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;margin-top:8px;padding:0;font-weight:700}.toast-action:hover{text-decoration:underline}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:960px){:root{--topbar-height:56px;--bottom-nav-height:calc(56px + env(safe-area-inset-bottom,0px))}.app-shell{grid-template-columns:1fr;height:100dvh;max-height:100dvh;overflow:hidden}.app-main{height:100%;min-height:0;max-height:100%;overflow:hidden}.app-content{padding:14px 14px calc(20px + var(--bottom-nav-height));-webkit-overflow-scrolling:touch;overscroll-behavior-y:none;min-height:0;overflow:auto}.page-header{gap:10px;margin-bottom:14px}.page-header:not(.dash-header) h1,.page-header:not(.dash-header) p{display:none}.page-header:not(.dash-header):not(:has(.btn,.action-row,.page-header-actions,a.btn)){display:none}.page-header-actions,.page-header .action-row{width:100%}.page-header .btn,.page-header-actions .btn{min-height:44px}.btn{min-height:44px;padding:0 16px}.hide-on-mobile,.desktop-only{display:none!important}.phone-only{flex-direction:column;gap:6px;display:flex!important}.icon-btn{width:44px;height:44px}.date-field-control input[type=text]{padding-right:48px}.date-field-calendar,.password-toggle{width:40px;height:40px}.page-header .action-row .btn{flex:9rem}a,button{touch-action:manipulation}.btn-sm{min-height:40px}.icon-action{width:40px;height:40px}.icon-action svg{width:18px;height:18px}.field input,.field select,.field textarea,.searchable-select-trigger,.searchable-select-search input{min-height:44px;font-size:16px}.toast-viewport{width:auto;left:12px;right:12px;bottom:calc(var(--bottom-nav-height) + 12px)}}
