:root{--bg:oklch(96.5% .014 26);--surface:oklch(99.2% .006 30);--surface-2:oklch(94% .014 28);--border:oklch(93% .011 28);--border-strong:oklch(88% .02 40);--divider:oklch(92% .013 28);--text:oklch(24% .02 30);--text-muted:oklch(52% .02 30);--text-soft:oklch(60% .02 30);--accent:oklch(65% .065 32);--accent-2:oklch(58% .075 30);--accent-dark:oklch(54% .075 32);--accent-text:oklch(56% .07 32);--accent-soft:oklch(62% .09 20/.12);--accent-soft-strong:oklch(62% .09 20/.16);--income:oklch(48% .08 150);--income-text:oklch(42% .08 150);--income-soft:oklch(50% .08 150/.14);--expense:oklch(52% .11 35);--expense-text:oklch(46% .11 35);--expense-soft:oklch(52% .11 35/.12);--warning-text:oklch(45% .09 55);--warning-soft:oklch(64% .08 55/.14);--active-bg:oklch(62% .09 20/.14);--active-color:oklch(56% .07 32);--idle-color:oklch(56% .02 30);--banner-amber-bg:oklch(97% .025 60/.6);--banner-amber-border:oklch(88% .04 65);--banner-amber-text:oklch(42% .07 60);--banner-green-bg:oklch(97% .03 150/.5);--banner-green-border:oklch(88% .035 150);--banner-green-text:oklch(38% .06 150);--banner-purple-bg:oklch(96% .02 285/.6);--banner-purple-border:oklch(88% .03 285);--banner-purple-text:oklch(40% .07 285);--radius-lg:22px;--radius-md:16px;--radius-sm:12px;--shadow-card:0 1px 3px oklch(55% .04 35/.07);--shadow-hero:0 14px 36px oklch(62% .09 20/.28);--shadow-modal:0 24px 64px oklch(30% .04 30/.28);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:oklch(18% .014 30);--surface:oklch(23% .016 30);--surface-2:oklch(28% .018 30);--border:oklch(32% .02 30);--border-strong:oklch(38% .025 35);--divider:oklch(29% .018 30);--text:oklch(93% .01 30);--text-muted:oklch(72% .017 30);--text-soft:oklch(63% .017 30);--accent:oklch(68% .095 32);--accent-2:oklch(60% .1 28);--accent-dark:oklch(60% .1 30);--accent-text:oklch(78% .1 32);--accent-soft:oklch(62% .12 24/.22);--accent-soft-strong:oklch(62% .12 24/.3);--income:oklch(68% .13 150);--income-text:oklch(76% .14 150);--income-soft:oklch(65% .14 150/.22);--expense:oklch(68% .14 35);--expense-text:oklch(76% .14 35);--expense-soft:oklch(62% .14 35/.22);--warning-text:oklch(80% .11 65);--warning-soft:oklch(70% .11 60/.22);--active-bg:oklch(62% .12 24/.26);--active-color:oklch(80% .1 32);--idle-color:oklch(78% .016 30);--banner-amber-bg:oklch(42% .06 60/.3);--banner-amber-border:oklch(55% .07 62/.5);--banner-amber-text:oklch(86% .08 65);--banner-green-bg:oklch(42% .07 150/.28);--banner-green-border:oklch(55% .08 150/.5);--banner-green-text:oklch(84% .1 150);--banner-purple-bg:oklch(42% .05 285/.3);--banner-purple-border:oklch(55% .06 285/.5);--banner-purple-text:oklch(84% .08 285);--shadow-card:0 1px 3px oklch(0% 0 0/.45);--shadow-hero:0 14px 36px oklch(0% 0 0/.5);--shadow-modal:0 24px 64px oklch(0% 0 0/.6);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:oklch(18% .014 30);--surface:oklch(23% .016 30);--surface-2:oklch(28% .018 30);--border:oklch(32% .02 30);--border-strong:oklch(38% .025 35);--divider:oklch(29% .018 30);--text:oklch(93% .01 30);--text-muted:oklch(72% .017 30);--text-soft:oklch(63% .017 30);--accent:oklch(68% .095 32);--accent-2:oklch(60% .1 28);--accent-dark:oklch(74% .1 32);--accent-text:oklch(78% .1 32);--accent-soft:oklch(62% .12 24/.22);--accent-soft-strong:oklch(62% .12 24/.3);--income:oklch(68% .13 150);--income-text:oklch(76% .14 150);--income-soft:oklch(65% .14 150/.22);--expense:oklch(68% .14 35);--expense-text:oklch(76% .14 35);--expense-soft:oklch(62% .14 35/.22);--warning-text:oklch(80% .11 65);--warning-soft:oklch(70% .11 60/.22);--active-bg:oklch(62% .12 24/.26);--active-color:oklch(80% .1 32);--idle-color:oklch(78% .016 30);--banner-amber-bg:oklch(42% .06 60/.3);--banner-amber-border:oklch(55% .07 62/.5);--banner-amber-text:oklch(86% .08 65);--banner-green-bg:oklch(42% .07 150/.28);--banner-green-border:oklch(55% .08 150/.5);--banner-green-text:oklch(84% .1 150);--banner-purple-bg:oklch(42% .05 285/.3);--banner-purple-border:oklch(55% .06 285/.5);--banner-purple-text:oklch(84% .08 285);--shadow-card:0 1px 3px oklch(0% 0 0/.45);--shadow-hero:0 14px 36px oklch(0% 0 0/.5);--shadow-modal:0 24px 64px oklch(0% 0 0/.6);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body,.card,.list-row,.pill,.badge,.btn-primary,.btn-secondary,.nav-btn,.tab,.input,select.input,textarea.input,.modal,.action-card,.hero-card,.info-banner{transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Work Sans,sans-serif}input,select,textarea,button{font-family:Work Sans,sans-serif}h1,h2,h3,.serif{margin:0;font-family:Newsreader,serif}button{font:inherit;cursor:pointer}a{color:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}.app-shell{background:var(--bg);width:100%;min-height:100vh;display:flex}.app-nav{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex:none;align-items:center;gap:4px;width:96px;padding:24px 0 30px;display:flex;overflow-y:auto}.nav-section-label{letter-spacing:.09em;color:var(--text-soft);margin:10px 0 2px;font-size:8.5px;font-weight:700}.nav-btn{all:unset;cursor:pointer;width:76px;color:var(--idle-color);border-radius:14px;flex-direction:column;align-items:center;gap:5px;padding:9px 4px;display:flex;position:relative}.nav-btn:hover{background:var(--surface-2)}.nav-btn.active{background:var(--active-bg);color:var(--active-color)}.nav-btn .nav-bar{background:var(--active-color);border-radius:999px;width:3px;height:0;transition:height .15s;position:absolute;top:50%;left:-9px;transform:translateY(-50%)}.nav-btn.active .nav-bar{height:22px}.nav-btn span.label{text-align:center;font-size:9.5px;font-weight:600;line-height:1.25}.app-main{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:14px;padding:28px 36px 18px;display:flex}.app-header h1{color:var(--text);font-size:26px;font-weight:600}.app-header .subtitle{color:var(--text-muted);margin-top:2px;font-size:13px}.scroll-area{flex:1;min-height:0;padding:6px 36px 120px;overflow-y:auto}.page{flex-direction:column;gap:24px;width:100%;max-width:920px;margin:0 auto;padding-bottom:8px;display:flex}.page.narrow{max-width:760px}.page.wide{max-width:980px}.pill{all:unset;cursor:pointer;background:var(--surface-2);color:var(--idle-color);white-space:nowrap;border-radius:999px;padding:7px 16px;font-size:13px;font-weight:600}.pill.sm{padding:6px 12px;font-size:12px}.pill.active{background:var(--active-bg);color:var(--active-color)}.pill.accent{color:var(--accent-text);background:var(--accent-soft)}.pill.income{color:var(--income-text);background:var(--income-soft)}.pill.expense{color:var(--expense-text);background:var(--expense-soft)}.pill.ghost{color:var(--text-muted);background:0 0}.pill.ghost:hover{background:var(--surface-2)}.pill:disabled{opacity:.5;cursor:default}.btn-primary{all:unset;cursor:pointer;background:var(--accent);color:#fff;text-align:center;border-radius:999px;padding:11px 22px;font-size:13px;font-weight:600;transition:background-color .15s,transform .1s}.btn-primary:hover{background:var(--accent-dark)}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.55;cursor:default}.btn-secondary{all:unset;cursor:pointer;color:var(--text-muted);text-align:center;border-radius:999px;padding:11px 18px;font-size:13px;font-weight:600}.btn-secondary:hover{background:var(--surface-2)}.btn-danger-text{all:unset;cursor:pointer;color:var(--expense-text);border-radius:999px;padding:11px 16px;font-size:13px;font-weight:600}.icon-btn{all:unset;cursor:pointer;width:24px;height:24px;color:var(--text-soft);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:16px;display:flex}.icon-btn:hover{background:var(--surface-2)}.fab{all:unset;cursor:pointer;background:var(--accent);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:56px;height:56px;transition:background-color .15s,transform .15s,box-shadow .15s;display:flex;position:absolute;bottom:30px;right:36px;box-shadow:0 8px 20px oklch(62% .09 20/.35)}.fab:hover{background:var(--accent-dark);transform:translateY(-2px)scale(1.04);box-shadow:0 12px 26px oklch(62% .09 20/.4)}.fab:active{transform:scale(.96)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:20px 24px}.hero-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-hero);background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;flex-direction:column;gap:6px;padding:30px 32px;display:flex}.hero-card .label{opacity:.85;font-size:13px;font-weight:500}.hero-card .amount{font-family:Newsreader,serif;font-size:44px;font-weight:600}.list{background:var(--divider);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-direction:column;gap:1px;display:flex;overflow:hidden}.list-row{background:var(--surface);align-items:center;gap:14px;padding:13px 18px;display:flex}.list-row.clickable{cursor:pointer;transition:background-color .15s}.list-row.clickable:hover{background:var(--surface-2)}.list-row.clickable:active{transform:scale(.997)}.empty-state{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:12px;padding:26px 28px;font-size:13px;display:flex}.section-title{color:var(--text);margin-bottom:4px;font-size:15px;font-weight:600}.section-hint{color:var(--text-muted);margin-top:1px;font-size:11.5px}.eyebrow{letter-spacing:.08em;color:var(--idle-color);margin-bottom:12px;font-size:11px;font-weight:700}.badge{background:var(--surface-2);color:var(--idle-color);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:10.5px;font-weight:700}.badge.income{background:var(--income-soft);color:var(--income-text)}.badge.expense{background:var(--expense-soft);color:var(--expense-text)}.badge.warning{background:var(--warning-soft);color:var(--warning-text)}.progress-track{background:var(--surface-2);border-radius:999px;height:7px;overflow:hidden}.progress-fill{border-radius:999px;height:100%;transition:width .5s cubic-bezier(.2,.8,.3,1)}.chart-bar{transition:height .5s cubic-bezier(.2,.8,.3,1),width .5s cubic-bezier(.2,.8,.3,1)}.info-banner{border-radius:14px;align-items:center;gap:11px;padding:11px 16px;font-size:12.5px;line-height:1.45;display:flex}.field{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.field-row{gap:12px;display:flex}.field-row>.field{flex:1;min-width:0}.input,select.input,textarea.input{box-sizing:border-box;border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;min-width:0;color:var(--text);background:var(--surface);padding:11px 14px;font-size:14px}.input:focus,select.input:focus{outline:2px solid var(--accent);outline-offset:-1px}.tab-row{gap:8px;display:flex}.tab{all:unset;cursor:pointer;text-align:center;background:var(--surface-2);color:var(--idle-color);border-radius:12px;flex:1;padding:9px;font-size:13px;font-weight:600}.tab.active-expense{background:var(--expense-soft);color:var(--expense-text)}.tab.active-income{background:var(--income-soft);color:var(--income-text)}.tab.active-accent{background:var(--active-bg);color:var(--active-color)}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-pop-in{0%{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-overlay{z-index:30;background:oklch(20% .01 30/.4);justify-content:center;align-items:center;padding:20px;animation:.15s overlay-fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);flex-direction:column;gap:16px;width:420px;max-width:100%;max-height:88vh;padding:28px;animation:.18s cubic-bezier(.2,.8,.3,1) modal-pop-in;display:flex;overflow-y:auto}.modal.wide{width:620px}.modal h2{font-size:20px;font-weight:600}.modal-actions{align-items:center;gap:10px;margin-top:6px;display:flex}.auth-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:380px;max-width:100%;box-shadow:var(--shadow-card);flex-direction:column;align-items:stretch;gap:16px;padding:34px 32px;display:flex}.auth-error{color:var(--expense-text);background:var(--expense-soft);border-radius:10px;padding:10px 12px;font-size:12.5px}.action-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.action-card{all:unset;cursor:pointer;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:20px;flex-direction:column;gap:10px;min-height:120px;padding:22px;transition:border-color .15s,transform .15s,box-shadow .15s;display:flex}.action-card:hover{border-color:var(--border-strong);transform:translateY(-3px);box-shadow:0 10px 24px oklch(45% .04 35/.14)}.action-card:active{transform:translateY(-1px)scale(.99)}.action-card.primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;box-shadow:var(--shadow-hero);border:none}.action-card .title{font-size:16px;font-weight:600}.action-card .desc{color:var(--text-muted);font-size:11.5px;line-height:1.4}.action-card.primary .desc{color:#fff;opacity:.85}@media (width<=780px){.app-shell{flex-direction:column}.app-nav{border-right:none;border-top:1px solid var(--border);width:100%;padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:20;flex-direction:row;order:2;justify-content:flex-start;align-items:center;gap:2px;position:fixed;bottom:0;left:0;right:0;overflow:auto hidden;box-shadow:0 -4px 18px oklch(45% .04 30/.1)}.app-main{order:1;padding-bottom:76px}.nav-section-label{display:none}.nav-btn{flex:none;width:66px;padding:6px 2px}.app-header{padding:18px 16px 12px}.scroll-area{padding:4px 16px 150px}.fab{bottom:96px;right:18px}.modal-overlay{align-items:flex-start;padding:12px}.modal{max-height:92vh}}
