@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans',system-ui,sans-serif;color:#172b3d;background:#f4f7f9;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #70ceb9;outline-offset:2px}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{background:#0e2031;color:#d9e4ea;padding:29px 16px 24px;display:flex;flex-direction:column;gap:8px}.brand{font-family:Manrope,sans-serif;font-weight:800;font-size:1.22rem;display:flex;align-items:center;gap:10px;margin:0 8px 47px;color:white;letter-spacing:-.035em}.brand-light{font-weight:500;color:#d9e4ea}.brand-mark{width:33px;height:33px;display:grid;place-items:center;background:#5ed6bb;color:#0e2031;border-radius:10px;font-size:1.18rem}.sidebar-label{font-size:.72rem;letter-spacing:.13em;color:#718a9b;font-weight:700;padding:0 14px;margin-bottom:9px}.nav-link{border:0;background:none;width:100%;display:flex;align-items:center;gap:12px;text-align:left;color:#adbfca;padding:12px 14px;border-radius:10px;font-size:.92rem;font-weight:600;margin:2px 0}.nav-link:hover,.nav-link.active{background:#1c384b;color:white}.nav-link.active{box-shadow:inset 3px 0 #5ed6bb}.nav-icon{width:21px;text-align:center;font-size:1.15rem;color:#92aebb}.nav-link.active .nav-icon{color:#5ed6bb}.sidebar-foot{margin-top:auto;padding:16px 14px 0;border-top:1px solid #294052;font-size:.82rem;line-height:1.7;color:#b5c7d1}.sidebar-foot small{font-size:.76rem;color:#7d98a6;margin-left:15px}.storage-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#5ed6bb;margin-right:7px}.main-shell{min-width:0}.topbar{height:72px;background:white;border-bottom:1px solid #e8edf0;display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:16px}.breadcrumb{font-size:.74rem;letter-spacing:.11em;color:#98a8b2;font-weight:800}.breadcrumb span{padding:0 9px;color:#c3cfd5}.breadcrumb strong{color:#345267}.top-actions{display:flex;align-items:center;gap:18px}.avatar{background:#e6f7f3;color:#167d6b;border-radius:50%;width:33px;height:33px;display:grid;place-items:center;font-weight:800;font-size:.7rem}.ghost-button{border:0;background:none;color:#506879;font-weight:700;font-size:.85rem}.mobile-menu{display:none;border:0;background:none;font-size:1.5rem;color:#163047}main{padding:34px 38px 70px;max-width:1600px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}.eyebrow{text-transform:uppercase;color:#149884;letter-spacing:.16em;font-size:.73rem;font-weight:800;margin:0 0 9px}.page-head h1{font-family:Manrope,sans-serif;font-size:1.75rem;letter-spacing:-.05em;line-height:1.2;margin:0}.subhead{color:#81929e;margin:8px 0 0;font-size:.9rem}.head-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.button{border:1px solid #dbe4e9;border-radius:9px;background:white;color:#28465a;padding:10px 14px;font-weight:700;font-size:.82rem;white-space:nowrap}.button:hover{border-color:#83b8ae;background:#f5fcfa}.button.primary{background:#0e806d;color:white;border-color:#0e806d}.button.primary:hover{background:#096a59}.button.danger{color:#bd514a;border-color:#f0d6d3}.button.small{padding:6px 9px;font-size:.75rem}.notice{display:flex;justify-content:space-between;align-items:center;gap:14px;background:#e9f7f4;border:1px solid #ccebe4;color:#266e61;border-radius:12px;padding:12px 16px;margin-bottom:19px;font-size:.83rem}.notice button{border:0;background:none;color:#0c806d;text-decoration:underline;font-weight:800}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.card{background:white;border:1px solid #e3e9ed;border-radius:14px;box-shadow:0 5px 22px rgba(19,54,77,.035)}.metric{padding:19px 20px;min-height:137px}.metric-top{display:flex;justify-content:space-between;color:#7b8e9b;font-size:.79rem;font-weight:700}.metric-icon{background:#eaf8f4;color:#138974;border-radius:9px;width:31px;height:31px;display:grid;place-items:center}.metric strong{display:block;font-family:Manrope,sans-serif;font-size:1.59rem;letter-spacing:-.055em;margin:16px 0 5px}.metric-note{font-size:.73rem;color:#8699a4}.positive{color:#168b72!important}.negative{color:#c75a53!important}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(320px,1fr);gap:17px;margin-bottom:17px}.dashboard-grid.lower{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,.82fr)}.panel{padding:22px 23px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:17px}.panel h2,.panel h3{font:800 1rem Manrope,sans-serif;margin:0;letter-spacing:-.02em}.panel-caption{font-size:.74rem;color:#92a1ab;margin-top:4px}.panel-head .mini-link{color:#168c77;font-size:.76rem;font-weight:800;border:0;background:none}.chart-wrap{height:220px;position:relative}.chart-wrap svg{width:100%;height:100%;overflow:visible}.chart-labels{display:flex;justify-content:space-between;font-size:.69rem;color:#9aabb4;margin-top:5px}.donut-layout{display:flex;align-items:center;gap:22px}.donut{width:170px;height:170px;flex:none}.legend{display:grid;gap:11px;min-width:0;flex:1}.legend-row{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:.77rem}.legend-name{display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#667f8e}.swatch{width:9px;height:9px;border-radius:3px;flex:none}.legend-row strong{font-size:.77rem}.mini-stat{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #eef1f3;padding:12px 0;font-size:.81rem;color:#617989}.mini-stat strong{color:#203b4c}.progress-track{height:9px;background:#e7eef0;border-radius:20px;overflow:hidden;margin:12px 0}.progress-fill{height:100%;background:linear-gradient(90deg,#16a98e,#6dd9ba);border-radius:20px}.progress-summary{display:flex;justify-content:space-between;font-size:.74rem;color:#7b919d}.activity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid #edf1f3}.activity-name{font-weight:700;font-size:.78rem}.activity-meta{font-size:.69rem;color:#94a6af;margin-top:3px}.activity-amount{font-weight:800;font-size:.8rem;white-space:nowrap}.table-card{overflow:hidden}.table-toolbar{padding:18px 20px;display:flex;justify-content:space-between;gap:12px;align-items:center}.table-toolbar h2{font:800 1rem Manrope;margin:0}.table-scroll{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:.82rem}.data-table th{text-align:left;background:#f7fafb;color:#8498a3;font-size:.69rem;text-transform:uppercase;letter-spacing:.08em;padding:12px 19px;white-space:nowrap}.data-table td{border-top:1px solid #edf1f3;padding:13px 19px;white-space:nowrap}.data-table tr:hover td{background:#fbfdfd}.data-table .right{text-align:right}.muted{color:#8da0ab}.pill{display:inline-block;padding:4px 9px;border-radius:20px;background:#ecf7f4;color:#167c69;font-size:.7rem;font-weight:800}.pill.business{background:#fff2e9;color:#a76631}.table-actions{display:flex;gap:5px;justify-content:flex-end}.section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin-bottom:18px}.summary-strip{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:17px}.summary-item{min-width:170px}.summary-item span{display:block;font-size:.73rem;color:#8599a4;margin-bottom:6px}.summary-item strong{font:800 1.19rem Manrope}.bars{height:190px;display:flex;gap:10px;align-items:end;border-bottom:1px solid #e5ebee;padding:0 2px}.bar-group{height:100%;flex:1;display:flex;align-items:end;justify-content:center;gap:3px}.bar{min-width:5px;max-width:22px;flex:1;border-radius:5px 5px 0 0}.bar.income{background:#1ba88e}.bar.expense{background:#f1a37f}.bar.saving{background:#33748f}.bar-labels{display:flex;justify-content:space-around;color:#93a6af;font-size:.69rem;margin-top:9px}.chart-key{display:flex;gap:16px;margin-top:12px;color:#78909e;font-size:.72rem}.chart-key span{display:flex;align-items:center;gap:5px}.empty{padding:35px;text-align:center;color:#879aa5}.split-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(290px,.7fr);gap:17px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.wide{grid-column:1/-1}.field label{font-size:.76rem;color:#526c7c;font-weight:800}.field input,.field select,.field textarea{width:100%;border:1px solid #dbe5e9;background:#fbfdfd;border-radius:8px;padding:10px 11px;color:#1b3547;min-height:40px}.field textarea{min-height:92px;resize:vertical}.form-help{font-size:.72rem;color:#91a0aa;line-height:1.5}.calc-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:18px}.calc-nav{display:grid;gap:5px;align-content:start}.calc-tab{background:white;border:1px solid #e1e9ed;border-radius:9px;text-align:left;padding:11px 13px;color:#597180;font-size:.83rem;font-weight:700}.calc-tab.active{background:#e7f7f2;border-color:#90d7c6;color:#087b65}.calc-result{background:#0f3042;color:white;border-radius:12px;padding:23px;margin-top:18px}.calc-result .result-label{font-size:.75rem;color:#9ac5c5}.calc-result strong{font:800 2rem Manrope;display:block;margin:7px 0}.calc-result small{font-size:.77rem;color:#b8d2d7;line-height:1.5}.calc-secondary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.calc-secondary div{background:#f3f8f9;padding:12px;border-radius:9px}.calc-secondary span{font-size:.71rem;color:#8298a4;display:block}.calc-secondary strong{font-size:.91rem;display:block;margin-top:4px}.modal-backdrop{position:fixed;inset:0;background:rgba(7,25,37,.55);z-index:20;display:grid;place-items:center;padding:18px}.modal{background:white;width:min(100%,590px);max-height:min(92vh,900px);overflow:auto;border-radius:16px;box-shadow:0 25px 75px rgba(0,0,0,.23)}.modal-head{padding:20px 23px;border-bottom:1px solid #e7edf0;display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0;font:800 1.1rem Manrope}.icon-button{border:0;background:none;font-size:1.35rem;color:#8496a1}.modal-body{padding:22px 23px}.modal-foot{padding:15px 23px;border-top:1px solid #edf1f3;display:flex;justify-content:flex-end;gap:9px}.settings-list{display:grid;gap:15px}.settings-list h3{margin:0 0 6px;font:800 .93rem Manrope}.settings-list p{margin:0 0 10px;color:#7c919d;font-size:.76rem;line-height:1.5}.settings-actions{display:flex;gap:8px;flex-wrap:wrap}.file-input{display:none}#toast{position:fixed;bottom:22px;right:22px;background:#143748;color:white;padding:11px 16px;border-radius:9px;box-shadow:0 8px 30px #0e203144;opacity:0;transform:translateY(12px);transition:.2s;pointer-events:none;z-index:40;font-size:.82rem}#toast.show{opacity:1;transform:none}.insight{background:#eff8f6;border:1px solid #d6ede6;border-radius:12px;padding:16px;font-size:.8rem;line-height:1.6;color:#466a6a}.insight strong{color:#1b6659}.goal-card{padding:18px}.goal-card h3{margin:0 0 8px;font:800 1rem Manrope}.goal-card .goal-meta{display:flex;justify-content:space-between;font-size:.74rem;color:#8195a0}.goal-card .goal-value{font:800 1.28rem Manrope;margin:10px 0}.goal-card .goal-actions{margin-top:13px;display:flex;gap:6px}.snapshot-list{display:grid;gap:8px}.snapshot-row{display:flex;justify-content:space-between;border-bottom:1px solid #edf1f2;padding:10px 0;font-size:.78rem}.risk-note{font-size:.74rem;color:#8196a2;line-height:1.5;margin-top:10px}
@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid.lower{grid-template-columns:repeat(2,1fr)}.dashboard-grid.lower>.card:last-child{grid-column:1/-1}}@media(max-width:1050px){.app-shell{display:block}.sidebar{position:fixed;left:-265px;top:0;bottom:0;width:248px;z-index:30;transition:left .2s}.sidebar.open{left:0}.mobile-menu{display:block}.topbar{padding:0 20px}main{padding:26px 18px 60px}.dashboard-grid,.section-grid,.split-layout{grid-template-columns:1fr}.donut-layout{justify-content:center}}@media(max-width:600px){.page-head{display:block}.head-actions{justify-content:flex-start;margin-top:17px}.metric-grid,.dashboard-grid.lower{grid-template-columns:1fr}.dashboard-grid.lower>.card:last-child{grid-column:auto}.metric{min-height:auto}.top-actions .ghost-button span{display:none}.breadcrumb{font-size:.66rem}.panel{padding:18px}.donut{width:145px;height:145px}.donut-layout{gap:12px}.calc-layout{grid-template-columns:1fr}.calc-nav{display:flex;overflow-x:auto;padding-bottom:5px}.calc-tab{white-space:nowrap}.form-grid{grid-template-columns:1fr}.calc-secondary{grid-template-columns:1fr}.notice{align-items:flex-start;flex-direction:column}.chart-wrap{height:185px}}

