@font-face{font-family:Geist;src:url(/fonts/geist.woff2) format("woff2");font-weight:400 700;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader.woff2) format("woff2");font-weight:400 600;font-display:swap}:root{font-family:Geist,system-ui,sans-serif;color:#252820;background:#f5f3ed;line-height:1.45;--paper:#f5f3ed;--white:#fffdf7;--edge:#e8e3d9;--muted:#5e6258;--green:#254a39;--deep:#1e3c30;--soft:#e9eee6;--callum:#3f6378;--chelsea:#9b503d;--joint:#557957;--shadow:0 1px 2px #2d332b08}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #557d61;outline-offset:3px}a{color:var(--green)}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Newsreader,Georgia,serif;font-weight:500;line-height:1.03}h1{font-size:clamp(2.3rem,3.8vw,3.35rem);letter-spacing:-.04em}h2{font-size:1.65rem;letter-spacing:-.025em}h3{font-size:1.3rem;letter-spacing:-.015em}svg{width:19px;height:19px;flex:none;vertical-align:middle}.skip{position:fixed;z-index:10;top:12px;left:12px;background:var(--white);padding:10px 16px;transform:translateY(-150%)}.skip:focus{transform:none}.layout{display:grid;min-height:100dvh;grid-template-columns:218px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:34px;border-right:1px solid var(--edge);padding:30px 18px 20px;background:#f8f6ef;z-index:1}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap}.brand-icon{width:43px;height:43px;display:grid;place-items:center;border-radius:12px;background:var(--green);color:#fffdf7;flex:none}.brand-icon svg{width:22px;height:22px;stroke-width:1.7}.brand strong{display:block;font:500 1.64rem/1 Newsreader,Georgia,serif;letter-spacing:-.035em}.brand small,.signed-in small{display:block;color:var(--muted);font-size:.73rem;margin-top:3px}.sidebar nav{display:grid;gap:5px}.nav-link{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid transparent;border-radius:9px;background:transparent;padding:10px 12px;color:#51584c;font-size:.86rem;font-weight:550}.nav-link svg{stroke-width:1.7}.nav-link:hover,.nav-link.active{color:var(--deep);background:#e7ede4;border-color:#e1e8dc}.sidebar-footer{margin-top:auto;display:grid;gap:14px}.sidebar-settings{justify-content:flex-start!important}.signed-in{display:flex;align-items:center;gap:11px;border-top:1px solid var(--edge);padding:17px 2px 0;font-size:.85rem}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#314d5c;background:#e4edf1;font-size:.78rem;font-weight:700}.avatar.chelsea{color:#713a2e;background:#f1e4dc}.workspace{min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px max(24px,4vw);border-bottom:1px solid var(--edge);background:#fbf9f3}.top-actions,.page-actions,.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.scope,.segmented{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--edge);background:#efede5;border-radius:10px}.scope button,.segmented button{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;border:0;background:transparent;border-radius:7px;padding:7px 13px;color:#50564c;font-size:.8rem;font-weight:550}.scope button[aria-pressed=true],.segmented button[aria-pressed=true]{background:var(--white);color:var(--deep);box-shadow:0 1px 3px #242b2314}.dot{width:8px;height:8px;border-radius:50%;background:var(--joint);display:inline-block;flex:none}.dot.callum{background:var(--callum)}.dot.chelsea{background:var(--chelsea)}.btn{border:1px solid var(--edge);border-radius:9px;background:var(--white);min-height:38px;padding:7px 12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;font-size:.8rem;font-weight:600}.btn:hover{border-color:#c5d1c1;background:#f1f4ec}.btn.primary{background:var(--green);border-color:var(--green);color:#fffdf7;padding-inline:16px}.btn.primary:hover{background:#326047}.btn.text{background:transparent;border-color:transparent;color:var(--green)}.btn.text:hover{background:var(--soft)}.btn.danger{color:#a13326}.btn.small{min-height:29px;padding:4px 8px;font-size:.75rem}.btn.small svg{width:15px;height:15px}.btn.icon-btn{width:38px;padding:0;flex:none}.btn.right-icon{flex-direction:row-reverse}.mobile-settings{display:none}.content{max-width:1440px;margin:auto;padding:29px max(24px,4vw) 50px}.page-heading,.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:17px}.section-head{margin:26px 0 12px}.period{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.period-date{display:flex;align-items:center;gap:7px;white-space:nowrap;font-size:.78rem}.period-date .btn{width:30px;min-height:33px}.period-date strong{text-align:center;min-width:95px}.period-date svg{height:16px;width:16px}.privacy-note{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.82rem;margin:0 0 14px}.privacy-note svg{width:15px;height:15px}.overview-grid{display:grid;grid-template-columns:minmax(0,1.62fr) minmax(0,1fr);gap:17px;align-items:start}.stack{display:grid;gap:16px;min-width:0}.two-grid,.goal-grid{display:grid;gap:16px;align-items:start;grid-template-columns:repeat(2,minmax(0,1fr))}.goal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-span{grid-column:1/-1}.hero{overflow:hidden;position:relative;border-radius:17px;background:#244737;color:#f9f8ef;min-width:0;padding:21px 23px 15px}.hero-copy,.hero-bottom{position:relative}.hero-rings{position:absolute;pointer-events:none;right:-87px;top:-159px;width:335px;height:335px;border-radius:50%;border:1px solid #b6cb9380;box-shadow:0 0 0 20px #244737,0 0 0 21px #b6cb9360,0 0 0 41px #244737,0 0 0 42px #b6cb9340,0 0 0 64px #244737,0 0 0 65px #b6cb932a;opacity:.43}.hero-label,.hero-bottom span{display:flex;align-items:center;gap:8px;color:#e2e9d9;font-size:.8rem}.hero-label svg{height:17px;width:17px;stroke-width:1.6}.hero-money{font:500 clamp(2.75rem,5.1vw,4.25rem)/1 Newsreader,Georgia,serif;letter-spacing:-.06em;margin:11px 0 3px}.hero-copy p{font-size:.76rem;color:#e0e8da}.hero-bottom{margin-top:18px;padding-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border-top:1px solid #edf4ed38}.hero-bottom>div+div{border-left:1px solid #edf4ed38;padding-left:11px}.hero-bottom span{font-size:.7rem;gap:5px}.hero-bottom span svg{width:14px;height:14px}.hero-bottom strong{font-size:1rem;font-variant-numeric:tabular-nums}.card{border:1px solid var(--edge);border-radius:14px;background:var(--white);padding:17px 18px;min-width:0;box-shadow:var(--shadow)}.card-heading,.goal-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px}.card-heading h2{line-height:1}.legend{display:flex;gap:10px;font-size:.66rem;color:var(--muted);white-space:nowrap}.legend span{display:flex;align-items:center;gap:4px}.legend i{width:12px;height:7px;background:#47755b;border-radius:2px}.hatched{background:repeating-linear-gradient(135deg,#668d6f 0 2px,#e4eadc 2px 5px)!important}.chart-row{display:grid;grid-template-columns:31px minmax(0,1fr);gap:6px;align-items:center;font-size:.72rem;color:var(--muted);margin:8px 0}.chart-track,.progress{display:flex;height:8px;background:#eeece2;border-radius:10px;overflow:hidden}.chart-track>span{display:block;height:100%}.income,.progress>span{background:#5b8265}.spent{background:#38584d}.saved{background:#b99a56}.chart-track .out{background:repeating-linear-gradient(135deg,#8c8063 0 2px,#eee9da 2px 5px)!important}.cashflow-rows{margin-top:10px}.value-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.79rem;padding:4px 0;color:var(--muted)}.value-row strong{color:#292d25;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}table{width:100%;border-collapse:collapse;font-size:.76rem;font-variant-numeric:tabular-nums}th,td{padding:7px 0;text-align:right;border-bottom:1px solid #eee9df}th:first-child{text-align:left}thead th{font-size:.65rem;font-weight:500;color:var(--muted)}tbody th{font-weight:600}tbody .dot{margin-right:6px}.joint-line{margin-top:5px}.list-row{display:flex;align-items:center;gap:9px;padding:11px 0}.list-row+.list-row{border-top:1px solid #eee9df}.tile{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;flex:none;background:#e9eee5;color:#3f604a}.tile svg{width:17px;height:17px;stroke-width:1.7}.tile.bills,.tile.chelsea,.tile.down{background:#f0e9dc;color:#7b5438}.tile.callum,.tile.exchange{background:#e6edf0;color:#3f6378}.tile.savings{background:#e7eee6;color:#476c50}.row-detail{display:grid;gap:2px;flex:1;min-width:0}.row-detail strong,.row-amount strong{font-size:.79rem;font-weight:650;overflow-wrap:anywhere}.row-detail span{font-size:.7rem;color:var(--muted);overflow-wrap:anywhere}.row-amount{display:grid;justify-items:end;gap:3px;text-align:right;font-variant-numeric:tabular-nums;flex:none}.settlement-title{font:500 1.49rem/1.1 Newsreader,Georgia,serif}.settlement-value{font:500 2.12rem/1 Newsreader,Georgia,serif;color:var(--deep)}.muted,.empty,.hint{color:var(--muted);font-size:.8rem}.settle .muted{margin:5px 0 2px}.settle .actions{margin-top:11px}.empty{padding:9px 0}.deadline{display:flex;gap:11px;align-items:center;padding:12px 16px;background:#eaece2;border:1px solid #e2e7db;border-radius:12px;color:var(--green)}.deadline strong,.deadline span{display:block;font-size:.77rem}.deadline span{color:var(--muted);font-size:.73rem}.goal-heading{justify-content:flex-start;margin-bottom:14px}.goal-heading>div{flex:1;min-width:0}.goal-heading h3{overflow-wrap:anywhere}.goal-heading p{color:var(--muted);font-size:.7rem;margin-top:3px}.goal-percent{font-weight:650;color:var(--green);font-size:.83rem}.goal-totals{display:flex;gap:7px;align-items:baseline;margin:10px 0 0;font-size:.78rem;color:var(--muted)}.goal-totals strong{color:#242924;font-size:1rem;font-weight:650}.goal-details{margin-top:8px}.goal .actions{margin-top:9px}.progress.callum>span{background:#56778b}.progress.chelsea>span{background:#a76650}.lisa .progress{margin-bottom:11px}.bill-funding{padding:0 0 12px 44px}.schedule-card,.payment-grid{align-items:start}.payment-grid{margin-top:16px}.contribution-actions summary{cursor:pointer;color:var(--green);font-size:.8rem;margin-top:10px}.bill-occurrence{border-top:1px solid var(--edge);padding:9px 0;margin-top:7px}.bill-occurrence .btn{margin-top:6px}.schedule-card .bill-funding{padding:0}.funding-totals{background:#f3f5ee;border-radius:8px;padding:5px 9px;margin-bottom:7px}.lisa-actions{margin-bottom:14px}.lisa-foot{border-top:1px solid var(--edge);padding-top:9px;margin-top:8px;color:var(--muted);font-size:.74rem}dialog{border:1px solid var(--edge);border-radius:17px;background:var(--white);color:#252820;width:min(550px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:0;box-shadow:0 24px 70px #23362735;overscroll-behavior:contain}dialog::backdrop{background:#1d2a22a3}.dialog-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 18px;border-bottom:1px solid var(--edge)}.dialog-title h2{font-size:1.9rem}.dialog-fields{padding:17px 18px;display:grid;gap:12px}.dialog-actions{display:flex;align-items:center;gap:7px;padding:12px 18px;border-top:1px solid var(--edge)}.dialog-actions .spacer{flex:1}.form-grid,.add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.add-grid .btn{min-height:58px;justify-content:flex-start;font-size:.92rem}.field{min-width:0;display:grid;gap:4px;font-size:.8rem;font-weight:600}.field input,.field select{width:100%;min-width:0;height:41px;border:1px solid #dcd8cb;border-radius:7px;background:#fffefa;padding:7px 9px;font-size:.9rem;color:#232820}.toggle{display:flex;align-items:center;gap:8px;align-self:center;font-size:.8rem;padding:4px 0}.toggle input{accent-color:var(--green);width:16px;height:16px;margin:0}.form-error{color:#9c3024;font-size:.8rem;padding:0 18px 12px}.signin{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.72fr);align-items:stretch}.signin-card{align-self:center;justify-self:center;width:min(100% - 40px,420px);padding:22px 0}.signin-card .brand{margin-bottom:38px}.signin-card h1{font-size:clamp(2.5rem,4vw,3.7rem);margin-bottom:7px}.signin-card p{color:var(--muted)}.signin-card form{display:grid;gap:13px;margin:21px 0 11px}.signin-card form .primary{justify-self:start}.signin-card .form-error{padding:0;color:#9c3024}.signin-art{overflow:hidden;display:grid;place-items:center;background:#254a39;position:relative}.signin-art div{position:absolute;width:65%;aspect-ratio:1;border:1px solid #a2bd8d80;border-radius:50%;box-shadow:0 0 0 26px #254a39,0 0 0 27px #a2bd8d65,0 0 0 54px #254a39,0 0 0 55px #a2bd8d45,0 0 0 84px #254a39,0 0 0 85px #a2bd8d30}.signin-art div:nth-child(2){transform:translate(65%,-75%);opacity:.37}.signin-art div:nth-child(3){transform:translate(-65%,75%);opacity:.37}#status{position:fixed;z-index:3;bottom:16px;right:16px;max-width:min(calc(100vw - 32px),420px)}.toast{display:flex;align-items:center;gap:8px;border:1px solid var(--edge);background:var(--white);padding:8px 10px;border-radius:11px;box-shadow:0 5px 20px #22261b23;font-size:.83rem}.toast .icon-btn{width:30px;min-height:29px}@media(max-width:1100px){.layout{grid-template-columns:185px minmax(0,1fr)}.sidebar{padding-inline:12px}.topbar,.content{padding-inline:23px}}@media(max-width:800px){.layout{grid-template-columns:71px minmax(0,1fr)}.sidebar{align-items:center;padding-inline:7px}.sidebar .brand>div,.nav-link span,.signed-in>div,.sidebar-settings{font-size:0}.sidebar .brand>div,.signed-in>div{display:none}.nav-link{width:45px;justify-content:center;padding:10px 0;gap:0}.sidebar-settings{width:45px;padding:8px 0;justify-content:center!important}.signed-in{justify-content:center}.overview-grid{gap:11px;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.stack{gap:11px}.card{padding:14px 13px}.hero{padding-inline:15px}.hero-bottom span svg{display:none}}@media(max-width:610px){.layout{display:block}.sidebar{position:fixed;inset:auto 0 0;width:100%;height:auto;padding:0 0 env(safe-area-inset-bottom,0px);border-right:0;border-top:1px solid var(--edge);background:#fbf9f3;display:block}.sidebar .brand,.sidebar-footer{display:none}.sidebar nav{grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;padding:4px}.nav-link{width:auto;display:grid;justify-items:center;gap:3px;min-height:46px;padding:5px 2px}.nav-link span{font-size:.65rem;text-align:center}.nav-link svg{width:17px;height:17px}.topbar,.content{padding-inline:13px}.content{padding-top:21px;padding-bottom:85px}.topbar{gap:7px;padding-block:10px}.scope button{padding:6px 8px;font-size:.74rem}.top-actions{gap:4px}.top-actions .icon-btn{width:31px;min-height:35px}.top-actions .icon-btn svg{width:16px;height:16px}.top-actions .primary{min-height:35px;padding-inline:9px}.mobile-settings{display:inline-flex}.overview-grid,.two-grid,.goal-grid{grid-template-columns:minmax(0,1fr)}.page-heading{gap:7px;margin-bottom:12px}.period{gap:6px}.period-date{gap:4px}.period-date strong{min-width:74px}.period-date .btn{width:25px;min-height:29px}.segmented button{padding:5px 7px;font-size:.7rem}.hero-bottom span svg{display:block}.signin{grid-template-columns:minmax(0,1fr)}.signin-art{display:none}#status{bottom:66px}}@media(max-width:355px){.scope button{gap:4px;padding-inline:6px}.refresh{display:none}.form-grid{grid-template-columns:1fr}}.android-link{display:inline-block;margin-top:7px;font-size:.84rem;font-weight:550;text-underline-offset:3px}.transfer-amount{font:500 2.3rem/1 Newsreader,Georgia,serif;color:#254a39}.transfer-breakdown{margin-block:8px;overflow-x:auto}.transfer-breakdown th:first-child{padding-right:6px}.transfer-breakdown th:not(:first-child),.transfer-breakdown td{padding-left:6px;white-space:nowrap}.transfer-breakdown small{display:block;color:var(--muted)}
