*{box-sizing:border-box;margin:0;padding:0}html{min-height:100%;overflow-y:scroll}:root{--bg: #f4f8f5;--text: #2a2d23;--muted: #5d866c;--positive: #3cb371;--negative: #6b7280;--error: #8b3a3a;--error-hover: #a84a4a;--error-bg: rgba(139, 58, 58, .1);--accent: #1b3d2a;--btn-hover: #2d7a50;--white: #fff;--divider: rgba(93, 134, 108, .2);--highlight: rgba(255, 255, 255, .5);--column-bg: rgba(255, 255, 255, .45);--input-bg: rgba(255, 255, 255, .7);--nav-muted: rgba(255, 255, 255, .6);--footer-text: rgba(255, 255, 255, .85);--positive-bg: rgba(60, 179, 113, .1);--positive-flash: rgba(60, 179, 113, .25);--overlay: rgba(42, 45, 35, .3);--shadow: rgba(42, 45, 35, .15)}.header{background:radial-gradient(ellipse at 15% 60%,rgba(45,92,63,.45) 0%,transparent 55%),radial-gradient(ellipse at 82% 20%,rgba(30,74,48,.4) 0%,transparent 50%),radial-gradient(ellipse at 50% 110%,rgba(38,80,52,.35) 0%,transparent 55%),var(--accent);position:fixed;top:0;left:0;right:0;width:100%;z-index:10;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.15);box-shadow:0 2px 8px #0000002e}.header:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 75% 120% at 50% -15%,rgba(255,255,255,.09) 0%,transparent 70%);pointer-events:none}.header:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/fronds-pattern-Djl1YfYG.jpg),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");background-size:340px auto,200px 200px;background-repeat:repeat,repeat;mix-blend-mode:overlay;opacity:.1;pointer-events:none}.header-inner{max-width:640px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;height:56px}.header-logo{display:flex;align-items:center;gap:4px;color:var(--white);text-decoration:none}.header-title{font-family:Lora,Georgia,serif;font-size:20px;font-weight:700;color:var(--white);letter-spacing:.04em}.header-profile-btn{background:none;border:none;cursor:pointer;color:var(--nav-muted);display:flex;align-items:center;padding:6px;border-radius:6px;-webkit-tap-highlight-color:transparent;transition:color .15s ease}.header-profile-btn:hover,.header-profile-btn.active{color:var(--white)}@media (max-width: 480px){.header-inner{padding:0 16px}}body{font-family:Lora,Georgia,serif;font-size:15px;color:var(--text);background:var(--bg);line-height:1.5}.column{max-width:640px;margin:0 auto;background:var(--column-bg);overflow-x:hidden;min-height:100vh;padding-top:56px;padding-bottom:calc(56px + env(safe-area-inset-bottom,0px))}.app{padding:24px 24px 0;transition:opacity 80ms ease}.app--fading{opacity:0}.view-pane>div>*:last-child{margin-bottom:0}@media (max-width: 480px){.app{padding:24px 16px 0}.row{padding:3px 28px;margin-left:-16px;margin-right:-16px}}.section{margin-bottom:16px}.section-label{display:flex;align-items:center;gap:6px;font-size:15px;font-family:Lora,Georgia,serif;font-weight:700;color:var(--text);margin-bottom:4px;padding-bottom:4px}@keyframes row-flash{0%{background:var(--positive-flash)}to{background:transparent}}@keyframes row-flash-negative{0%{background:var(--error-bg)}to{background:transparent}}.row-flash{animation:row-flash .7s ease-out}.row-flash-negative{animation:row-flash-negative .7s ease-out}.row{display:flex;align-items:center;padding:3px 36px;margin-left:-24px;margin-right:-24px;border-bottom:1px solid var(--divider);box-shadow:0 1px 0 var(--highlight)}.account-name{flex:1;display:flex;align-items:center;gap:7px;color:var(--text)}.account-icon{color:var(--muted);flex-shrink:0}.account-balance{text-align:right;font-family:JetBrains Mono,monospace;font-size:13px;letter-spacing:-.02em;cursor:default;padding:4px 0;min-height:32px;display:flex;align-items:center;justify-content:flex-end}.account-balance.editable{cursor:pointer}.account-balance.editable:hover{text-decoration:underline}.row-actions{display:flex;align-items:center;gap:10px;margin-left:12px}.delete-btn{background:none;border:none;color:var(--muted);padding:0;cursor:pointer;display:flex;align-items:center}.delete-confirm{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text);font-family:Lora,Georgia,serif}.delete-yes,.delete-no{background:none;border:none;font-family:Lora,Georgia,serif;font-size:13px;cursor:pointer;text-decoration:underline;padding:0}.delete-yes{color:var(--positive)}.delete-no{color:var(--negative)}.balance-input{width:110px;text-align:right;font-family:JetBrains Mono,monospace;font-size:13px;border:none;border-bottom:1px solid var(--text);outline:none;background:transparent;color:var(--text);padding:4px 12px 4px 0;max-width:110px;min-height:32px}.balance-input.negative{border-bottom-color:var(--error);color:var(--error)}.section-total{border-top:none;box-shadow:none;border-bottom:none;font-weight:700}.section-total .account-balance{font-weight:700}.section-total-positive{background:var(--positive-bg)}.section-total-negative{background:var(--error-bg)}.net-worth{border-top:none;border-bottom:none;box-shadow:none;font-weight:700;font-size:18px;background:var(--accent);color:var(--white);margin:0 -24px;padding:14px 24px}.net-worth .account-balance,.net-worth .account-name{font-size:16px;color:var(--white)}.negative{color:var(--error)}.muted{color:var(--muted);font-style:italic}.error{color:var(--error);font-size:13px;margin-top:8px;min-height:1.4em;text-align:right}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:100;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--bg);width:100%;max-width:640px;padding:6px 24px;border-radius:20px 20px 0 0;box-shadow:0 -4px 32px var(--shadow);max-height:92dvh;overflow-y:auto;overscroll-behavior:contain}.sheet-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 16px}@media (min-width: 600px){.sheet-backdrop{align-items:center;padding:24px}.sheet{max-width:400px;padding:24px;border-radius:16px;box-shadow:0 8px 32px var(--shadow)}.sheet-handle{display:none}}.form{margin-top:0;padding-top:0;border-top:none}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.field label{font-size:15px;color:var(--text);font-family:Lora,Georgia,serif}.form-actions{display:flex;gap:8px;margin-top:16px;justify-content:space-between;align-items:center}.form-actions-right{display:flex;gap:8px}.btn-cancel{background:var(--error)!important}.btn-cancel:hover{background:var(--error-hover)!important}.btn-delete{background:none!important;border:none;color:var(--error)!important;font-size:13px;cursor:pointer;padding:0;text-decoration:underline}.btn-delete:hover{background:none!important;color:var(--error-hover)!important}.delete-confirm-row{display:flex;align-items:center;justify-content:center;gap:12px;width:100%}input,select{font-family:Lora,Georgia,serif;font-size:15px;border:1px solid var(--divider);border-radius:6px;padding:6px 8px;width:100%;max-width:320px;background:var(--input-bg);color:var(--text);outline:none;-webkit-appearance:none}input:focus,select:focus{border-color:var(--positive)}input[type=checkbox]{-webkit-appearance:checkbox;-moz-appearance:checkbox;appearance:checkbox;width:auto;max-width:none;padding:0;border:none;border-radius:0;background:none;accent-color:var(--accent)}select{padding-right:32px;background-color:var(--accent);color:var(--white);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}select:focus{border-color:var(--positive);outline:none}select option{background:var(--accent);color:var(--white)}@media (max-width: 480px){input,select{max-width:100%}}button{font-family:Lora,Georgia,serif;font-size:14px;cursor:pointer}button[type=submit],button[type=button]{border:none;background:var(--accent);padding:6px 18px;color:var(--white);border-radius:6px}button[type=submit]:hover,button[type=button]:hover{background:var(--btn-hover)}button.link{background:none;border:none;color:var(--text);text-decoration:underline;padding:0;font-size:13px}button.link:hover{color:var(--text)}.footer{width:100%;background:var(--accent);color:var(--footer-text);padding:32px 24px;font-size:13px;text-align:center}.add-row{display:flex;align-items:center;justify-content:space-between;padding:0 0 16px}.view-title{font-family:Lora,Georgia,serif;font-size:20px;font-weight:700;color:var(--text)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;width:100%;z-index:20;background:radial-gradient(ellipse at 18% 55%,rgba(45,92,63,.4) 0%,transparent 52%),radial-gradient(ellipse at 78% 35%,rgba(30,74,48,.35) 0%,transparent 50%),radial-gradient(ellipse at 50% 120%,rgba(38,80,52,.3) 0%,transparent 55%),var(--accent);border-top:1px solid rgba(255,255,255,.15);box-shadow:0 -2px 8px #0000002e;padding-bottom:env(safe-area-inset-bottom,0px);overflow:hidden;transition:transform .3s ease}.bottom-nav:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 80% at 50% -8%,rgba(255,255,255,.06) 0%,transparent 65%);pointer-events:none}.bottom-nav:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/fronds-pattern-Djl1YfYG.jpg),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");background-size:340px auto,200px 200px;background-repeat:repeat,repeat;mix-blend-mode:overlay;opacity:.08;pointer-events:none}.bottom-nav-inner{max-width:640px;margin:0 auto;display:flex}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px;background:none;border:none;cursor:pointer;color:var(--nav-muted);min-height:56px;position:relative;transition:color .15s ease;-webkit-tap-highlight-color:transparent}.nav-pill{position:absolute;top:8px;left:50%;translate:-50% 0;width:38px;height:26px;border-radius:13px;background:#00000038;box-shadow:inset 0 2px 4px #00000080,inset 0 1px #0009,0 1px #ffffff12;pointer-events:none}.bottom-tab:hover,.bottom-tab.active{color:var(--white)}.bottom-tab-icon{width:38px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:13px;transition:background .15s ease}.bottom-tab-label{font-family:Lora,Georgia,serif;font-size:10px;letter-spacing:.02em;line-height:1}.view-controls{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.month-nav{display:flex;align-items:center;gap:2px}.month-nav-btn{background:none;border:none;color:var(--white);cursor:pointer;padding:2px 4px;display:flex;align-items:center;border-radius:4px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (hover: hover){.month-nav-btn:hover{background:var(--btn-hover)}}.month-nav-label{font-family:Lora,Georgia,serif;font-size:15px;font-weight:700;color:var(--text);min-width:100px;text-align:center}.month-total{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--muted)}.budget-summary-card{background:var(--accent);border-radius:10px;padding:16px 20px;margin-bottom:20px;display:flex;flex-direction:column;gap:4px}.budget-summary-amounts{display:flex;justify-content:space-between;align-items:baseline}.budget-summary-value{font-family:JetBrains Mono,monospace;font-size:18px;font-weight:700;letter-spacing:-.03em;color:var(--white)}.budget-summary-over{color:#f87171}.budget-summary-labels{display:flex;justify-content:space-between;font-size:11px;color:#ffffff8c;margin-bottom:4px}.budget-progress--lg{height:10px;min-height:10px}.income-summary{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:var(--accent);color:var(--white);border-radius:8px;margin-bottom:20px;font-size:13px}@media (max-width: 480px){.income-summary{padding:14px 18px}.income-summary:has(.income-summary-item:nth-child(4)){flex-wrap:wrap;gap:10px 0;align-items:flex-start}.income-summary:has(.income-summary-item:nth-child(4)) .income-summary-item{flex:0 0 50%}.income-summary:has(.income-summary-item:nth-child(4)) .income-summary-item:nth-child(2n){text-align:right}}.income-summary--empty{gap:10px;background:var(--column-bg);border:1px solid var(--divider);color:var(--muted)}.income-summary--uncategorized{background:var(--error);position:relative}.income-summary-item{display:flex;flex-direction:column;gap:1px}.income-summary-label{font-size:11px;opacity:.7}.income-summary-value{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700}.income-summary-negative{color:#f87171}.expense-sub{font-size:11px;color:var(--muted);margin-left:6px;font-style:italic}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:14px;font-family:Lora,Georgia,serif;color:var(--text);cursor:pointer;margin-top:4px}.checkbox-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.sheet-title{font-family:Lora,Georgia,serif;font-weight:700;font-size:18px;margin-bottom:4px}.sheet-subtitle{font-size:13px;color:var(--muted);font-style:italic;margin-bottom:18px}.budget-row{display:flex;flex-direction:column;gap:5px;padding:10px 36px;margin-left:-24px;margin-right:-24px;border-bottom:1px solid var(--divider);box-shadow:0 1px 0 var(--highlight)}@media (max-width: 480px){.budget-row{padding:10px 28px;margin-left:-16px;margin-right:-16px}}.budget-row:first-child{border-top:1px solid var(--divider)}.budget-row--completed{background:#1b3d2a14}.budget-row-paid-amount{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:-.02em;flex-shrink:0}.budget-row--exceeded{background:#8b3a3a14}.budget-row-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.budget-row-name{display:flex;align-items:center;gap:6px;color:var(--text);font-size:14px;min-width:0;flex:1}.budget-row-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.budget-row-amounts{display:flex;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted);letter-spacing:-.02em}.budget-progress{height:6px;min-height:6px;width:100%;border-radius:999px;flex-shrink:0}.section-label--warning{color:var(--error)}.projected-badge{font-size:11px;font-weight:600;color:var(--muted);background:var(--divider);padding:2px 8px;border-radius:10px}.tx-bucket{font-size:11px;color:var(--muted);font-style:italic;white-space:nowrap;flex-shrink:0}.tx-date{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--muted);color:var(--white);font-size:11px;font-family:JetBrains Mono,monospace;line-height:1;flex-shrink:0;margin-right:10px}.tx-row--uncategorized{background:var(--error-bg)}.tx-row--uncategorized .tx-date{background:var(--error)}.tx-row--uncategorized .account-name,.tx-row--uncategorized .tx-bucket,.tx-row--uncategorized .account-balance,.tx-row--uncategorized .delete-btn{color:var(--error)}.goal-card{padding:14px 36px;margin-left:-24px;margin-right:-24px;border-bottom:1px solid var(--divider);box-shadow:0 1px 0 var(--highlight);margin-bottom:2px}@media (max-width: 480px){.goal-card{padding:14px 28px;margin-left:-16px;margin-right:-16px}}.goal-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.goal-name{display:flex;align-items:center;gap:6px;font-weight:700;font-size:15px;color:var(--text)}.goal-amounts{display:flex;align-items:baseline;gap:4px;margin-bottom:4px;font-family:JetBrains Mono,monospace;font-size:14px}.goal-current{color:var(--text);font-weight:700}.goal-current.positive{color:var(--positive)}.goal-separator,.goal-target{color:var(--muted)}.goal-type-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;font-family:JetBrains Mono,monospace;letter-spacing:-.02em;white-space:nowrap;background:var(--accent);color:#fff}.goal-type-debt{background:var(--error)}.goal-type-project{background:var(--muted)}.goal-progress-bar{height:6px;background:var(--divider);border-radius:999px;overflow:hidden;margin-bottom:8px}.goal-estimate{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:-4px}.goal-eta{color:var(--muted);margin-left:auto}.goal-notes{font-size:12px;color:var(--muted);font-style:italic;margin-top:6px}
