:root{--bg:#eef2ef;--surface:#fff;--surface-2:#f7f8f5;--ink:#17221d;--muted:#66736d;--line:#d9e0dc;--forest:#12372a;--forest-soft:#dce9e2;--coral:#df684d;--gold:#dcae37;--green:#258264;--danger:#b63b36;--shadow:0 12px 30px #142a2014;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;font-family:Trebuchet MS,Segoe UI,sans-serif}:root[data-theme=dark]{--bg:#121815;--surface:#1b2420;--surface-2:#222d28;--ink:#f3f4ee;--muted:#a5b1aa;--line:#35423c;--forest:#7fc5a5;--forest-soft:#263d33;--shadow:0 12px 30px #0000003d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root[data-theme=system]{--bg:#121815;--surface:#1b2420;--surface-2:#222d28;--ink:#f3f4ee;--muted:#a5b1aa;--line:#35423c;--forest:#7fc5a5;--forest-soft:#263d33;--shadow:0 12px 30px #0000003d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background-color:var(--bg);background-image:linear-gradient(#12372a09 1px,#0000 1px),linear-gradient(90deg,#12372a09 1px,#0000 1px);background-size:28px 28px;min-width:0;min-height:100vh;margin:0}button,input,select{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2{letter-spacing:0;color:var(--ink);font-family:Georgia,Times New Roman,serif}h1{margin-bottom:7px;font-size:clamp(1.85rem,6vw,2.7rem);line-height:1.05}h2{margin-bottom:8px;font-size:1.15rem}p{color:var(--muted);line-height:1.5}a{color:inherit}.app-shell{min-height:100vh}.sidebar{display:none}.app-main{flex-direction:column;min-width:0;min-height:100vh;display:flex}.page{flex:1;width:min(1180px,100%);margin:0 auto;padding:22px 16px 40px}.app-footer{color:var(--muted);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:5px;padding:10px 16px 92px;font-size:.72rem;display:flex}.app-footer a{color:var(--forest);text-underline-offset:3px;font-weight:700}.mobile-header{text-align:center;background:var(--surface);border-bottom:1px solid var(--line);z-index:20;grid-template-columns:40px 1fr 40px;align-items:center;height:58px;padding:0 16px;display:grid;position:sticky;top:0}.mobile-header>:last-child{color:var(--coral);justify-self:end}.brand{color:var(--forest);align-items:center;gap:11px;padding:6px 10px 24px;display:flex}.brand strong{font-family:Georgia,serif;font-size:1.15rem}.navigation{gap:4px;display:grid}.navigation a{min-height:44px;color:var(--muted);border-radius:6px;align-items:center;gap:12px;padding:0 12px;text-decoration:none;display:flex}.navigation a:hover,.navigation a.active{color:var(--forest);background:var(--forest-soft)}.local-note{color:var(--muted);margin-top:auto;padding:18px 10px 4px;font-size:.78rem;line-height:1.45}.bottom-nav{z-index:30;background:var(--surface);border-top:1px solid var(--line);height:72px;padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-nav a{min-width:0;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:.65rem;text-decoration:none;display:flex}.bottom-nav a.active{color:var(--forest)}.drawer-backdrop,.modal-backdrop{z-index:60;background:#0a140f80;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);width:min(320px,88vw);box-shadow:var(--shadow);padding:18px}.drawer-title{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.modal-backdrop{justify-content:center;align-items:flex-end}.modal{width:min(720px,100%);max-height:92vh;padding:22px 18px calc(22px + env(safe-area-inset-bottom));background:var(--surface);border-radius:8px 8px 0 0;overflow:auto}.offline-banner,.backup-reminder{text-align:center;justify-content:center;align-items:center;gap:8px;padding:9px 16px;font-size:.8rem;display:flex}.offline-banner{color:#812c25;background:#f8dfd8}.backup-reminder{color:#634c0d;background:#f6e8b9;text-decoration:none}.update-toast{z-index:80;background:var(--ink);color:var(--surface);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:10px;padding:12px;display:flex;position:fixed;bottom:82px;left:12px;right:12px}.update-toast span{flex:1;font-size:.82rem}.page-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-heading p{margin-bottom:0}.eyebrow{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:5px;font-size:.68rem;font-weight:700;display:block}.net-worth{background:var(--forest);color:#fff;border-radius:8px;width:100%;padding:17px 18px}.net-worth span{opacity:.75;font-size:.75rem;display:block}.net-worth strong{margin-top:3px;font:700 1.65rem Georgia,serif;display:block}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px;display:grid}.metric{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--gold);min-height:122px;box-shadow:var(--shadow);border-radius:7px;flex-direction:column;padding:15px;display:flex}.metric svg{color:var(--gold);margin-bottom:14px}.metric span{color:var(--muted);font-size:.73rem}.metric strong{overflow-wrap:anywhere;margin-top:4px;font-size:1rem}.metric.positive{border-top-color:var(--green)}.metric.positive svg{color:var(--green)}.metric.negative{border-top-color:var(--coral)}.metric.negative svg{color:var(--coral)}.panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;margin-bottom:16px;padding:18px}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.section-heading h2{margin:0}.timeline-heading{flex-wrap:wrap;align-items:flex-start}.timeline-heading p{margin:5px 0 0;font-size:.8rem}.chart-period{border:1px solid var(--line);background:var(--surface-2);border-radius:6px;grid-template-columns:repeat(4,auto);padding:3px;display:inline-grid}.chart-period button{height:32px;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:0 10px;font-size:.72rem;font-weight:700}.chart-period button.active{background:var(--forest);color:#fff}.chart-note{color:var(--muted);margin:8px 0 0;font-size:.7rem}.dashboard-grid,.backup-grid{gap:16px;display:grid}.chart-panel{min-height:455px}.balance-chart-panel{min-height:430px}.balance-heading{flex-wrap:wrap;align-items:flex-start}.balance-heading p{margin:5px 0 0;font-size:.8rem}.balance-highlights{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:min(100%,390px);display:grid}.balance-highlights div{background:var(--surface-2);border-left:3px solid #3f6fa3;min-width:0;padding:10px 12px}.balance-highlights div:last-child{border-left-color:var(--gold)}.balance-highlights span{color:var(--muted);font-size:.68rem;display:block}.balance-highlights strong{overflow-wrap:anywhere;margin-top:3px;font-size:.9rem;display:block}.button{border:1px solid var(--forest);background:var(--forest);color:#fff;border-radius:5px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-weight:700;display:inline-flex}.button:hover{filter:brightness(1.08)}.button:disabled{opacity:.6;cursor:wait}.button.secondary{color:var(--forest);background:0 0}.button.small{min-height:34px;padding:0 10px;font-size:.75rem}.danger-button{background:var(--danger);border-color:var(--danger)}.icon-button{width:38px;height:38px;color:var(--muted);background:0 0;border:0;border-radius:50%;flex:0 0 38px;place-items:center;display:inline-grid}.icon-button:hover{background:var(--surface-2);color:var(--ink)}.icon-button.danger{color:var(--danger)}.form-panel{max-width:760px}.form-grid{gap:14px;display:grid}.form-grid label{min-width:0;color:var(--muted);gap:6px;font-size:.76rem;font-weight:700;display:grid}input,select{border:1px solid var(--line);background:var(--surface-2);width:100%;min-width:0;height:44px;color:var(--ink);border-radius:5px;outline:none;padding:0 11px}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #25826424}fieldset{border:0;margin:0;padding:0}fieldset legend{color:var(--muted);margin-bottom:8px;font-size:.76rem;font-weight:700}.form-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding-top:4px;display:flex}.form-error{color:var(--danger);font-size:.82rem}.saved-label{color:var(--green);font-size:.8rem;font-weight:700}.segmented{border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(3,1fr);display:grid;overflow:hidden}.segmented label{background:var(--surface-2);border-right:1px solid var(--line);cursor:pointer;justify-content:center;align-items:center;min-height:44px;display:flex}.segmented label:last-child{border:0}.segmented input{width:auto;height:auto;margin-right:7px}.filters{gap:9px;margin-bottom:14px;display:grid}.search-field{position:relative}.search-field svg{color:var(--muted);position:absolute;top:13px;left:12px}.search-field input{padding-left:38px}.data-list,.transaction-list,.budget-list{display:grid}.data-row,.transaction-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:13px 0;display:grid}.data-row:last-child,.transaction-row:last-child{border-bottom:0}.data-row>div:first-child,.transaction-row>div:nth-child(2){min-width:0}.data-row strong,.transaction-row strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.data-row span,.transaction-row span{color:var(--muted);margin-top:3px;font-size:.72rem;display:block}.data-row b,.transaction-row b{white-space:nowrap;font-size:.83rem}.transaction-row{grid-template-columns:34px minmax(0,1fr) auto}.movement-icon{width:32px;height:32px;color:var(--coral);background:#f8e2dc;border-radius:50%;place-items:center;display:grid}.movement-icon.income{color:var(--green);background:var(--forest-soft)}.row-actions{display:flex}.amount-positive{color:var(--green)!important}.amount-negative{color:var(--danger)!important}.entity-grid{gap:12px;display:grid}.entity-card{background:var(--surface);border:1px solid var(--line);min-width:0;box-shadow:var(--shadow);border-radius:7px;grid-template-columns:42px minmax(0,1fr) auto;align-items:start;gap:13px;padding:17px;display:grid}.entity-card.archived{opacity:.6}.entity-icon{width:42px;height:42px;color:var(--gold);background:#f7edcf;border-radius:6px;place-items:center;display:grid}.entity-icon.coral{color:var(--coral);background:#f8e2dc}.entity-icon.green{color:var(--green);background:var(--forest-soft)}.entity-card h2{margin:0 0 7px}.entity-grow{min-width:0}.entity-value{overflow-wrap:anywhere;font-size:1.25rem;display:block}.entity-card small{color:var(--muted);margin-top:7px;display:block}.progress{background:var(--line);border-radius:4px;height:7px;margin-top:13px;overflow:hidden}.progress span{border-radius:inherit;background:var(--green);height:100%;display:block}.progress.over span{background:var(--danger)}.loan-card{grid-column:span 1}.loan-status{color:var(--green);text-transform:uppercase;margin-bottom:5px;font-size:.68rem;font-weight:700;display:inline-block}.loan-status.overdue{color:var(--danger)}.loan-details{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px;margin-top:13px;padding-top:12px;display:grid}.loan-details span{min-width:0;color:var(--muted);font-size:.7rem}.loan-details b{overflow-wrap:anywhere;color:var(--ink);margin-top:2px;font-size:.76rem;display:block}.loan-collect{margin-top:14px}.budget-summary{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px;display:grid}.budget-summary label{color:var(--muted);grid-column:1/-1;font-size:.75rem;font-weight:700}.budget-summary div{background:var(--forest);color:#fff;border-radius:6px;padding:14px}.budget-summary span{opacity:.75;font-size:.7rem;display:block}.budget-summary strong{overflow-wrap:anywhere;margin-top:4px;display:block}.budget-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 14px;min-width:0;padding:14px 0;display:grid}.budget-row:last-child{border:0}.budget-row>div:first-child{min-width:0}.budget-row>div:first-child span{color:var(--muted);margin-top:3px;font-size:.75rem;display:block}.budget-row .progress{grid-area:2/1/auto/-1;margin:0}.backup-card>svg{color:var(--green);margin-bottom:16px}.backup-card .button{margin-top:8px}.file-button input{display:none}.validated-file,.status-message{color:var(--green);align-items:center;gap:8px;margin-top:14px;font-size:.82rem;font-weight:700;display:flex}.restore-actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.status-message{background:var(--forest-soft);border-radius:6px;padding:13px 16px}.privacy-note{border-left:4px solid var(--gold);background:var(--surface);gap:13px;padding:17px;display:flex}.privacy-note svg{color:var(--gold);flex:none}.privacy-note p{margin:4px 0 0;font-size:.82rem}.empty-state,.loading{color:var(--muted);text-align:center;padding:38px 18px}.loading{place-items:center;min-height:40vh;display:grid}@media (width>=620px){.page{padding:30px 26px 105px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.full{grid-column:1/-1}.filters{grid-template-columns:minmax(220px,2fr) repeat(3,minmax(130px,1fr))}.entity-grid,.backup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.net-worth{width:auto;min-width:255px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.modal-backdrop{align-items:center;padding:24px}.modal{border-radius:8px}}@media (width>=960px){.app-shell{grid-template-columns:236px minmax(0,1fr);display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.mobile-header,.bottom-nav{display:none}.page{padding:42px 42px 64px}.metric-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.dashboard-grid{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr)}.entity-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.update-toast{width:430px;bottom:24px;left:auto;right:24px}}@media (width<=430px){.table-panel{padding:12px}.data-row{grid-template-columns:minmax(0,1fr) auto}.data-row .row-actions{grid-column:1/-1;justify-content:flex-end;margin-top:-6px}.page-heading>.button{width:100%}.entity-card{grid-template-columns:38px minmax(0,1fr)}.entity-card .row-actions{grid-column:1/-1;justify-content:flex-end}.entity-icon{width:38px;height:38px}.update-toast{flex-wrap:wrap}}@media (width<=280px){.metric-grid{grid-template-columns:1fr}.bottom-nav a span{display:none}.page{padding-inline:10px}}
