@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap";:root{--ink:#253e33;--muted:#596b5c;--line:#dce4d8;--green:#28523e;--paper:#f7f8f4}*{box-sizing:border-box}body{color:var(--ink);background:var(--paper);margin:0;font:15px/1.5 DM Sans,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit;background:0 0;border:0;min-height:44px;padding:10px 14px}button:disabled,fieldset:disabled{opacity:.6;cursor:wait}:is(button:focus-visible,a:focus-visible,summary:focus-visible){outline-offset:3px;outline:3px solid #689152}input,select,textarea{min-height:46px;color:var(--ink);background:#fff;border:1px solid #a8b6a4;border-radius:9px;width:100%;min-width:0;padding:11px 12px}input:focus,select:focus,textarea:focus{outline-offset:1px;outline:2px solid #689152}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-1px;margin-bottom:0;font:600 32px/1.2 Manrope,sans-serif}h2{font:600 32px/1.25 Manrope,sans-serif}h3{margin-bottom:0;font:700 16px/1.4 Manrope,sans-serif}fieldset{border:0;min-width:0;margin:0;padding:0}.shell{min-height:100vh;display:flex}aside{border-right:1px solid var(--line);background:#f0f3ec;flex-direction:column;width:220px;padding:35px 20px;display:flex;position:fixed;inset:0 auto 0 0}.brand{letter-spacing:-1px;align-items:center;gap:8px;font:800 26px Manrope,sans-serif;display:flex}.mark{background:var(--green);color:#e5edcd;text-align:center;border-radius:10px;width:35px;height:38px;font-size:29px;line-height:34px}.dot{color:#67804b;margin-left:-8px}nav{flex-direction:column;gap:8px;margin-top:55px;display:flex}nav button{text-align:left;color:var(--muted);border-radius:9px;align-items:center;gap:13px;font-size:14px;display:flex}nav button .nav-icon{flex-shrink:0;place-items:center;width:24px;display:grid}.mobile-nav-label{display:none}nav button.active{color:#244b36;background:#dfe8d8;font-weight:700}.household{color:var(--muted);margin-top:auto;padding:16px;font-size:13px}main{flex:1;min-width:0;margin-left:220px}header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:75px;padding:0 40px;font-size:13px;display:flex}.signed-in{color:var(--muted)}.page{max-width:1250px;margin:0 auto;padding:40px}.title-row{justify-content:space-between;align-items:center;gap:15px;margin-bottom:30px;display:flex}.primary{background:var(--green);color:#fff;border-radius:9px;padding:12px 20px;font-weight:600}.primary:hover{background:#1c402e}.filters{align-items:center;gap:12px;margin-bottom:25px;display:flex}.filters input{width:185px}.segmented{background:#e7ede1;border-radius:10px;padding:4px;display:flex}.segmented button{color:#526549;border-radius:7px;padding:9px 18px;font-size:13px}.segmented .selected{color:#254c36;background:#fff;box-shadow:0 1px 3px #253e3314}.stats{grid-template-columns:1fr 1fr;gap:22px;margin-bottom:28px;display:grid}.stats article{border:1px solid var(--line);background:#fff;border-radius:15px;padding:28px}.stats article>span{color:var(--muted);font-size:14px}.stats h2{letter-spacing:-1px;margin:18px 0 8px;font-size:40px}.stats p{color:var(--muted);margin:0;font-size:13px}.stats .hero-stat{background:var(--green);color:#f6faef;border-color:var(--green)}.stats .hero-stat span,.stats .hero-stat p{color:#d0dfc8}.progress{background:#e9eee3;border-radius:7px;height:7px;margin-top:20px;overflow:hidden}.progress i{background:#819953;border-radius:7px;height:100%;display:block}.two-col{grid-template-columns:1fr 1.15fr;gap:24px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:14px;min-width:0;padding:25px}.panel-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.panel-title h2{letter-spacing:-.6px;margin:0;font-size:23px}.text-button{color:#365c35;text-underline-offset:3px;padding:8px 6px;font-size:13px;font-weight:600;text-decoration:underline}.categories{gap:22px;margin-top:30px;display:grid}.category-label{justify-content:space-between;align-items:center;gap:8px;font-size:13px;display:flex}.category-label span{align-items:center;gap:9px;display:flex}.category-label i{border-radius:50%;flex-shrink:0;width:8px;height:8px}.categories .progress{height:5px;margin-top:10px}.expense-list{margin:0;padding:0;list-style:none}.expense-list li{border-bottom:1px solid #e6ecdf;position:relative}.expense-list li:last-child{border-bottom:0}.expense-main{text-align:left;justify-content:space-between;align-items:flex-start;gap:12px;width:100%;padding:17px 0;display:flex}.expense-main:hover{background:#f8faf4}.expense-info{flex-direction:column;gap:4px;min-width:0;display:flex}.expense-info strong{overflow-wrap:anywhere;font-size:14px}.expense-info span,.expense-info small{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.expense-info small{color:#62715d}.amount{white-space:nowrap;font-size:14px}.repeat{border:1px solid var(--line);color:#365c35;border-radius:7px;min-height:44px;margin:0 0 14px;padding:6px 10px;font-size:12px}.transaction-filters{gap:12px;margin-bottom:16px;display:flex}.transaction-filters input{flex:1}.transaction-filters select{width:160px}.result-summary{color:var(--muted);margin:0;font-size:13px}.bill-grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.bill h2{margin-bottom:18px;font-size:28px}.bill h2 small{color:var(--muted);font:13px DM Sans,sans-serif}.bill p{color:var(--muted);font-size:13px}.bill .primary{width:100%;margin-top:12px}.bill .overdue{color:#9a4834;font-weight:600}.helper{color:var(--muted);margin:18px 0;font-size:13px;line-height:1.7}.empty{text-align:center;color:var(--muted);padding:40px 20px}.empty h3{color:var(--ink)}.empty p{margin:10px 0}.settings{max-width:760px}.settings form{margin-top:25px}.settings>p{margin-top:18px;font-size:14px}.form-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}label{flex-direction:column;gap:8px;margin-bottom:18px;font-size:14px;font-weight:500;display:flex}.form-grid label{margin:0}label input,label select{font-weight:400}hr{border:0;border-top:1px solid var(--line);margin:30px 0}.notice{color:#315f38;background:#e9f1df;border-radius:8px;margin-bottom:20px;padding:12px 16px;font-size:14px}.error{color:#943e29;background:#fff0e9;border-radius:8px;padding:14px;font-size:14px;line-height:1.6}.error button{color:#843420;text-decoration:underline}.modal{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:18px;width:520px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);padding:26px;overflow:auto;box-shadow:0 25px 100px #17342433}.modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#19322577}.icon-button{border-radius:50%;width:44px;padding:8px;font-size:18px}.icon-button:hover{background:#eff3e9}.amount-label{font-size:14px}.amount-input{padding:12px 14px;font:600 34px Manrope,sans-serif}.modal-actions{justify-content:flex-end;align-items:center;gap:10px;margin-top:24px;display:flex}.danger{color:#9b4030;margin-right:auto}.note-details{margin-top:20px}.note-details summary{cursor:pointer;min-height:44px;color:var(--muted);font-size:13px;line-height:44px}.note-details label{margin:6px 0 0}.field-error{color:#9b4030;font-size:13px}[aria-invalid=true]{border-color:#a54934}.delete-confirm{background:#fff2eb;border-radius:8px;margin-top:20px;padding:15px;font-size:14px}.delete-confirm p{margin:0 0 10px}.delete-confirm button{font-weight:600}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:1100px){aside{width:185px;padding:28px 14px}main{margin-left:185px}.page{padding:30px 25px}header{padding:0 25px}.two-col{grid-template-columns:1fr}.bill-grid{grid-template-columns:1fr 1fr}}@media (max-width:760px){.shell{--mobile-nav-height:72px;--mobile-action-height:50px;--mobile-action-gap:12px}aside{width:auto;height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0px));padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));z-index:5;border-right:0;border-top:1px solid var(--line);background:#f3f6ee;inset:auto 0 0}.brand,.household{display:none}nav{grid-template-columns:repeat(6,minmax(0,1fr));gap:2px;width:100%;height:100%;margin:0;display:grid}nav button{text-align:center;flex-direction:column;justify-content:center;gap:5px;width:100%;min-width:0;height:100%;min-height:0;padding:5px 0;font-size:10px;line-height:1.2}nav button .nav-icon{width:24px;height:24px}.desktop-nav-label{display:none}.mobile-nav-label{white-space:nowrap;display:block}input,select,textarea{font-size:16px}main{padding-bottom:calc(var(--mobile-nav-height) + var(--mobile-action-height) + var(--mobile-action-gap) + 24px + env(safe-area-inset-bottom,0px));margin-left:0}header{height:58px;padding:0 18px;font-size:12px}.signed-in{font-size:12px}.page{padding:25px 18px}h1{font-size:28px}.title-row{margin-bottom:24px}.add-button{bottom:calc(var(--mobile-nav-height) + var(--mobile-action-gap) + env(safe-area-inset-bottom,0px));left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));z-index:4;width:auto;max-width:none;min-height:var(--mobile-action-height);border-radius:12px;margin:0;position:fixed;box-shadow:0 4px 18px #22483322}.filters{flex-wrap:wrap;gap:9px}.segmented{flex:1}.segmented button{flex:1;padding:8px 10px;font-size:12px}.filters input{width:155px;padding:10px;font-size:16px}.stats{gap:12px;margin-bottom:20px}.stats article{padding:20px 16px}.stats article>span{min-height:36px;font-size:12px;display:block}.stats h2{margin:12px 0 8px;font-size:clamp(23px,5.7vw,32px)}.stats p{font-size:12px}.panel{padding:20px}.categories{gap:20px}.category-label{font-size:13px}.two-col{gap:20px}.bill-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr;gap:18px}.transaction-filters{flex-direction:column}.transaction-filters select{width:100%}.panel-title{gap:6px}.result-summary{font-size:12px}.expense-main{padding:17px 0}.expense-info strong,.amount{font-size:14px}.modal{max-height:calc(100dvh - 24px);margin:auto;padding:22px 20px}.modal h2{font-size:22px}.modal-actions{flex-wrap:wrap;gap:5px}.modal-actions button{padding:11px}.amount-input{font-size:34px}}@media (prefers-reduced-motion:no-preference){button{transition:background .12s}}.planning{margin-bottom:26px}.forecast{grid-template-columns:1fr 1fr;gap:28px;margin-bottom:24px;display:grid}.forecast-amount{letter-spacing:-1px;margin:16px 0;font:600 35px Manrope,sans-serif}.forecast details summary,.balance-history summary{cursor:pointer;min-height:44px;padding:10px 0;font-size:14px;font-weight:600}.over{color:#9b4030!important}.due-list{max-height:300px;margin:0;padding:0;list-style:none;overflow:auto}.due-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 0;font-size:13px;display:flex}.due-list small{color:var(--muted);margin-top:5px;font-size:12px;display:block}.due-list strong{white-space:nowrap}.planning-grid{grid-template-columns:1fr 1fr}.budget-detail{color:var(--muted);margin:5px 0 0;font-size:12px}.planning .categories .progress{margin-top:8px}.balance-amount{margin:22px 0 10px;font-size:18px;font-weight:600}.planning h2{margin-bottom:12px}.balance-history{margin-top:20px}.plan-inputs{gap:15px;margin-top:18px;display:grid}.plan-inputs>div{border-bottom:1px solid var(--line);padding-bottom:12px}.plan-inputs label{margin:0 0 5px}.checkbox-label{flex-direction:row;align-items:center;min-height:44px;font-size:12px;font-weight:400;display:flex}.checkbox-label input{width:20px;height:20px;min-height:20px;accent-color:var(--green);flex-shrink:0}.split-field{margin-top:20px}.split-field .helper{margin:0}.forecast .helper{margin-bottom:0}@media (max-width:760px){.forecast,.planning-grid{grid-template-columns:1fr;gap:20px}.forecast-amount{font-size:32px}.planning .category-label{align-items:flex-start}.planning .category-label strong{text-align:right}.due-list li>div{flex-direction:column;display:flex}.planning .categories{gap:18px}}.income-section{position:relative}.income-add{margin-bottom:22px;margin-left:auto;display:block}.income-toolbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;display:flex}.income-toolbar select{width:170px}.income-toolbar .helper{margin:0}.income-people{margin-bottom:24px}.income-people h2{margin:20px 0 5px}.net-label{color:var(--muted);text-align:right;font-size:11px;font-weight:400;display:block}.payroll-fields{margin-top:20px}.paycheck-net{background:#eef4e7;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;margin:22px 0 0;padding:18px 14px;font-size:14px;display:flex}.paycheck-net strong{font-size:23px}.income-overview{border:1px solid var(--line);text-align:left;background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:18px;width:100%;margin-bottom:24px;padding:16px 22px;font-size:13px;display:flex}.income-overview span{color:var(--muted);font-size:12px}.income-overview strong{margin-left:auto;font-size:18px}@media (max-width:760px){.income-add{margin:0;display:block}.income-toolbar{flex-direction:column;align-items:stretch;gap:12px}.income-toolbar select{width:100%}.income-overview{flex-wrap:wrap;gap:8px;padding:16px}.income-overview span{width:100%}.income-overview strong{font-size:17px}.income-people{grid-template-columns:1fr}}.access-page{background:var(--paper);place-items:center;min-height:100dvh;padding:24px;display:grid}.access-card{border:1px solid var(--line);background:#fff;border-radius:18px;width:100%;max-width:430px;padding:35px;box-shadow:0 18px 60px #253e3309}.access-card .brand{margin-bottom:36px}.access-card h1{margin-bottom:12px;font-size:28px}.access-card>p{color:var(--muted);font-size:14px}.access-card form{margin-top:26px}.access-card .primary{width:100%}.access-card .helper{margin:24px 0 0;font-size:12px}.logout-button{text-underline-offset:3px;min-height:44px;margin-left:8px;padding:8px;font-size:12px;text-decoration:underline}.signed-in{align-items:center;display:flex}.access-card input{font-size:16px}@media (max-width:760px){.access-card{padding:28px 22px}.signed-in{font-size:11px}.logout-button{margin-left:2px;padding:6px;font-size:11px}}.cashflow,.data-tools{margin-bottom:24px}.cashflow-totals{grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0;display:grid}.cashflow-totals span{color:var(--muted,#66766d);margin-bottom:8px;font-size:13px;display:block}.cashflow-totals strong{font-size:clamp(18px,3vw,28px);font-weight:500;display:block}.cashflow summary,.change-list summary{cursor:pointer}.cashflow-table{overflow-x:auto}.cashflow table{border-collapse:collapse;width:100%;margin-top:16px;font-size:13px}.cashflow th,.cashflow td{text-align:right;white-space:nowrap;border-bottom:1px solid #e5e9e4;padding:12px 6px}.cashflow th:first-child{text-align:left}.data-actions{flex-wrap:wrap;align-items:center;gap:16px;margin:18px 0;display:flex}.backup-file{max-width:100%;font-size:13px}.backup-file input{max-width:100%;margin-top:8px;display:block}.restore-preview{border:1px solid #c7d6cc;border-radius:12px;padding:18px}.check-label{align-items:center;gap:10px;display:flex}.check-label input{width:auto}.change-list{margin:0;padding:0;list-style:none}.change-list>li{border-bottom:1px solid #e5e9e4;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 0;display:flex}.change-list details{flex:1;min-width:0}.change-list summary strong{font-weight:500}.change-list small{color:#66766d;margin-top:6px;display:block}.change-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f6f2;border-radius:8px;max-height:240px;padding:12px;font-size:12px;overflow:auto}.change-detail{margin-top:18px}.data-tools>p{line-height:1.6}@media (max-width:600px){.cashflow-totals{gap:8px}.cashflow-totals span{font-size:11px}.cashflow-totals strong{font-size:17px}.change-list summary{font-size:13px}}
