:root{color:#172b28;font-synthesis:none;text-rendering:optimizelegibility;--green-950:#102d28;--green-900:#163c35;--green-800:#205047;--green-700:#2d685b;--green-100:#e5f0ec;--green-50:#f0f6f3;--amber:#f3bd66;--ink:#172b28;--muted:#74827d;--line:#e5eae7;--canvas:#f4f6f3;--white:#fff;--red:#bc5550;--shadow:0 12px 34px #1539310e;background:#f4f6f3;font-family:DM Sans,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #f3bd66e6}.boot-message{max-width:30rem;color:var(--muted);text-align:center;margin:14vh auto;padding:2rem}.app-shell{min-height:100vh}.sidebar{z-index:5;color:#ecf4f0;background:var(--green-950);flex-direction:column;width:246px;padding:27px 17px 20px;display:flex;position:fixed;inset:0 auto 0 0}.brand{color:inherit;align-items:center;gap:11px;margin:0 4px 42px;text-decoration:none;display:flex}.brand-mark{width:38px;height:38px;color:var(--green-950);background:var(--amber);border-radius:12px;place-items:center;font-family:Manrope,sans-serif;font-size:20px;font-weight:800;display:grid}.brand strong,.brand small{display:block}.brand strong{letter-spacing:-.3px;font-family:Manrope,sans-serif;font-size:15px}.brand small{color:#9eb4ab;margin-top:2px;font-size:11px}.primary-nav{gap:7px;display:grid}.nav-link{color:#aabbb4;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:13px;width:100%;padding:12px 13px;font-size:13px;transition:background .14s,color .14s;display:flex}.nav-link:hover,.nav-link.is-active{color:#fff;background:#234a41}.nav-link.is-active{box-shadow:inset 3px 0 var(--amber)}.nav-icon{color:#c0d1ca;text-align:center;width:20px;font-size:19px;line-height:1}.sidebar-bottom{gap:13px;margin-top:auto;display:grid}.offline-badge{color:#b1c1ba;border:1px solid #c1d8cf21;border-radius:9px;align-items:center;gap:8px;padding:11px;font-size:10px;display:flex}.offline-badge i{background:#8dd4ae;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #8dd4ae1c}.main-area{min-height:100vh;margin-left:246px}.topbar{z-index:4;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffed;justify-content:space-between;align-items:center;min-height:72px;padding:0 clamp(20px,4vw,56px);display:flex;position:sticky;top:0}.period-control,.topbar-right{align-items:center;display:flex}.period-control{gap:8px}.period-control select,.period-control input{border:1px solid var(--line);height:38px;color:var(--ink);background:#fff;border-radius:8px}.period-control select{min-width:133px;padding:0 10px;font-weight:600}.period-control input{text-align:center;width:82px;padding:0 8px}.period-arrow{width:34px;height:34px;padding:0;font-size:23px}.topbar-right{gap:20px}.privacy-label{color:var(--muted);font-size:11px}.privacy-label span{color:#4b9d72;vertical-align:2px;font-size:8px}.content-area{gap:21px;width:min(100%,1400px);margin:0 auto;padding:34px clamp(20px,4vw,56px) 48px;display:grid}.page-heading{justify-content:space-between;align-items:flex-end;gap:18px;margin:0 0 2px;display:flex}.page-heading h1,.panel h2,.modal-heading h2{color:var(--ink);letter-spacing:-.7px;margin:0;font-family:Manrope,Segoe UI,sans-serif}.page-heading h1{margin:3px 0 7px;font-size:clamp(25px,3vw,34px);font-weight:700}.page-heading p,.panel-heading p{color:var(--muted);margin:0;font-size:12px;line-height:1.55}.eyebrow{letter-spacing:1px;text-transform:uppercase;font-weight:700;color:var(--green-700)!important;margin:0 0 6px!important;font-size:10px!important}.button{border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-size:12px;font-weight:700;transition:transform .12s,background .12s,border-color .12s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button:disabled{cursor:not-allowed;opacity:.48;transform:none}.button-primary{color:#fff;background:var(--green-800)}.button-primary:hover{background:var(--green-900)}.button-secondary{color:var(--green-900);background:#fff;border-color:#dce5e0}.button-secondary:hover{background:var(--green-50);border-color:#adc8bc}.button-quiet{color:#52615b;background:0 0}.button-warning{color:#fff;background:#a96635}.button-compact{min-height:36px;padding:0 12px;font-size:11px}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;display:grid}.metric-grid-two{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card{border:1px solid var(--line);min-height:130px;box-shadow:var(--shadow);background:#fff;border-radius:13px;flex-direction:column;justify-content:space-between;align-items:flex-start;padding:18px 19px 16px;display:flex}.metric-label{color:#687770;font-size:11px;font-weight:600}.metric-value{color:var(--ink);letter-spacing:-.9px;margin:9px 0 4px;font-family:Manrope,sans-serif;font-size:clamp(20px,2vw,26px)}.metric-note{color:var(--muted);font-size:10px;line-height:1.45}.metric-income{border-top:3px solid #69a987}.metric-expense{border-top:3px solid #e19b76}.metric-investment{border-top:3px solid #7198c3}.metric-balance{border-top:3px solid var(--amber)}.panel{border:1px solid var(--line);min-width:0;box-shadow:var(--shadow);background:#fff;border-radius:13px;padding:20px}.panel-heading{justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:17px;display:flex}.panel h2{letter-spacing:-.45px;margin:0 0 5px;font-size:17px}.panel-heading .eyebrow{margin-bottom:4px!important}.annual-panel{padding-bottom:18px}.month-chart{border-bottom:1px solid var(--line);grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:7px;min-height:180px;padding:10px 2px 0;display:grid}.month-column{background:0 0;border:0;border-radius:7px 7px 0 0;flex-direction:column;justify-content:flex-end;min-width:0;height:158px;padding:0 2px;display:flex}.month-column:hover,.month-column.is-current{background:var(--green-50)}.month-bars{justify-content:center;align-items:flex-end;gap:3px;height:132px;display:flex}.month-bar{border-radius:4px 4px 0 0;width:min(36%,13px);min-height:0;display:block}.expense-bar{background:#8eb6a4}.balance-bar{background:#e7b664}.negative-bar{background:#cb7d73}.month-tick{color:#77847e;text-align:center;text-transform:capitalize;padding:7px 0;font-size:9px}.month-column.is-current .month-tick{color:var(--green-900);font-weight:700}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:10px;display:flex}.panel-heading>.chart-legend{margin-top:7px}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.legend-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.expense-dot{background:#8eb6a4}.balance-dot{background:#e7b664}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;display:grid}.bar-list{gap:13px;margin:0;padding:0;list-style:none;display:grid}.bar-copy{color:#4d5c56;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;font-size:11px;display:flex}.bar-copy strong{color:var(--ink);flex-shrink:0;font-size:11px}.bar-track{background:#edf1ee;border-radius:20px;height:7px;overflow:hidden}.bar-fill{border-radius:inherit;background:linear-gradient(90deg,#448674,#8db69f);height:100%;display:block}.goal-progress{background:var(--green-50);border-radius:10px;gap:11px;padding:13px;display:grid}.goal-progress-heading{color:#5a6c64;justify-content:space-between;font-size:11px;display:flex}.goal-progress-heading strong{color:var(--green-900)}.goal-caption{color:var(--muted);font-size:10px}.empty-inline{color:#7c8983;text-align:center;background:#f7f9f7;border-radius:9px;margin:5px 0 0;padding:16px;font-size:11px}.empty-state{min-height:138px;color:var(--muted);text-align:center;place-content:center;justify-items:center;display:grid}.empty-state p{margin:9px 0 0;font-size:12px}.empty-icon{width:34px;height:34px;color:var(--green-800);background:var(--green-100);border-radius:11px;place-items:center;font-size:20px;display:grid}.table-scroll{width:100%;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%}th{border-bottom:1px solid var(--line);color:#87928d;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;padding:10px 11px;font-size:9px;font-weight:700}td{color:#53615b;white-space:nowrap;border-bottom:1px solid #edf0ee;padding:12px 11px;font-size:11px}tr:last-child td{border-bottom:0}td strong,td small{display:block}td strong{color:var(--ink);font-size:11px;font-weight:600}td small{color:#89948e;margin-top:4px;font-size:9px}.amount-cell{color:var(--ink);text-align:right;font-weight:700}.kind-pill,.status-chip{color:#446557;background:#eaf2ed;border-radius:20px;padding:5px 8px;font-size:9px;font-weight:600;display:inline-block}.kind-income{color:#347458;background:#e8f4eb}.kind-expense{color:#925743;background:#fbefea}.kind-investment{color:#4d6e93;background:#edf2f8}.pending-label{color:#ac6c39!important}.row-actions{gap:9px;display:flex}.icon-button,.text-button{color:var(--green-800);background:0 0;border:0;border-radius:6px;padding:5px 7px;font-size:10px;font-weight:600}.icon-button:hover,.text-button:hover{background:var(--green-50)}.danger-text{color:var(--red)}.section-total{color:var(--green-900);font-family:Manrope,sans-serif;font-size:17px}.record-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.record-card{border:1px solid var(--line);background:#fff;border-radius:10px;padding:15px}.record-card-heading{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.record-card h3{color:var(--ink);margin:3px 0 0;font-family:Manrope,sans-serif;font-size:14px}.record-card-heading>strong{color:var(--green-900);font-size:13px}.record-eyebrow{color:var(--green-700);text-transform:uppercase;font-size:9px}.record-card p{color:var(--muted);margin:10px 0;font-size:10px}.status-chip{color:#8e5b32;background:#fbf1e6}.status-paid{color:#397051;background:#e7f2ea}.record-actions{border-top:1px solid #edf0ee;gap:8px;margin-top:10px;padding-top:9px;display:flex}.goal-form{gap:11px;display:grid}.goal-form>label,.stack-form>label:not(.file-picker),.form-grid>label{color:#52615b;gap:6px;font-size:10px;font-weight:600;display:grid}.inline-form{align-items:center;gap:10px;display:flex}.currency-input{max-width:220px;color:var(--muted);background:#fff;border:1px solid #dfe7e2;border-radius:8px;align-items:center;gap:7px;padding:0 10px;display:flex}.currency-input input{border:0;width:150px}input,select{min-width:0;height:39px;color:var(--ink);background:#fff;border:1px solid #dfe7e2;border-radius:8px;padding:0 10px;font-size:11px}input::placeholder{color:#a6b0ab}input[type=checkbox]{width:16px;height:16px;accent-color:var(--green-700)}.checkbox-label{align-items:center;min-height:39px;gap:8px!important;display:flex!important}.checkbox-label input{margin:0}.data-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:15px;display:grid}.data-panel .panel-heading{min-height:93px}.stack-form{gap:13px;display:grid}.file-picker{min-height:72px;color:var(--ink);cursor:pointer;background:#f9fbfa;border:1px dashed #bacdc4;border-radius:10px;align-items:center;gap:13px;padding:13px;display:flex}.file-picker:hover{border-color:var(--green-700);background:var(--green-50)}.file-picker-icon{width:34px;height:34px;color:var(--green-800);background:var(--green-100);border-radius:10px;place-items:center;font-size:18px;display:grid}.file-picker strong,.file-picker small{display:block}.file-picker strong{font-size:11px}.file-picker small{color:var(--muted);margin-top:4px;font-size:9px}.file-picker input{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.import-preview{color:#5e6c66;background:#f6f8f6;border-radius:9px;padding:12px;font-size:10px;line-height:1.5}.import-preview p{margin:4px 0}.preview-stats{flex-wrap:wrap;gap:6px;margin-bottom:7px;display:flex}.preview-stats strong{color:var(--green-900);background:#e8f0eb;border-radius:6px;padding:5px 7px;font-size:9px}.warning-copy{color:#925d32}.muted-copy{color:#798780}.error-copy{color:#a1403a}.mismatch-list{color:#a1403a;padding-left:17px}.backup-actions{flex-wrap:wrap;gap:8px;display:flex}.site-footer{border-top:1px solid var(--line);color:#8a9690;justify-content:space-between;gap:10px;padding:17px clamp(20px,4vw,56px) 24px;font-size:9px;display:flex}.form-dialog{background:0 0;border:0;border-radius:15px;width:min(100% - 30px,590px);max-width:none;max-height:min(92vh,760px);padding:0}.form-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0d221e80}.modal-card{background:#fff;border-radius:15px;gap:17px;padding:23px;display:grid;box-shadow:0 24px 80px #081e1833}.modal-heading{justify-content:space-between;align-items:flex-start;display:flex}.modal-heading h2{font-size:20px}.kind-switch{background:#f0f3f1;border-radius:9px;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:4px;display:grid}.kind-switch button{color:#728078;background:0 0;border:0;border-radius:7px;min-height:35px;font-size:10px;font-weight:600}.kind-switch button.is-selected{color:var(--green-900);background:#fff;box-shadow:0 2px 6px #163c3517}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.wide-field{grid-column:1/-1}.modal-actions{justify-content:flex-end;gap:8px;padding-top:3px;display:flex}.form-error{min-height:0;color:var(--red);margin:0;font-size:10px}.form-error:not(:empty){min-height:15px}.toast{z-index:12;max-width:min(420px,100vw - 32px);color:var(--green-950);opacity:0;pointer-events:none;background:#f4fbf6;border:1px solid #d5e3da;border-radius:10px;padding:13px 17px;font-size:11px;transition:opacity .15s,transform .15s;position:fixed;bottom:22px;right:22px;transform:translateY(8px);box-shadow:0 8px 35px #102d2826}.toast.is-visible{opacity:1;transform:translateY(0)}.toast-error{color:#8e3934;background:#fff7f6;border-color:#eccbc8}.fatal-error{border:1px solid var(--line);text-align:center;background:#fff;border-radius:14px;justify-items:center;gap:12px;max-width:480px;margin:16vh auto;padding:28px;display:grid}.fatal-error h1{margin:0;font-family:Manrope,sans-serif;font-size:22px}.fatal-error p{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:1100px){.sidebar{width:218px}.main-area{margin-left:218px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.sidebar{width:100%;height:auto;padding:10px 13px;position:sticky;inset:0 0 auto}.brand{margin:0 4px 9px}.brand-mark{border-radius:10px;width:32px;height:32px;font-size:17px}.primary-nav{gap:4px;padding-bottom:2px;display:flex;overflow-x:auto}.primary-nav .nav-link{white-space:nowrap;flex:none;gap:6px;width:auto;padding:8px 9px;font-size:10px}.primary-nav .nav-icon{width:auto;font-size:15px}.sidebar-bottom{display:none}.main-area{min-height:calc(100vh - 92px);margin-left:0}.topbar{min-height:60px;padding:0 14px}.topbar-right{gap:0}.topbar-right .privacy-label{display:none}.period-control{gap:5px}.period-control select{min-width:113px;max-width:135px;font-size:10px}.period-control input{width:63px;font-size:10px}.period-arrow{width:28px;height:32px}.content-area{gap:14px;padding:23px 14px 33px}.page-heading{align-items:flex-start}.page-heading .button{flex-shrink:0;min-height:38px;padding:0 10px;font-size:10px}.page-heading p:not(.eyebrow){max-width:480px;font-size:11px}.chart-grid,.data-grid{grid-template-columns:1fr}.panel{padding:15px}.month-chart{gap:2px}.month-tick{font-size:8px}.record-grid{grid-template-columns:1fr}.site-footer{padding:14px}}@media (max-width:460px){.topbar{gap:6px;padding-left:10px;padding-right:10px}.period-control{gap:3px}.period-control select{min-width:95px;max-width:110px;padding:0 6px}.period-control input{width:50px;padding:0 4px}.period-arrow{width:25px}.topbar-right .button-compact{white-space:nowrap;padding:0 6px;font-size:8px}.primary-nav .nav-link{padding:8px 7px}.primary-nav .nav-link span:last-child{text-overflow:ellipsis;max-width:92px;overflow:hidden}.button-compact{min-height:33px;padding:0 8px;font-size:9px}.metric-grid{gap:8px}.metric-card{min-height:118px;padding:13px}.metric-label,.metric-note{font-size:9px}.metric-value{font-size:20px}.panel-heading{gap:8px}.panel h2{font-size:15px}.month-bars{gap:2px}.month-bar{width:40%}.form-grid{grid-template-columns:1fr}.wide-field{grid-column:auto}.modal-card{padding:17px}.site-footer{flex-direction:column}}