/* Dark appearance: shared surfaces cover every page and modal. */
:root[data-theme="dark"]{color-scheme:dark;color:#e2ecf3;background:#0b1520}
[data-theme="dark"] .sidebar{background:#0c1926}
[data-theme="dark"] .topbar{background:#101e2b;border-color:#293b49}
[data-theme="dark"] :is(.card,.modal,.calc-tab,.button){background:#142432;border-color:#2b4050;color:#e2ecf3}
[data-theme="dark"] :is(.ghost-button,.mobile-menu,.breadcrumb strong,.mini-stat strong){color:#d0e1ec}
[data-theme="dark"] :is(.subhead,.metric-top,.metric-note,.panel-caption,.chart-labels,.legend-name,.mini-stat,.progress-summary,.activity-meta,.muted,.summary-item span,.bar-labels,.chart-key,.empty,.form-help,.settings-list p,.goal-meta,.risk-note,.calc-secondary span){color:#a4b8c6}
[data-theme="dark"] :is(.mini-stat,.activity-row,.data-table td,.modal-head,.modal-foot,.snapshot-row,.bars){border-color:#2b4050}
[data-theme="dark"] .data-table th{background:#10202d;color:#a4b8c6}
[data-theme="dark"] .data-table tr:hover td{background:#1b3040}
[data-theme="dark"] :is(.notice,.insight){background:#12342f;border-color:#28584e;color:#b1ded2}
[data-theme="dark"] :is(.notice button,.insight strong,.eyebrow,.panel-head .mini-link){color:#70dfc0}
[data-theme="dark"] :is(.metric-icon,.pill,.avatar){background:#1b3c36;color:#7ee2c7}
[data-theme="dark"] .pill.business{background:#433223;color:#efb77f}
[data-theme="dark"] .progress-track{background:#2c4250}
[data-theme="dark"] .field label{color:#b9ccd8}
[data-theme="dark"] :is(.field input,.field select,.field textarea){background:#0d1c29;border-color:#365061;color:#e2ecf3}
[data-theme="dark"] .calc-secondary div{background:#1b3040}
[data-theme="dark"] .calc-tab.active{background:#1b4038;border-color:#4aa98f;color:#8aebcf}
[data-theme="dark"] .button:hover{background:#213c49;border-color:#629f96}
[data-theme="dark"] .button.primary{background:#0e806d;border-color:#25a98f;color:#fff}
[data-theme="dark"] .button.primary:hover{background:#11947e}
[data-theme="dark"] .button.danger{color:#ffaaa2;border-color:#79504e}
[data-theme="dark"] .positive{color:#69dbb5!important}
[data-theme="dark"] .negative{color:#ffaaa2!important}
@media(max-width:600px){.top-actions{gap:10px}.topbar{gap:8px;padding-inline:14px}.top-actions .ghost-button{padding:5px}.avatar{flex:none}}

[data-theme="dark"]{--donut-center:#142432}

/* Wrap allocation legends below the chart when the card is too narrow. */
.donut-layout{flex-wrap:wrap}
.legend{flex:1 1 150px;max-width:100%}
.legend-row{min-width:0}
.legend-name{min-width:0;white-space:normal;overflow-wrap:anywhere}
.legend-row strong{flex-shrink:0;white-space:nowrap}
[hidden]{display:none!important}
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}
.auth-card{width:min(100%,440px);padding:32px}
.auth-card h1{font:800 1.7rem Manrope}
.auth-card p{line-height:1.6}
.cloud-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
