@charset "UTF-8";
:root{--bg:#111512;--card:#1b211d;--card2:#232b25;--line:#2c352e;--text:#f1f5ed;--muted:#9ca89d;--green:#b9f581;--red:#ff9e96;--blue:#a2c9ff;--radius:24px;--safe:env(safe-area-inset-bottom,0px);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);color-scheme:dark}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button{color:inherit;border:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:3px}a{color:var(--green)}h1,h2,h3,p{margin:0}h1{font-size:28px;line-height:1.15;font-weight:650;letter-spacing:-1px}h2{font-size:21px;letter-spacing:-.5px}h3{font-size:15px;font-weight:550}.shell{max-width:680px;margin:auto;padding:0 22px calc(108px + var(--safe))}.header{display:flex;justify-content:space-between;align-items:center;padding:26px 0 28px;padding-top:calc(26px + env(safe-area-inset-top,0px))}.brand{display:flex;gap:11px;align-items:center}.brandmark{height:42px;width:42px;border-radius:14px;background:var(--green);color:#182311;font-size:30px;font-weight:800;line-height:37px;text-align:center;letter-spacing:-2px}.brandmark span{font-size:27px}.brand strong{font-size:16px;letter-spacing:2.8px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:1px;letter-spacing:.4px}.header-actions{display:flex;gap:8px}.icon-button{width:40px;height:40px;background:var(--card);border:1px solid var(--line);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none}.icon-button svg{width:18px;height:18px}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:2px;color:var(--muted);font-weight:650}.section-head{display:flex;align-items:center;justify-content:space-between;margin:27px 0 14px;gap:10px}.section-head p{font-size:12px;color:var(--muted)}.hero{position:relative;background:var(--green);color:#1b2b12;padding:26px;border-radius:var(--radius);overflow:hidden}.hero:after{content:"";position:absolute;width:160px;height:160px;border:1px solid #8fc656;border-radius:50%;right:-55px;top:-48px;pointer-events:none}.hero-label{font-size:13px;display:flex;align-items:center;gap:8px}.hero-label svg{width:15px;height:15px}.hero-total{font-size:43px;font-weight:650;letter-spacing:-2.3px;line-height:1.25;margin:13px 0 4px;overflow-wrap:anywhere}.hero-total small{font-size:18px;letter-spacing:0;font-weight:500;margin-left:6px}.hero-bottom{margin-top:21px;border-top:1px solid #98ca6b;padding-top:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:#3c552e}.hero-bottom strong{font-weight:600}.periods{display:flex;gap:5px;padding:5px;background:#191e1a;border:1px solid var(--line);border-radius:14px;margin:24px 0 15px}.periods button{flex:1;background:transparent;color:var(--muted);border-radius:9px;padding:9px 6px;font-size:13px}.periods button.active{background:#323d31;color:var(--text)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat{padding:17px;background:var(--card);border:1px solid var(--line);border-radius:18px;min-width:0}.stat-label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:7px}.stat-label svg{width:15px;height:15px}.stat-value{font-size:24px;letter-spacing:-.8px;margin-top:9px;font-weight:550;overflow-wrap:anywhere}.stat-value small{font-size:11px;color:var(--muted);letter-spacing:0;font-weight:400}.positive{color:var(--green)}.negative{color:var(--red)}.blue{color:var(--blue)}.net-line{display:flex;justify-content:space-between;margin-top:11px;color:var(--muted);font-size:12px;padding:0 3px;gap:10px}.accounts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.account-card{position:relative;border:1px solid var(--line);background:var(--card);border-radius:18px;padding:16px;min-width:0;overflow:hidden}.account-card .account-icon{width:33px;height:33px;background:#2e382c;border-radius:11px;display:flex;align-items:center;justify-content:center;color:var(--green);margin-bottom:15px}.account-icon svg{width:18px;height:18px}.account-card small{color:var(--muted);font-size:11px;display:block;overflow-wrap:anywhere}.account-card strong{display:block;font-size:20px;font-weight:550;letter-spacing:-.6px;margin-top:4px;overflow-wrap:anywhere}.account-card strong span{font-size:11px;color:var(--muted);font-weight:400;letter-spacing:0}.account-dot{position:absolute;right:14px;top:17px;width:6px;height:6px;border-radius:50%;background:#6e9663}.text-button{background:transparent;color:var(--green);font-size:12px;display:flex;align-items:center;gap:5px;padding:6px 0;white-space:nowrap}.text-button svg{width:14px;height:14px}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.quick-actions button{border:1px solid var(--line);border-radius:13px;padding:13px 8px;background:var(--card);display:flex;justify-content:center;align-items:center;gap:7px;font-size:13px}.quick-actions svg{width:17px;height:17px}.transaction-list{border-top:1px solid var(--line)}.transaction{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border-bottom:1px solid var(--line);background:transparent;padding:15px 0}.tx-icon{height:39px;width:39px;display:flex;justify-content:center;align-items:center;border-radius:13px;flex:none}.tx-icon svg{width:18px;height:18px}.tx-icon.expense{background:#322522;color:var(--red)}.tx-icon.income{background:#283321;color:var(--green)}.tx-icon.transfer{background:#232d37;color:var(--blue)}.tx-content{flex:1;min-width:0}.tx-content strong{display:block;font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-content small{display:block;font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-amount{font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:550}.tx-amount small{font-size:9px;color:var(--muted);display:block;text-align:right;font-weight:400;margin-top:2px}.empty{padding:30px 18px;text-align:center;border:1px dashed #344036;border-radius:18px;color:var(--muted);font-size:13px}.empty strong{display:block;color:var(--text);font-size:15px;font-weight:500;margin-bottom:7px}.empty svg{width:25px;height:25px;margin-bottom:8px;color:#7b9576}.subtext{font-size:13px;color:var(--muted);margin-top:8px;line-height:1.6}.page-heading{margin-bottom:24px}.form-card{border:1px solid var(--line);background:var(--card);border-radius:var(--radius);padding:22px}.amount-label{font-size:12px;color:var(--muted)}.amount-field{display:flex;align-items:center;border-bottom:1px solid #384437;margin-bottom:23px;padding:10px 0 14px;gap:10px}.amount-field input{width:100%;min-width:0;background:transparent;border:0;outline:0;font-size:45px;letter-spacing:-1.5px;color:var(--text);padding:0}.amount-field input::placeholder{color:#52604e}.amount-field span{color:var(--muted);font-size:13px}.field{display:block;margin-top:17px}.field>span{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.field input,.field select{width:100%;background:#141a15;border:1px solid #354036;border-radius:12px;padding:13px;color:var(--text);min-height:47px;min-width:0}.field input::placeholder{color:#7f8d80}.field small{display:block;font-size:11px;color:var(--muted);margin-top:6px;line-height:1.5}.fields-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.primary{display:flex;gap:8px;align-items:center;justify-content:center;background:var(--green);color:#1a2a13;border-radius:13px;font-weight:600;min-height:48px;padding:13px 18px;width:100%;margin-top:23px}.primary svg{width:18px;height:18px}.secondary{background:var(--card2);border:1px solid var(--line);color:var(--text);border-radius:12px;min-height:43px;padding:11px 15px}.danger{color:var(--red);background:transparent;border:1px solid #593e36;border-radius:12px;padding:12px 16px;width:100%;margin-top:13px}.hint{font-size:11px;line-height:1.65;color:var(--muted);margin:13px 0 0;display:flex;gap:6px;align-items:flex-start}.hint svg{width:14px;height:14px;flex:none;margin-top:2px}.nav{z-index:10;position:fixed;bottom:0;left:50%;transform:translateX(-50%);max-width:680px;width:100%;display:grid;grid-template-columns:repeat(4,1fr);background:#171d18f5;backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:10px 12px calc(10px + var(--safe))}.nav button{display:flex;align-items:center;flex-direction:column;gap:5px;background:transparent;color:#88958a;padding:7px 4px;border-radius:13px;font-size:10px}.nav svg{width:22px;height:22px}.nav button.active{color:var(--green);background:#273322}.segmented{display:flex;gap:4px;background:#131914;border:1px solid var(--line);padding:4px;border-radius:13px;margin-bottom:21px}.segmented button{flex:1;border-radius:9px;padding:10px 8px;background:transparent;color:var(--muted);font-size:13px}.segmented button.active{background:#33432a;color:var(--green)}.segmented button.active.out{background:#442f29;color:var(--red)}.balance-strip{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:14px}.balance-strip strong{font-size:25px;font-weight:550;letter-spacing:-1px;display:block;overflow-wrap:anywhere}.balance-strip small{font-size:11px;color:var(--muted);display:block;margin-bottom:5px}.balance-strip select{background:transparent;color:var(--text);border:1px solid var(--line);padding:10px;border-radius:10px;max-width:55%;font-size:12px}dialog{color:var(--text);background:#191f1a;border:1px solid #354034;border-radius:26px 26px 0 0;padding:22px 22px calc(26px + var(--safe));max-width:640px;width:100%;max-height:90dvh;overflow-y:auto;position:fixed;inset:auto 0 0;margin:auto;box-shadow:0 -20px 80px #0005}dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.modal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-top .icon-button{width:32px;height:32px}.modal-top .icon-button svg{width:16px;height:16px}dialog h2{font-size:25px;margin-bottom:10px}dialog .form-card{padding:0;border:0;background:transparent}dialog .section-head{margin-top:22px}.account-setting{background:var(--card2);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:12px}.account-setting strong{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.account-setting small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.note{padding:13px 15px;border:1px solid var(--line);border-radius:12px;font-size:12px;color:var(--muted);line-height:1.65;margin:16px 0}.form-error{color:var(--red);font-size:12px;margin-top:12px;line-height:1.5}.toast{z-index:100;position:fixed;bottom:calc(96px + var(--safe));left:50%;transform:translateX(-50%);max-width:90%;width:max-content;background:#e1eed7;color:#1e2f17;padding:12px 20px;border-radius:14px;box-shadow:0 4px 35px #0006;font-size:13px}.loading{padding:80px 0;text-align:center;color:var(--muted)}.demo-banner{font-size:11px;color:#e2c184;border:1px solid #6b5732;padding:10px;border-radius:10px;margin-bottom:18px}.report-totals{padding:16px;background:var(--card2);border-radius:15px;margin-top:15px}.report-line{display:flex;justify-content:space-between;gap:15px;padding:7px 0;font-size:13px}.report-line strong{font-weight:550;white-space:nowrap}.report-line.total{border-top:1px solid #3a4539;margin-top:8px;padding-top:13px}.report-item{margin:14px 0}.report-item>div{display:flex;justify-content:space-between;gap:12px;font-size:12px}.bar{height:4px;border-radius:3px;background:#303c2c;margin-top:7px;overflow:hidden}.bar i{display:block;height:100%;background:var(--green);border-radius:3px}.load-more{width:100%;margin-top:12px}.error-screen{border:1px solid #5c433c;border-radius:20px;padding:24px;margin-top:20px}.error-screen h2{color:var(--red)}[hidden]{display:none!important}@media(min-width:700px){.shell{padding-top:12px}.header{padding-top:28px}.hero-total{font-size:52px}.hero{padding:32px}.nav{border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0}dialog{bottom:30px;border-radius:26px;padding-bottom:26px;max-height:85dvh}}@media(max-width:360px){.shell{padding-left:14px;padding-right:14px}.hero{padding:20px}.hero-total{font-size:36px}.fields-row{grid-template-columns:1fr}.stat-value{font-size:21px}.form-card{padding:17px}.header{padding-bottom:22px}}

.segmented button{display:flex;align-items:center;justify-content:center;gap:7px}.segmented svg{width:17px;height:17px;flex:none}
/* Mobile form readability, large amounts and long custom account names. */
.field{min-width:0}.field input,.field select{font-size:16px}.fields-row{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-bottom{flex-wrap:wrap}.account-setting>div,.balance-strip>div{min-width:0}.balance-strip select{min-width:0}.report-line>span,.report-item>div>span{min-width:0;overflow-wrap:anywhere}.report-line strong{white-space:normal;max-width:65%;text-align:right;overflow-wrap:anywhere}.report-item strong{flex-shrink:0;text-align:right;max-width:60%;overflow-wrap:anywhere}.tx-amount{max-width:48%;white-space:normal;text-align:right;overflow-wrap:anywhere}.report-item>div{align-items:flex-start}
@media(max-width:360px){.fields-row{grid-template-columns:1fr}.balance-strip{align-items:flex-start;flex-direction:column}.balance-strip select{max-width:100%;width:100%}}
/* Four primary sections, shared accounts, and owner-managed access. */
.nav{grid-template-columns:repeat(4,minmax(0,1fr))}.access-open{display:block;width:100%;margin-top:12px;border-color:#4a643b;color:var(--green)}.account-id{font-size:11px;color:var(--muted);margin:16px 0 0}.access-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 0;border-bottom:1px solid var(--line)}.access-row>div{min-width:0}.access-row strong{font-size:14px;font-weight:550;display:block;overflow-wrap:anywhere}.access-row small{font-size:11px;color:var(--muted);display:block;margin-top:4px}.access-row button{font-size:11px;padding:9px 12px;flex:none;min-height:38px}.access-revoke{color:var(--red)}.owner-badge{font-size:10px;color:var(--green);padding:6px 10px;border-radius:12px;background:#2c3b25}.account-card:only-child{grid-column:1/-1}
/* Motion uses opacity/transform; no page-wide layout animation or backdrop blur tween. */
:root{--ease-out:cubic-bezier(.22,1,.36,1);--ease-in-out:cubic-bezier(.4,0,.2,1)}
button{touch-action:manipulation;transition:background-color 220ms var(--ease-out),color 220ms var(--ease-out),opacity 180ms ease,transform 180ms var(--ease-out),border-color 220ms ease}
button:not(:disabled):active{transform:scale(.985);transition-duration:80ms}
.icon-button:not(:disabled):active{transform:scale(.93)}
.nav{isolation:isolate}
.nav::before{content:"";position:absolute;z-index:-1;pointer-events:none;top:10px;left:12px;bottom:calc(10px + var(--safe));width:calc((100% - 24px)/4);border-radius:13px;background:#273322;transform:translateX(calc(var(--active-index,0)*100%));transition:transform 340ms var(--ease-out)}
.nav button.active{background:transparent}
.nav svg{transition:transform 300ms var(--ease-out)}.nav button.active svg{transform:translateY(-1px)}
.field input,.field select,.balance-strip select{transition:border-color 220ms ease,box-shadow 220ms ease,background-color 220ms ease}
.field input:focus,.field select:focus,.balance-strip select:focus{border-color:#7bad58;box-shadow:0 0 0 3px #b9f5810d}
.periods button,.segmented button{position:relative}
dialog[open]{animation:sheet-in 360ms var(--ease-out) both}
dialog.closing{animation:sheet-out 220ms var(--ease-in-out) both;pointer-events:none}
dialog::backdrop{animation:backdrop-in 300ms ease both}
dialog.closing::backdrop{animation:backdrop-out 220ms ease both}
/* Reserve the spinner slot: saving never shifts the button label sideways. */
button.primary::after{content:"";position:absolute;right:16px;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;opacity:0;transition:opacity 160ms ease;pointer-events:none}
button.primary{position:relative;padding-left:42px;padding-right:42px}
button.primary[aria-busy="true"]::after{opacity:1;animation:spin .8s linear infinite}
@keyframes sheet-in{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes sheet-out{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}
@keyframes backdrop-in{from{opacity:0}to{opacity:1}}@keyframes backdrop-out{from{opacity:1}to{opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@media(hover:hover){.icon-button:hover,.secondary:hover,.quick-actions button:hover{background-color:#2a342c}.transaction:hover{background-color:#ffffff04}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.history-loading{padding:28px 16px;border:1px solid var(--line);border-radius:18px;color:var(--muted);font-size:13px;text-align:center}
