@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-var.woff2)format(woff2)}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/jetbrains-mono-var.woff2)format(woff2)}:root{--bg-primary:#0d0f14;--bg-secondary:#141820;--bg-tertiary:#1c2130;--bg-hover:#222840;--border-color:var(--bg-hover);--text-primary:#edf0f7;--text-secondary:#8b95b0;--text-tertiary:#4e5b78;--positive:#12b981;--negative:#f04b4b;--caution:#f0a030;--accent:#5b6af0;--accent-rgb:91,106,240;--cat-work:#3b7ef0;--cat-school:#a855f7;--cat-growth:#12b981;--cat-fun:#f97316;--cat-rel:#f43f8e;--cat-health:#06b6d4;--cat-uncategorized:#64748b;--font-sans:Inter,system-ui,-apple-system,sans-serif;--font-mono:"JetBrains Mono","Fira Code","Cascadia Code",monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--transition:.15s ease;--sidebar-w:220px;--tab-bar-h:64px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);overflow-x:hidden;-webkit-font-smoothing:antialiased;min-height:100dvh}a{color:var(--accent);text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,textarea,select{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--bg-hover);border-radius:var(--radius-sm);padding:var(--space-2)var(--space-3);transition:border-color var(--transition);width:100%;font-family:inherit;font-size:1rem}input:focus,textarea:focus,select:focus{border-color:var(--accent)}input[type=checkbox],input[type=radio]{flex:none;width:16px;height:16px;padding:0}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-md{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:2rem}.font-mono{font-family:var(--font-mono)}.font-bold{font-weight:700}.font-medium{font-weight:500}.color-secondary{color:var(--text-secondary)}.color-tertiary{color:var(--text-tertiary)}.color-positive{color:var(--positive)}.color-negative{color:var(--negative)}.color-caution{color:var(--caution)}.color-accent{color:var(--accent)}#app-shell{display:flex;overflow:hidden;height:100dvh}.sidebar{width:var(--sidebar-w);background:var(--bg-secondary);border-right:1px solid var(--bg-tertiary);display:flex;padding:var(--space-6)0;flex-direction:column;flex-shrink:0}.sidebar-quick-add{margin:0 var(--space-4)var(--space-4);justify-content:center;padding:10px;font-size:.875rem}.sidebar-logo{padding:0 var(--space-5)var(--space-6);letter-spacing:-.02em;color:var(--text-primary);font-size:1.1rem;font-weight:700}.sidebar-logo span{color:var(--accent)}.sidebar-nav{display:flex;gap:var(--space-1);padding:0 var(--space-3);flex-direction:column;flex:1}.nav-item{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-3)var(--space-3);border-radius:var(--radius-md);color:var(--text-secondary);transition:background var(--transition),color var(--transition);font-size:.875rem;font-weight:500}.nav-item:hover,.nav-item.active{background:var(--bg-tertiary);color:var(--text-primary)}.nav-item .nav-icon{text-align:center;width:20px;font-size:1.1rem}.main-content{display:flex;overflow:hidden;flex-direction:column;flex:1}.tab-panels{overflow:hidden;position:relative;flex:1}.tab-panel{position:absolute;overflow-y:auto;padding:var(--space-6);display:none;inset:0}.tab-panel.active{display:block}.tab-bar{display:none;height:var(--tab-bar-h);background:var(--bg-secondary);border-top:1px solid var(--bg-tertiary);flex-shrink:0}.tab-bar-inner{display:grid;grid-template-columns:repeat(3,1fr);height:100%}.mobile-topbar{display:none;padding:calc(env(safe-area-inset-top) + 0px)var(--space-5)0;background:var(--bg-secondary);border-bottom:1px solid var(--bg-tertiary);flex-shrink:0;justify-content:space-between;align-items: center;height:56px}.mobile-topbar-logo{letter-spacing:-.02em;color:var(--text-primary);font-size:1rem;font-weight:700}.mobile-topbar-logo span{color:var(--accent)}.mobile-topbar-settings{padding:var(--space-2);color:var(--text-secondary);font-size:1.2rem}.tab-btn{display:flex;justify-content:center;align-items: center;gap:var(--space-1);color:var(--text-tertiary);transition:color var(--transition);flex-direction:column;font-size:.7rem;font-weight:500}.tab-btn.active{color:var(--accent)}.tab-btn .tab-icon{font-size:1.25rem}@media (max-width:1023px){.sidebar{display:none}.tab-bar{display:block}.mobile-topbar{display:flex}.tab-panel{padding:var(--space-4)}}.card{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4)}.card-bordered-positive{border-left:3px solid var(--positive)}.card-bordered-negative{border-left:3px solid var(--negative)}.card-bordered-accent{border-left:3px solid var(--accent)}.card-bordered-caution{border-left:3px solid var(--caution)}.card-header{display:flex;margin-bottom:var(--space-4);justify-content:space-between;align-items: center}.card-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);font-size:.75rem;font-weight:600}.hero-number{font-family:var(--font-mono);font-size:2.5rem;font-weight:700;line-height:1}.hero-label{color:var(--text-secondary);margin-top:var(--space-1);font-size:.8rem}.progress-bar{background:var(--bg-tertiary);overflow:hidden;margin-top:var(--space-2);border-radius:99px;height:6px}.progress-fill{background:var(--accent);border-radius:99px;height:100%;transition:width .6s}.pnl-chart{display:flex;gap:var(--space-2)}.pnl-col{display:flex;flex-direction:column;flex:1;align-items: center;min-width:0}.pnl-value{font-family:var(--font-mono);white-space:nowrap;margin-bottom:2px;font-size:.6rem;font-weight:700}.pnl-half{display:flex;justify-content:center;width:100%;height:50px}.pnl-half-up{align-items: flex-end}.pnl-half-down{align-items: flex-start}.pnl-bar{width:100%;max-width:32px}.pnl-zero{background:var(--bg-hover);width:100%;height:1px}.pnl-month{color:var(--text-tertiary);margin-top:4px;font-size:.65rem}.data-table{border-collapse:collapse;width:100%;min-width:520px}.data-table th,.data-table td{padding:8px 12px}.data-table th:first-child,.data-table td:first-child{padding-left:0}.data-table th:last-child,.data-table td:last-child{padding-right:0}.badge{display:inline-flex;text-transform:uppercase;letter-spacing:.04em;border-radius:99px;align-items: center;padding:2px 8px;font-size:.7rem;font-weight:600}.badge-high{color:var(--negative);background:#f04b4b26}.badge-medium{color:var(--caution);background:#f0a03026}.badge-low{background:rgba(var(--accent-rgb),.12);color:var(--accent)}.badge-done{color:var(--positive);background:#12b9811f}.badge-open{color:var(--text-secondary);background:#8b95b01a}.task-item{display:flex;align-items: flex-start;gap:var(--space-3);padding:var(--space-3)0;border-bottom:1px solid var(--bg-tertiary)}.task-item:last-child{border-bottom:none}.task-check{border:2px solid var(--bg-hover);cursor:pointer;transition:border-color var(--transition),background var(--transition);border-radius:50%;flex-shrink:0;width:20px;height:20px;margin-top:2px}.task-check:hover{border-color:var(--accent)}.task-check.checked{background:var(--positive);border-color:var(--positive)}.task-body{flex:1;min-width:0}.task-title{font-size:.9rem;font-weight:500;line-height:1.35}.task-meta{display:flex;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;align-items: center}.task-cat-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.task-due{color:var(--text-tertiary);font-size:.75rem}.task-due.overdue{color:var(--negative)}.task-due.hard{color:var(--caution);font-weight:600}.task-due.overdue.hard{color:var(--negative);background:#f04b4b1f;border-radius:4px;padding:1px 6px;font-weight:700}.schedule-item{display:flex;gap:var(--space-3);padding:var(--space-3)0;border-bottom:1px solid var(--bg-tertiary)}.schedule-item:last-child{border-bottom:none}.schedule-time{font-family:var(--font-mono);color:var(--text-tertiary);flex-shrink:0;width:80px;padding-top:2px;font-size:.75rem}.schedule-bar{border-radius:99px;flex-shrink:0;width:3px}.schedule-body{flex:1}.schedule-title{font-size:.9rem;font-weight:500}.schedule-sub{color:var(--text-secondary);margin-top:2px;font-size:.75rem}.btn{display:inline-flex;align-items: center;gap:var(--space-2);padding:var(--space-2)var(--space-4);border-radius:var(--radius-md);transition:background var(--transition),opacity var(--transition);font-size:.875rem;font-weight:600}.btn:disabled{opacity:.5;pointer-events:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#6b7cf0}.btn-ghost{color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-danger{color:var(--negative);background:#f04b4b26}.fab{position:fixed;bottom:calc(var(--tab-bar-h) + var(--space-4));right:var(--space-4);background:var(--accent);color:#fff;display:flex;box-shadow:0 4px 20px rgba(var(--accent-rgb),.4);z-index:100;transition:transform var(--transition),box-shadow var(--transition);border-radius:50%;justify-content:center;align-items: center;width:52px;height:52px;font-size:1.5rem}.fab:hover{box-shadow:0 6px 28px rgba(var(--accent-rgb),.5);transform:scale(1.06)}@media (min-width:1024px){.fab{display:none}}.settings-save-bar{position:fixed;left:0;right:0;bottom:var(--tab-bar-h);display:flex;justify-content:space-between;align-items: center;gap:var(--space-3);padding:var(--space-3)var(--space-4);background:var(--bg-secondary);border-top:1px solid var(--bg-tertiary);z-index:90;box-shadow:0 -4px 20px #00000040}@media (min-width:1024px){.settings-save-bar{bottom:0}}.day-drawer{position:fixed;left:0;right:0;bottom:var(--tab-bar-h);background:var(--bg-secondary);border-top:1px solid var(--bg-tertiary);border-radius:var(--radius-lg)var(--radius-lg)0 0;z-index:90;overflow:hidden;display:flex;transition:max-height var(--transition);flex-direction:column;box-shadow:0 -4px 20px #00000040}.day-drawer.hidden{display:none}.day-drawer.collapsed{max-height:52px}.day-drawer.split{max-height:46vh}.day-drawer.full{max-height:calc(100vh - var(--tab-bar-h) - 56px)}.day-drawer-handle{background:var(--bg-tertiary);cursor:pointer;border-radius:99px;flex-shrink:0;width:36px;height:4px;margin:10px auto 4px}.day-drawer-header{display:flex;padding:4px var(--space-4)var(--space-2);cursor:pointer;flex-shrink:0;justify-content:space-between;align-items: center}.day-drawer-body{overflow-y:auto;padding:0 var(--space-4)var(--space-4)}@media (min-width:1024px){.day-drawer{display:none!important}}.sheet-overlay{position:fixed;z-index:200;opacity:0;pointer-events:none;background:#00000080;transition:opacity .25s;inset:0}.sheet-overlay.open{opacity:1;pointer-events:all}.sheet-actions{position:sticky;bottom:calc(var(--space-5)*-1);margin:var(--space-4)calc(var(--space-5)*-1)calc(var(--space-5)*-1);padding:var(--space-3)var(--space-5)var(--space-5);background:var(--bg-secondary);border-top:1px solid var(--border-color);z-index:1}.sheet-close{position:sticky;float:right;margin:calc(var(--space-3)*-1)calc(var(--space-3)*-1)0 0;display:inline-flex;color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border-color);cursor:pointer;z-index:2;border-radius:50%;justify-content:center;align-items: center;width:44px;height:44px;font-size:1.5rem;line-height:1;top:0}.sheet-close:hover{color:var(--text-primary);background:var(--bg-hover)}.sheet-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sheet{position:fixed;background:var(--bg-secondary);border-radius:var(--radius-xl)var(--radius-xl)0 0;padding:var(--space-5);z-index:201;overflow-y:auto;max-height:92dvh;transition:transform .3s cubic-bezier(.32,.72,0,1);bottom:0;left:0;right:0;transform:translateY(100%)}.sheet.open{transform:translateY(0)}.sheet-handle{background:var(--bg-tertiary);margin:0 auto var(--space-5);border-radius:99px;width:40px;height:4px}.sheet-title{margin-bottom:var(--space-5);font-size:1.1rem;font-weight:700}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;color:var(--text-secondary);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem;font-weight:600}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}#auth-screen{display:flex;padding:var(--space-6);justify-content:center;align-items: center;min-height:100dvh}.auth-card{background:var(--bg-secondary);border-radius:var(--radius-xl);padding:var(--space-8);width:100%;max-width:400px}.auth-logo{margin-bottom:var(--space-2);font-size:1.5rem;font-weight:800}.auth-logo span{color:var(--accent)}.auth-sub{color:var(--text-secondary);margin-bottom:var(--space-8);font-size:.875rem}.auth-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-6);background:var(--bg-tertiary);border-radius:var(--radius-md);padding:4px}.auth-tab{padding:var(--space-2);border-radius:var(--radius-sm);color:var(--text-secondary);transition:background var(--transition),color var(--transition);text-align:center;flex:1;font-size:.875rem;font-weight:600}.auth-tab.active{background:var(--bg-secondary);color:var(--text-primary)}.auth-error{color:var(--negative);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-4);display:none;background:#f04b4b1f;font-size:.875rem}.auth-error.show{display:block}.cal-header{display:flex;margin-bottom:var(--space-4);justify-content:space-between;align-items: center}.cal-month{font-size:1rem;font-weight:700}.cal-nav{display:flex;gap:var(--space-2)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1)}.cal-day-label{text-align:center;color:var(--text-tertiary);text-transform:uppercase;padding-bottom:var(--space-2);font-size:.7rem;font-weight:600}.cal-day{aspect-ratio:1;display:flex;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);position:relative;justify-content:center;align-items: center;font-size:.8rem}.cal-day:hover{background:var(--bg-tertiary)}.cal-day.today{background:var(--accent);color:#fff;font-weight:700}.cal-day.other-month{color:var(--text-tertiary)}.cal-day.has-event:after{content:"";position:absolute;background:var(--accent);border-radius:50%;width:4px;height:4px;bottom:3px}.cal-day.today:after{background:#fff}.nw-chart-wrap{position:relative;margin-top:var(--space-3);height:120px}.hidden{display:none!important}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items: center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}.p-4{padding:var(--space-4)}.w-full{width:100%}.spinner{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-secondary)25%,var(--bg-tertiary)50%,var(--bg-secondary)75%);border-radius:var(--radius-sm);animation:shimmer 1.5s infinite;background-size:200% 100%}@keyframes shimmer{to{background-position:-200% 0}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:99px}#onboarding-screen{display:flex;padding:var(--space-6)var(--space-4)var(--space-10);overflow-y:auto;justify-content:center;align-items: flex-start;min-height:100dvh}.onboarding-wrap{padding-top:var(--space-4);width:100%;max-width:480px}.onboarding-progress{display:flex;justify-content:center;align-items: center;gap:var(--space-2);margin-bottom:var(--space-8)}.progress-dot{background:var(--bg-hover);border-radius:50%;width:8px;height:8px;transition:background .25s,transform .25s}.progress-dot.active{background:var(--accent);transform:scale(1.3)}.progress-dot.done{background:var(--positive)}.step-back{display:flex;align-items: center;gap:var(--space-2);color:var(--text-secondary);margin-bottom:var(--space-5);cursor:pointer;width:-moz-fit-content;width:fit-content;font-size:.875rem}.step-back:hover{color:var(--text-primary)}.step-title{margin-bottom:var(--space-2);letter-spacing:-.02em;font-size:1.5rem;font-weight:800;line-height:1.2}.step-subtitle{color:var(--text-secondary);margin-bottom:var(--space-6);font-size:.9rem;line-height:1.5}.income-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-6)}.income-type-card{background:var(--bg-secondary);border:2px solid var(--bg-tertiary);border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;text-align:left;transition:border-color .15s,background .15s}.income-type-card:hover{border-color:var(--bg-hover)}.income-type-card.selected{border-color:var(--accent);background:rgba(var(--accent-rgb),.08)}.income-type-card .card-label{margin-bottom:var(--space-1);font-size:.875rem;font-weight:700}.income-type-card .card-desc{color:var(--text-secondary);font-size:.75rem;line-height:1.4}.income-type-card .selected-dot{border:2px solid var(--bg-hover);margin-bottom:var(--space-2);border-radius:50%;width:14px;height:14px;transition:border-color .15s,background .15s}.income-type-card.selected .selected-dot{background:var(--accent);border-color:var(--accent)}.section-header{text-transform:uppercase;letter-spacing:.1em;padding:var(--space-3)0 var(--space-2);margin-bottom:var(--space-2);border-bottom:1px solid var(--bg-tertiary);font-size:.7rem;font-weight:700}.section-header.assets{color:var(--positive)}.section-header.liabilities{color:var(--negative)}.nw-preview{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-top:var(--space-5);text-align:center}.nw-preview-label{color:var(--text-secondary);margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;font-weight:600}.nw-preview-value{font-family:var(--font-mono);transition:color .2s;font-size:2rem;font-weight:700}.field-helper{color:var(--text-tertiary);margin-top:var(--space-1);font-size:.75rem;line-height:1.4}.birthday-row{display:grid;grid-template-columns:1fr 1fr 2fr;gap:var(--space-2)}.alloc-row{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-3)0;border-bottom:1px solid var(--bg-tertiary)}.alloc-row:last-child{border-bottom:none}.alloc-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.alloc-name{flex:1;font-size:.9rem;font-weight:500}.alloc-input{text-align:right;width:70px}.alloc-total{background:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--space-3)var(--space-4);margin-top:var(--space-4)}.alloc-total-row{display:flex;margin-bottom:var(--space-2);justify-content:space-between;font-size:.8rem}.alloc-total-num{font-family:var(--font-mono);font-weight:700}.data-choice-grid{display:flex;gap:var(--space-3);margin-bottom:var(--space-6);flex-direction:column}.data-choice-card{background:var(--bg-secondary);border:2px solid var(--bg-tertiary);border-radius:var(--radius-lg);padding:var(--space-5);cursor:pointer;display:flex;gap:var(--space-4);align-items: flex-start;transition:border-color .15s}.data-choice-card:hover{border-color:var(--bg-hover)}.data-choice-card.selected{border-color:var(--accent);background:rgba(var(--accent-rgb),.06)}.data-choice-radio{border:2px solid var(--bg-hover);border-radius:50%;flex-shrink:0;width:18px;height:18px;margin-top:2px;transition:border-color .15s,background .15s}.data-choice-card.selected .data-choice-radio{background:var(--accent);border-color:var(--accent)}.data-choice-body .choice-title{margin-bottom:var(--space-1);font-weight:700}.data-choice-body .choice-desc{color:var(--text-secondary);font-size:.8rem;line-height:1.5}.sample-banner{border-radius:var(--radius-md);padding:var(--space-3)var(--space-4);display:flex;justify-content:space-between;align-items: center;gap:var(--space-3);margin-bottom:var(--space-4);background:#f0a0301a;border:1px solid #f0a0304d}.sample-banner-label{color:var(--caution);font-size:.8rem;font-weight:600}.sample-banner-clear{color:var(--caution);cursor:pointer;text-decoration:underline;font-size:.75rem}.checklist-card{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);border-left:3px solid var(--accent)}.checklist-header{display:flex;margin-bottom:var(--space-3);justify-content:space-between;align-items: center}.checklist-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);font-size:.75rem;font-weight:700}.checklist-count{font-size:.75rem;font-family:var(--font-mono);color:var(--text-secondary)}.checklist-item{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-2)0;cursor:pointer;font-size:.875rem}.checklist-item.done{text-decoration:line-through;opacity:.5}.checklist-check{border:2px solid var(--bg-hover);display:flex;border-radius:4px;flex-shrink:0;justify-content:center;align-items: center;width:18px;height:18px;transition:background .15s,border-color .15s;font-size:.7rem}.checklist-item.done .checklist-check{background:var(--positive);border-color:var(--positive)}.session-banner{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-4)var(--space-5);margin-bottom:var(--space-4);border-left:3px solid var(--accent)}.session-banner.payday{border-color:var(--positive)}.session-banner.commission{border-color:var(--caution)}.session-banner.credit{border-color:var(--negative)}.session-banner.review{border-color:var(--accent)}.session-banner-title{margin-bottom:var(--space-1);font-weight:700}.session-banner-sub{color:var(--text-secondary);margin-bottom:var(--space-3);font-size:.8rem}.session-banner-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.birthday-overlay{position:fixed;z-index:500;display:flex;padding:var(--space-6);background:#0d0f14f5;justify-content:center;align-items: center;inset:0}.birthday-overlay:before{content:"";position:absolute;pointer-events:none;opacity:.35;background-image:radial-gradient(circle,var(--accent)2px,transparent 2.5px),radial-gradient(circle,var(--cat-fun)2px,transparent 2.5px),radial-gradient(circle,var(--cat-growth)2px,transparent 2.5px),radial-gradient(circle,var(--cat-rel)2px,transparent 2.5px);background-position:0 0,60px 90px,120px 20px,30px 140px;background-size:140px 140px,180px 180px,160px 160px,200px 200px;inset:0}.birthday-card{text-align:center;width:100%;max-width:420px}.birthday-emoji{margin-bottom:var(--space-5);font-size:3.5rem}.birthday-name{margin-bottom:var(--space-2);font-size:1.75rem;font-weight:800}.birthday-age{color:var(--text-secondary);margin-bottom:var(--space-6);font-size:1rem}.birthday-snap{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6)}.birthday-snap-row{display:flex;padding:var(--space-2)0;border-bottom:1px solid var(--bg-tertiary);justify-content:space-between;font-size:.875rem}.birthday-snap-row:last-child{border-bottom:none}.birthday-snap-val{font-family:var(--font-mono);font-weight:700}.birthday-quote{color:var(--text-secondary);margin-bottom:var(--space-6);font-size:.9rem;font-style:italic;line-height:1.6}.settings-section{margin-bottom:var(--space-8);scroll-margin-top:96px}.settings-nav{position:sticky;z-index:5;display:flex;gap:var(--space-2);overflow-x:auto;padding:var(--space-2)0;margin-bottom:var(--space-5);background:var(--bg-primary);border-bottom:1px solid var(--bg-tertiary);top:0}.settings-nav-chip{background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:background var(--transition),color var(--transition);border:1px solid #0000;border-radius:99px;flex-shrink:0;padding:6px 12px;font-family:inherit;font-size:.75rem;font-weight:600}.settings-nav-chip:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);margin-bottom:var(--space-3);font-size:.7rem;font-weight:700}.cat-row{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-3)0;border-bottom:1px solid var(--bg-tertiary)}.cat-row:last-child{border-bottom:none}.color-swatch{transition:border-color .15s}.qc-btn{background:var(--bg-tertiary);border-radius:var(--radius-lg);padding:var(--space-4);text-align:center;cursor:pointer;transition:background var(--transition),transform var(--transition);border:1px solid #0000}.qc-btn:hover{background:var(--bg-hover);transform:translateY(-1px)}.qc-btn:active{transform:scale(.97)}.day-strip{display:flex;align-items: center;gap:var(--space-2);margin-bottom:var(--space-4);overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.day-strip::-webkit-scrollbar{display:none}.day-chip{display:flex;padding:var(--space-2)var(--space-3);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition);flex-direction:column;flex-shrink:0;align-items: center;min-width:44px}.day-chip:hover{background:var(--bg-tertiary)}.day-chip.active{background:var(--accent)}.day-chip .day-label{text-transform:uppercase;color:var(--text-tertiary);font-size:.65rem;font-weight:600}.day-chip.active .day-label{color:#ffffffb3}.day-chip .day-num{font-size:1rem;font-weight:700;line-height:1.2}.day-chip.today:not(.active) .day-num{color:var(--accent)}.time-grid{position:relative;border-left:1px solid var(--bg-tertiary);min-height:600px;margin-left:48px}.time-row{display:flex;position:relative;border-top:1px solid var(--bg-tertiary);height:60px}.time-row:first-child{border-top:none}.time-label{position:absolute;font-size:.7rem;font-family:var(--font-mono);color:var(--text-tertiary);text-align:right;user-select:none;width:48px;top:-9px;left:-52px}.time-block-el{position:absolute;border-radius:var(--radius-sm);cursor:pointer;overflow:hidden;transition:opacity var(--transition);padding:4px 8px;font-size:.75rem;font-weight:600;left:4px;right:4px;box-shadow:0 1px 4px #0000004d}.time-block-el:hover{opacity:.85}.time-block-el.school{border-left:3px solid var(--cat-school);cursor:default;background:#a855f740}.current-time-line{position:absolute;background:var(--negative);pointer-events:none;z-index:5;height:2px;left:0;right:0}.current-time-line:before{content:"";position:absolute;background:var(--negative);border-radius:50%;width:10px;height:10px;top:-4px;left:-6px}.view-switcher{display:flex;background:var(--bg-tertiary);border-radius:var(--radius-md);margin-bottom:var(--space-4);gap:2px;padding:3px}.view-btn{padding:var(--space-2)var(--space-3);border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition);text-align:center;flex:1;font-size:.8rem;font-weight:600}.view-btn.active{background:var(--bg-secondary);color:var(--text-primary)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.month-cell{aspect-ratio:1;display:flex;border-radius:var(--radius-sm);cursor:pointer;position:relative;transition:background var(--transition);flex-direction:column;align-items: center;padding:4px;font-size:.8rem}.month-cell:hover{background:var(--bg-tertiary)}.month-cell.today{background:rgba(var(--accent-rgb),.1)}.month-cell.today .month-daynum{display:inline-flex;background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items: center;min-width:20px;height:20px;font-weight:700}.month-cell.other-month{opacity:.35}.month-cell.payday{border-top:2px solid var(--positive)}.month-cell.commission{border-top:2px solid var(--caution)}.month-cell.period-start{border-left:2px solid var(--accent)}.month-cell.semester{box-shadow:inset 0 0 0 1px #a855f780}.month-cell .month-dots{display:flex;gap:2px;margin-top:2px}.month-dot{border-radius:50%;width:4px;height:4px}.year-graph{overflow-x:auto;padding-bottom:var(--space-2)}.year-grid{display:grid;grid-template-rows:repeat(7,14px);grid-auto-flow:column;gap:2px;width:max-content}.year-month-axis{display:grid;grid-template-columns:repeat(53,14px);color:var(--text-tertiary);overflow:visible;gap:2px;width:max-content;margin-bottom:4px;font-size:.65rem}.year-month-axis span{white-space:nowrap}.year-cell{background:var(--bg-tertiary);cursor:pointer;transition:opacity var(--transition);border-radius:2px;width:14px;height:14px}.year-cell:hover{opacity:.7}.year-cell.level-1{background:rgba(var(--accent-rgb),.25)}.year-cell.level-2{background:rgba(var(--accent-rgb),.5)}.year-cell.level-3{background:rgba(var(--accent-rgb),.75)}.year-cell.level-4{background:var(--accent)}.year-cell.semester{box-shadow:inset 0 0 0 1px #a855f780}.year-cell.payday{box-shadow:inset 0 0 0 1px var(--positive)}.year-cell.commission{box-shadow:inset 0 0 0 1px var(--caution)}.year-cell.today-outline{outline:1px solid var(--text-primary);outline-offset:-1px}.sub-nav{display:flex;background:var(--bg-tertiary);border-radius:var(--radius-md);margin-bottom:var(--space-5);overflow-x:auto;gap:2px;padding:3px}.sub-nav-btn{padding:var(--space-2)var(--space-4);border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition);white-space:nowrap;flex:1;min-width:max-content;font-size:.8rem;font-weight:600}.sub-nav-btn.active{background:var(--bg-secondary);color:var(--text-primary)}.alloc-bar-row{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-2)0}.alloc-bar-label{flex-shrink:0;width:90px;font-size:.8rem}.alloc-bar-track{background:var(--bg-tertiary);overflow:hidden;border-radius:99px;flex:1;height:6px}.alloc-bar-fill{border-radius:99px;height:100%;transition:width .5s}.alloc-bar-pct{font-size:.75rem;font-family:var(--font-mono);color:var(--text-tertiary);text-align:right;flex-shrink:0;width:36px}.milestone-track{display:flex;padding:var(--space-4)0;overflow-x:auto;align-items: center;gap:0}.milestone-dot{border:2px solid var(--bg-hover);background:var(--bg-secondary);border-radius:50%;flex-shrink:0;width:16px;height:16px;transition:background .3s,border-color .3s}.milestone-dot.reached{background:var(--positive);border-color:var(--positive)}.milestone-dot.current{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.25)}.milestone-line{background:var(--bg-tertiary);flex:1;min-width:20px;height:2px}.milestone-line.filled{background:var(--positive)}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.trade-row{display:flex;align-items: center;gap:var(--space-3);padding:var(--space-3)0;border-bottom:1px solid var(--bg-tertiary);cursor:pointer;transition:background var(--transition)}.trade-row:hover{background:var(--bg-tertiary);margin:0 calc(-1*var(--space-5));padding:var(--space-3)var(--space-5);border-radius:var(--radius-sm)}.trade-row:last-child{border-bottom:none}.trade-ticker{font-family:var(--font-mono);min-width:60px;font-size:.875rem;font-weight:700}.trade-desc{color:var(--text-secondary);flex:1;font-size:.8rem}.trade-pnl{font-family:var(--font-mono);font-size:.875rem;font-weight:700}.pnl-chart{display:flex;padding-top:var(--space-2);align-items: flex-end;gap:4px;height:60px}.pnl-bar{transition:opacity var(--transition);cursor:default;border-radius:3px 3px 0 0;flex:1;min-height:4px}.pnl-bar-label{color:var(--text-tertiary);text-align:center;margin-top:2px;font-size:.6rem}.drop-zone{border:2px dashed var(--bg-hover);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;cursor:pointer;transition:border-color var(--transition),background var(--transition)}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--accent);background:rgba(var(--accent-rgb),.05)}.budget-row{display:flex;padding:var(--space-2)0;border-bottom:1px solid var(--bg-tertiary);justify-content:space-between;align-items: center;font-size:.875rem}.budget-row:last-child{border-bottom:none}.budget-row-label{color:var(--text-secondary)}.budget-row-amt{font-family:var(--font-mono);font-weight:600}
