@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap";:root{--color-forest-ink: #163300;--color-lime-voltage: #9fe870;--color-spruce: #054d28;--color-linen-mist: #e2f6d5;--color-signal-blue: #0b4c72;--color-alarm-red: #cb272f;--color-charcoal: #454745;--color-obsidian: #0e0f0c;--color-pebble: #868685;--color-slate: #6a6c6a;--color-fog: #e8ebe6;--color-paper: #ffffff;--bg-page: var(--color-paper);--bg-card: var(--color-fog);--bg-tinted: var(--color-linen-mist);--bg-active: var(--color-lime-voltage);--bg-dark: var(--color-forest-ink);--bg-input: var(--color-paper);--text-display: var(--color-obsidian);--text-primary: var(--color-charcoal);--text-secondary: var(--color-slate);--text-muted: var(--color-pebble);--text-on-dark: var(--color-paper);--text-on-lime: var(--color-forest-ink);--text-accent: var(--color-forest-ink);--border-default: var(--color-pebble);--border-emphasis: var(--color-forest-ink);--border-subtle: var(--color-fog);--shadow-subtle: rgba(14, 15, 12, .12) 0px 0px 0px 1px;--shadow-subtle-2: rgb(134, 134, 133) 0px 0px 0px 1px inset;--shadow-xl: rgba(0,0,0,.15) 0px 10px 32px 0px, rgba(0,0,0,.04) 0px 40px 40px 0px;--shadow-lg: rgba(0,0,0,.08) 0px 6px 20px 0px;--font-inter: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-micro: 12px;--leading-micro: 1.63;--tracking-micro: -.036px;--text-caption: 14px;--leading-caption: 1.55;--tracking-caption: -.07px;--text-body-sm: 16px;--leading-body-sm: 1.5;--tracking-body-sm: -.096px;--text-body: 18px;--leading-body: 1.5;--tracking-body: -.126px;--text-body-lg: 25px;--leading-body-lg: 1.3;--tracking-body-lg: -.225px;--text-subheading: 36px;--leading-subheading: 1.25;--tracking-subheading: -.396px;--text-heading-sm: 45px;--leading-heading-sm: 1.1;--tracking-heading-sm: -.495px;--s4: 4px;--s8: 8px;--s12: 12px;--s16: 16px;--s20: 20px;--s24: 24px;--s28: 28px;--s32: 32px;--s40: 40px;--s44: 44px;--s48: 48px;--s56: 56px;--s64: 64px;--radius-card: 10px;--radius-input: 10px;--radius-large: 28px;--radius-pill: 9999px;--radius-image: 1000px;--t-fast: .12s ease;--t-base: .22s ease;--bottom-nav-h: 68px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}@media (prefers-color-scheme: dark){:root{--bg-page: #0e150a;--bg-card: #1a2213;--bg-tinted: #1f2d16;--bg-input: #1a2213;--text-display: #f0f7e8;--text-primary: #d4e8c0;--text-secondary: #8fab78;--text-muted: #5a7048;--text-on-dark: var(--color-paper);--text-accent: var(--color-lime-voltage);--border-default: #2d3d22;--border-emphasis: var(--color-lime-voltage);--border-subtle: #1f2d16;--shadow-subtle: rgba(0,0,0,.4) 0px 0px 0px 1px;--shadow-xl: rgba(0,0,0,.5) 0px 10px 32px 0px;--shadow-lg: rgba(0,0,0,.3) 0px 6px 20px 0px}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-inter);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}body{background:var(--bg-page);color:var(--text-primary);min-height:100dvh;overflow-x:hidden;overscroll-behavior:none}button,input,select,textarea{font-family:inherit}a{text-decoration:none;color:inherit}#root{display:flex;flex-direction:column;min-height:100dvh}.app-shell{display:flex;flex-direction:column;min-height:100dvh;max-width:480px;margin:0 auto;background:var(--bg-page);position:relative}.page-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--bottom-nav-h) + var(--safe-bottom) + 24px)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:var(--bg-page);border-top:1px solid var(--border-subtle);display:flex;align-items:stretch;height:calc(var(--bottom-nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);z-index:100}.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:none;background:none;cursor:pointer;color:var(--text-muted);transition:color var(--t-fast);padding:8px 0;position:relative}.nav-btn.active{color:var(--color-forest-ink)}@media (prefers-color-scheme: dark){.nav-btn.active{color:var(--color-lime-voltage)}}.nav-btn svg{width:22px;height:22px;stroke-width:1.75}.nav-btn span{font-size:10px;font-weight:600;letter-spacing:.02em}.nav-active-dot{position:absolute;top:6px;width:4px;height:4px;border-radius:var(--radius-pill);background:var(--color-forest-ink)}@media (prefers-color-scheme: dark){.nav-active-dot{background:var(--color-lime-voltage)}}.nav-add-wrap{flex:1;display:flex;align-items:center;justify-content:center}.nav-add-btn{width:52px;height:52px;border-radius:var(--radius-pill);background:var(--color-forest-ink);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform var(--t-fast),background var(--t-fast);margin-top:-10px}.nav-add-btn:active{transform:scale(.92)}.nav-add-btn svg{color:var(--color-lime-voltage);width:26px;height:26px;stroke-width:2.5}.page-header{padding:calc(var(--safe-top) + 20px) var(--s24) var(--s16);display:flex;align-items:center;justify-content:space-between}.logo-text{font-size:24px;font-weight:900;letter-spacing:-.04em;color:var(--color-forest-ink);line-height:1}.logo-text .logo-a{color:var(--color-lime-voltage);background:var(--color-forest-ink);padding:0 3px 1px;border-radius:4px;display:inline-block}@media (prefers-color-scheme: dark){.logo-text{color:var(--color-lime-voltage)}.logo-text .logo-a{color:var(--color-forest-ink);background:var(--color-lime-voltage)}}.page-title{font-size:var(--text-body-lg);font-weight:900;letter-spacing:var(--tracking-body-lg);color:var(--text-display);line-height:1.1}.header-icon-btn{width:40px;height:40px;border-radius:var(--radius-pill);background:var(--bg-card);border:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:background var(--t-fast)}.header-icon-btn:active{background:var(--bg-tinted)}.balance-hero{margin:0 var(--s24) var(--s24);background:var(--color-forest-ink);border-radius:var(--radius-large);padding:var(--s24);position:relative;overflow:hidden}.balance-period{font-size:var(--text-caption);font-weight:600;color:#ffffff80;letter-spacing:.05em;text-transform:uppercase;margin-bottom:var(--s8)}.balance-amount{font-size:48px;font-weight:900;letter-spacing:-2px;color:var(--color-paper);line-height:1;margin-bottom:var(--s20)}.balance-amount .currency-symbol{font-size:28px;font-weight:700;vertical-align:top;margin-top:6px;display:inline-block;color:var(--color-lime-voltage)}.balance-row{display:flex;gap:var(--s12)}.balance-chip{flex:1;background:#ffffff14;border-radius:var(--radius-pill);padding:var(--s8) var(--s16);display:flex;align-items:center;gap:var(--s8)}.balance-chip-label{font-size:var(--text-micro);color:#ffffff80;font-weight:500}.balance-chip-value{font-size:15px;font-weight:700;color:var(--color-paper)}.balance-chip-value.income{color:var(--color-lime-voltage)}.balance-chip-value.expense{color:#ff8585}.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s12);padding:0 var(--s24) var(--s24)}.stat-card{background:var(--bg-card);border-radius:var(--radius-card);padding:var(--s16);box-shadow:var(--shadow-subtle)}.stat-label{font-size:var(--text-micro);font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:var(--s4)}.stat-value{font-size:22px;font-weight:900;letter-spacing:-.5px;color:var(--text-display);line-height:1.1}.stat-sub{font-size:var(--text-micro);color:var(--text-muted);margin-top:2px}.budget-bar-wrap{background:var(--border-subtle);border-radius:var(--radius-pill);height:6px;overflow:hidden;margin:var(--s8) 0}.budget-bar-fill{height:100%;border-radius:var(--radius-pill);background:var(--color-forest-ink);transition:width .5s ease}.budget-bar-fill.over{background:var(--color-alarm-red)}.budget-bar-fill.warn{background:#e07b00}.section-header{display:flex;align-items:baseline;justify-content:space-between;padding:0 var(--s24) var(--s12)}.section-title{font-size:var(--text-body-sm);font-weight:700;color:var(--text-display);letter-spacing:-.03em}.section-action{font-size:var(--text-caption);font-weight:600;color:var(--color-forest-ink);cursor:pointer;background:none;border:none}@media (prefers-color-scheme: dark){.section-action{color:var(--color-lime-voltage)}}.txn-list{padding:0 var(--s24);display:flex;flex-direction:column;gap:var(--s8)}.txn-item{display:flex;align-items:center;gap:var(--s12);padding:var(--s12) var(--s16);background:var(--bg-card);border-radius:var(--radius-card);box-shadow:var(--shadow-subtle);cursor:pointer;transition:transform var(--t-fast);-webkit-tap-highlight-color:transparent}.txn-item:active{transform:scale(.985)}.txn-icon{width:44px;height:44px;border-radius:var(--radius-pill);background:var(--bg-tinted);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.txn-info{flex:1;min-width:0}.txn-name{font-size:var(--text-body-sm);font-weight:600;color:var(--text-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.03em}.txn-cat{font-size:var(--text-micro);color:var(--text-muted);margin-top:2px;font-weight:500}.txn-right{text-align:right;flex-shrink:0}.txn-amount{font-size:var(--text-body-sm);font-weight:700;letter-spacing:-.03em}.txn-amount.income{color:var(--color-spruce)}.txn-amount.expense{color:var(--color-alarm-red)}@media (prefers-color-scheme: dark){.txn-amount.income{color:var(--color-lime-voltage)}}.txn-date{font-size:var(--text-micro);color:var(--text-muted);margin-top:2px}.forecast-banner{margin:0 var(--s24) var(--s24);padding:var(--s16) var(--s20);background:var(--bg-tinted);border-radius:var(--radius-card);display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-subtle)}.forecast-label{font-size:var(--text-caption);color:var(--text-secondary);font-weight:500}.forecast-amount{font-size:22px;font-weight:900;color:var(--color-forest-ink);letter-spacing:-.5px}@media (prefers-color-scheme: dark){.forecast-amount{color:var(--color-lime-voltage)}}.installment-list{padding:0 var(--s24);display:flex;flex-direction:column;gap:var(--s12)}.installment-card{background:var(--bg-card);border-radius:var(--radius-card);padding:var(--s16);box-shadow:var(--shadow-subtle);position:relative;overflow:hidden}.installment-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--color-forest-ink)}@media (prefers-color-scheme: dark){.installment-card:before{background:var(--color-lime-voltage)}}.installment-name{font-size:var(--text-body-sm);font-weight:700;color:var(--text-display);letter-spacing:-.03em;margin-bottom:4px}.installment-meta{font-size:var(--text-micro);color:var(--text-muted);font-weight:500}.installment-row{display:flex;align-items:center;justify-content:space-between;margin-top:var(--s12)}.installment-monthly{font-size:20px;font-weight:900;color:var(--text-display);letter-spacing:-.5px}.installment-badge{background:var(--color-forest-ink);color:var(--color-lime-voltage);font-size:var(--text-micro);font-weight:700;padding:4px 12px;border-radius:var(--radius-pill);letter-spacing:.02em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s8);border:none;font-family:var(--font-inter);font-weight:600;cursor:pointer;transition:all var(--t-fast);white-space:nowrap;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.96)}.btn-primary{background:var(--color-lime-voltage);color:var(--color-forest-ink);border-radius:var(--radius-pill);padding:13px 24px;font-size:var(--text-body-sm);font-weight:700}.btn-dark{background:var(--color-forest-ink);color:var(--color-lime-voltage);border-radius:var(--radius-pill);padding:13px 24px;font-size:var(--text-body-sm);font-weight:700}.btn-outline{background:transparent;color:var(--color-forest-ink);border:1.5px solid var(--color-forest-ink);border-radius:var(--radius-pill);padding:11px 22px;font-size:var(--text-body-sm);font-weight:600}@media (prefers-color-scheme: dark){.btn-outline{color:var(--color-lime-voltage);border-color:var(--color-lime-voltage)}}.btn-full{width:100%;justify-content:center}.btn-lg{padding:16px 32px;font-size:var(--text-body)}.btn-sm{padding:8px 16px;font-size:var(--text-caption)}.type-pills{display:flex;background:var(--bg-card);border-radius:var(--radius-pill);padding:4px;gap:4px;box-shadow:var(--shadow-subtle)}.type-pill{flex:1;padding:9px 16px;border:none;border-radius:var(--radius-pill);font-family:var(--font-inter);font-size:var(--text-caption);font-weight:700;cursor:pointer;color:var(--text-muted);background:transparent;transition:all var(--t-fast);letter-spacing:-.01em}.type-pill.expense.active{background:var(--color-alarm-red);color:#fff}.type-pill.income.active{background:var(--color-spruce);color:#fff}.form-field{display:flex;flex-direction:column;gap:var(--s8)}.form-label{font-size:var(--text-caption);font-weight:700;color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase}.form-input{background:var(--bg-input);border:1px solid var(--color-pebble);border-radius:var(--radius-input);padding:12px 16px;font-size:var(--text-body-sm);color:var(--text-display);outline:none;width:100%;transition:border-color var(--t-fast);font-family:var(--font-inter);font-weight:500;-webkit-appearance:none}.form-input:focus{border-color:var(--color-forest-ink);box-shadow:var(--shadow-subtle-2)}.amount-input{font-size:40px;font-weight:900;letter-spacing:-2px;border:none;border-bottom:2px solid var(--color-pebble);border-radius:0;padding:8px 0;text-align:center;background:transparent;color:var(--text-display)}.amount-input:focus{border-bottom-color:var(--color-forest-ink);box-shadow:none}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23868685' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;cursor:pointer}.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s8)}.cat-chip{display:flex;flex-direction:column;align-items:center;gap:5px;padding:var(--s12) var(--s8);border-radius:var(--radius-card);border:1px solid var(--border-subtle);background:var(--bg-card);cursor:pointer;transition:all var(--t-fast);-webkit-tap-highlight-color:transparent}.cat-chip:active{transform:scale(.93)}.cat-chip .emoji{font-size:22px;line-height:1}.cat-chip .label{font-size:10px;font-weight:600;color:var(--text-muted);text-align:center;line-height:1.2}.cat-chip.selected{background:var(--color-forest-ink);border-color:var(--color-forest-ink)}.cat-chip.selected .label{color:var(--color-lime-voltage)}.method-tabs{display:flex;gap:var(--s8);padding:0 var(--s24) var(--s20)}.method-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:var(--s12) var(--s8);border:1px solid var(--border-subtle);border-radius:var(--radius-card);background:var(--bg-card);font-family:var(--font-inter);font-size:11px;font-weight:700;color:var(--text-muted);cursor:pointer;transition:all var(--t-fast);letter-spacing:.02em;text-transform:uppercase}.method-tab svg{width:20px;height:20px;stroke-width:1.75}.method-tab.active{background:var(--color-forest-ink);border-color:var(--color-forest-ink);color:var(--color-lime-voltage)}.voice-center{display:flex;flex-direction:column;align-items:center;gap:var(--s24);padding:var(--s40) var(--s24)}.voice-btn{width:96px;height:96px;border-radius:var(--radius-pill);background:var(--color-forest-ink);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--t-fast);box-shadow:var(--shadow-xl)}.voice-btn svg{color:var(--color-lime-voltage);width:40px;height:40px}.voice-btn:active{transform:scale(.94)}.voice-btn.recording{background:var(--color-alarm-red);animation:pulse-mic 1s ease-in-out infinite}.voice-btn.recording svg{color:#fff}@keyframes pulse-mic{0%,to{box-shadow:0 0 #cb272f66}50%{box-shadow:0 0 0 16px #cb272f00}}.voice-transcript{width:100%;background:var(--bg-card);border-radius:var(--radius-card);padding:var(--s16);font-size:var(--text-body-sm);color:var(--text-primary);min-height:64px;font-style:italic;border:1px solid var(--border-subtle);text-align:center;line-height:1.5}.camera-area{margin:0 var(--s24) var(--s20);border-radius:var(--radius-card);overflow:hidden;background:var(--bg-card);border:1px solid var(--border-subtle);aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--s12);color:var(--text-muted);cursor:pointer;position:relative}.camera-area video,.camera-area img{width:100%;height:100%;object-fit:cover;position:absolute;top:0;right:0;bottom:0;left:0}.camera-area .placeholder-icon{font-size:48px}.camera-area .placeholder-text{font-size:var(--text-caption);font-weight:600}.ocr-fields{padding:0 var(--s24);display:flex;flex-direction:column;gap:var(--s16)}.add-page{padding:0}.add-header{padding:calc(var(--safe-top) + 20px) var(--s24) var(--s20);background:var(--bg-page)}.add-header-title{font-size:32px;font-weight:900;letter-spacing:-1.5px;color:var(--text-display);line-height:1;margin-bottom:var(--s16)}.form-section{padding:0 var(--s24);display:flex;flex-direction:column;gap:var(--s20)}.form-divider{height:1px;background:var(--border-subtle);margin:var(--s8) 0}.filter-bar{display:flex;gap:var(--s8);padding:0 var(--s24) var(--s16);overflow-x:auto;scrollbar-width:none}.filter-bar::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;padding:7px 16px;border-radius:var(--radius-pill);border:1px solid var(--border-subtle);background:var(--bg-card);font-size:var(--text-micro);font-weight:700;color:var(--text-muted);cursor:pointer;letter-spacing:.02em;transition:all var(--t-fast);white-space:nowrap}.filter-chip.active{background:var(--color-forest-ink);border-color:var(--color-forest-ink);color:var(--color-lime-voltage)}.chart-card{margin:0 var(--s24) var(--s20);background:var(--bg-card);border-radius:var(--radius-card);padding:var(--s20);box-shadow:var(--shadow-subtle)}.chart-title{font-size:var(--text-body-sm);font-weight:700;color:var(--text-display);letter-spacing:-.03em;margin-bottom:var(--s16)}.settings-group{margin:0 var(--s24) var(--s24);background:var(--bg-card);border-radius:var(--radius-card);box-shadow:var(--shadow-subtle);overflow:hidden}.settings-item{display:flex;align-items:center;justify-content:space-between;padding:var(--s16) var(--s20);border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background var(--t-fast)}.settings-item:last-child{border-bottom:none}.settings-item:active{background:var(--bg-tinted)}.settings-item-left{display:flex;align-items:center;gap:var(--s12)}.settings-icon{width:36px;height:36px;border-radius:var(--radius-pill);background:var(--bg-tinted);display:flex;align-items:center;justify-content:center;font-size:18px}.settings-label{font-size:var(--text-body-sm);font-weight:600;color:var(--text-display);letter-spacing:-.02em}.settings-sub{font-size:var(--text-micro);color:var(--text-muted);margin-top:2px}.toast-container{position:fixed;top:calc(var(--safe-top) + 16px);left:50%;transform:translate(-50%);z-index:999;pointer-events:none}.toast{background:var(--color-forest-ink);color:var(--color-lime-voltage);border-radius:var(--radius-pill);padding:10px 20px;font-size:var(--text-caption);font-weight:700;box-shadow:var(--shadow-xl);white-space:nowrap;animation:toast-in var(--t-base) ease;letter-spacing:.01em}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e0f0c80;z-index:200;display:flex;flex-direction:column;justify-content:flex-end;animation:overlay-in var(--t-base)}.sheet{background:var(--bg-page);border-radius:var(--radius-large) var(--radius-large) 0 0;padding:var(--s20) var(--s24) calc(var(--s24) + var(--safe-bottom));max-height:92dvh;overflow-y:auto;animation:sheet-up var(--t-base) ease}.sheet-handle{width:40px;height:4px;background:var(--border-subtle);border-radius:var(--radius-pill);margin:0 auto var(--s20)}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.empty-state{display:flex;flex-direction:column;align-items:center;padding:var(--s64) var(--s24);text-align:center;gap:var(--s12)}.empty-state .big-emoji{font-size:56px;line-height:1}.empty-state h3{font-size:var(--text-body-lg);font-weight:900;color:var(--text-display);letter-spacing:-.5px}.empty-state p{font-size:var(--text-caption);color:var(--text-muted);line-height:1.6;max-width:240px}.recurring-item{display:flex;align-items:center;justify-content:space-between;padding:var(--s12) var(--s24);border-bottom:1px solid var(--border-subtle)}.recurring-item:last-child{border-bottom:none}.spinner{width:28px;height:28px;border:3px solid var(--border-subtle);border-top-color:var(--color-forest-ink);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.badge{display:inline-flex;align-items:center;border-radius:var(--radius-pill);padding:4px 12px;font-size:var(--text-micro);font-weight:700;letter-spacing:.02em}.badge-income{background:var(--color-linen-mist);color:var(--color-spruce)}.badge-expense{background:#cb272f1a;color:var(--color-alarm-red)}.badge-neutral{background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border-subtle)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--s8)}.gap-3{gap:var(--s12)}.gap-4{gap:var(--s16)}.w-full{width:100%}.text-center{text-align:center}.mt-4{margin-top:var(--s16)}.mb-4{margin-bottom:var(--s16)}.mb-6{margin-bottom:var(--s24)}.px-6{padding-left:var(--s24);padding-right:var(--s24)}.py-2{padding-top:var(--s8);padding-bottom:var(--s8)}
