:root{--bg:#fff;--surface:#f4f4f5;--line:#e4e4e7;--text:#18181b;--muted:#71717a;--accent:#2563eb;--accent-contrast:#fff;--danger:#dc2626;--positive:#15803d;--column:34rem;--gutter:1.25rem}[data-appearance=dark]{--bg:#0b0b0d;--surface:#18181b;--line:#27272a;--text:#fafafa;--muted:#a1a1aa;--accent:#60a5fa;--accent-contrast:#0b0b0d;--danger:#f87171;--positive:#4ade80}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);overscroll-behavior:contain;min-height:100dvh;font-family:system-ui,sans-serif}#root{min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex}.app-header{padding:1rem var(--gutter);padding-inline:max(var(--gutter), calc((100% - var(--column)) / 2 + var(--gutter)));border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;display:flex}.form-header h1{text-align:center;flex:1}.form-header{padding-block:.5rem}.form-header .back,.form-header .done{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;min-height:2.75rem;margin-inline:-.25rem;padding:0 .25rem;font-size:.9375rem;display:inline-flex}.form-header .done{font-weight:600}.app-header h1{letter-spacing:-.01em;margin:0;font-size:1.125rem;font-weight:600}.app-main{width:100%;max-width:var(--column);padding:2rem var(--gutter) calc(4.5rem + max(1.5rem, env(safe-area-inset-bottom)));flex-direction:column;flex:1;gap:2.5rem;margin:0 auto;display:flex}.app-main.with-fab{padding-bottom:calc(9rem + max(1.5rem, env(safe-area-inset-bottom)))}.empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;min-height:8rem;display:flex}.empty p{max-width:22rem;margin:0}.empty .primary{width:auto;margin-top:1rem;padding-inline:1.5rem}.empty .empty-title{font-size:1.0625rem}.empty .empty-body{color:var(--muted);font-size:.9375rem}.app-main section h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .75rem;font-size:.8125rem;font-weight:600}.segmented{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;grid-template-columns:repeat(2,1fr);gap:.25rem;padding:.25rem;display:grid}.segmented.three{grid-template-columns:repeat(3,1fr)}.segmented button{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:.5rem;min-height:2.75rem;padding:.625rem .5rem;font-size:.9375rem;transition:opacity .12s}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast);font-weight:600}.install{font:inherit;color:var(--accent-contrast);background:var(--accent);cursor:pointer;border:0;border-radius:.75rem;width:100%;min-height:2.75rem;padding:.75rem 1rem;font-size:.9375rem;font-weight:600}.nav-bar{background:var(--bg);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);padding-inline:max(0rem, calc((100% - var(--column)) / 2));grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.nav-bar a{min-height:3.5rem;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:.125rem;font-size:.75rem;text-decoration:none;display:flex}.nav-bar a[aria-current=page]{color:var(--accent);font-weight:600}.nav-bar .glyph{font-size:1.25rem;line-height:1;position:relative}.nav-bar .badge{background:var(--danger);color:#fff;text-align:center;border-radius:999px;min-width:1.05rem;padding:0 .25rem;font-size:.6875rem;font-weight:700;line-height:1.05rem;position:absolute;top:-.375rem;left:.75rem}.total{background:var(--surface);border:1px solid var(--line);border-radius:1rem;padding:1.25rem}.total h2{margin-bottom:.5rem}.total ol{flex-direction:column;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.total li{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.total .figure{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:600}.total .figure.negative,.accounts .amount.negative{color:var(--danger)}.total .code{letter-spacing:.06em;color:var(--muted);font-size:.75rem;font-weight:600}.total .head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.5rem;display:flex}.total .head h2{margin:0}.total .showing{font:inherit;letter-spacing:.02em;color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border:0;min-height:2.25rem;padding:.375rem 0;font-size:.8125rem;font-weight:600}.total .sheet{border:1px solid var(--line);background:var(--bg);border-radius:.75rem;margin-top:.75rem;padding:.25rem .875rem}.total .sheet .note{color:var(--muted);border-top:1px solid var(--line);margin:0;padding:.625rem 0 .5rem;font-size:.75rem}.total .uncounted{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem}.total .uncounted p{color:var(--muted);margin:0 0 .75rem;font-size:.875rem}.total .figure-line{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.total .figure-line .amount{font-variant-numeric:tabular-nums;font-size:1.0625rem;font-weight:600}.total .uncounted .primary{width:auto;margin-top:.75rem;padding-inline:1rem}.rows{border:1px solid var(--line);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.rows li+li{border-top:1px solid var(--line)}.rows button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.5rem;padding:.75rem 1rem;display:flex}.rows .label{flex:1;min-width:0}.rows .label .name{font-size:1rem;display:block}.rows .label .sentence{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:.125rem;font-size:.8125rem;display:block}.rows .value.missing{color:var(--accent);font-size:.9375rem;font-weight:600}.rows .chevron{color:var(--muted)}.section-hint{color:var(--muted);margin:.625rem 0 0;font-size:.8125rem}.quoted-in{color:var(--muted);align-items:baseline;gap:.5rem;margin:0 0 .625rem;font-size:.8125rem;display:flex}.quoted-in strong{color:var(--text)}.quoted-in button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:.8125rem;font-weight:600}.accounts{border:1px solid var(--line);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.accounts li+li{border-top:1px solid var(--line)}.accounts button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.5rem;padding:.875rem 1rem;display:flex}.accounts .name{flex:1;font-size:1rem}.accounts .code{color:var(--muted);min-width:2.5rem;font-size:.75rem}.accounts .amount{font-variant-numeric:tabular-nums;font-size:1rem}.accounts .name.add{color:var(--accent);font-weight:600}.day-group+.day-group{margin-top:1.25rem}.day{letter-spacing:.04em;color:var(--muted);margin:0 0 .5rem;font-size:.75rem;font-weight:600}.transactions{border:1px solid var(--line);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.transactions li+li{border-top:1px solid var(--line)}.transactions button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.75rem;padding:.75rem 1rem;display:flex}.transactions .what{flex:1;min-width:0}.transactions .title,.transactions .meta{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.transactions .title{font-size:1rem}.transactions .meta{color:var(--muted);margin-top:.125rem;font-size:.8125rem}.transactions .amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1rem}.transactions .amount.in{color:var(--positive)}.transactions .amount.out{color:var(--danger)}.transactions .amount.moved{color:var(--accent);font-weight:600}.invested{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;margin:.75rem 0 0;padding-top:.75rem;display:flex}.invested .label{font-size:.875rem}.invested .amount{font-variant-numeric:tabular-nums;color:var(--positive);font-size:1.0625rem;font-weight:600}.invested .amount.negative{color:var(--danger)}.invested-note{color:var(--muted);margin:.375rem 0 0;font-size:.75rem}.see-all{font:inherit;color:var(--accent);text-align:left;cursor:pointer;background:0 0;border:0;min-height:2.75rem;padding:.875rem 0;font-size:.9375rem;font-weight:600}.field{flex-direction:column;gap:.5rem;display:flex}.field+.field{margin-top:1.5rem}.field label,.field .label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.8125rem;font-weight:600}.field input,.field .picker{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:.75rem;width:100%;min-height:3rem;padding:.75rem .875rem;font-size:1rem}.field .picker{text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;display:flex}.field .picker:disabled{opacity:.6;cursor:default}.field .picker .chevron{color:var(--muted)}.field .hint{color:var(--muted);margin:0;font-size:.8125rem}.field .error{color:var(--danger);margin:0;font-size:.8125rem}.field input[aria-invalid=true]{border-color:var(--danger)}.amount-input{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;align-items:center;gap:.5rem;padding-left:.875rem;display:flex}.amount-input .symbol{color:var(--muted);font-size:1rem}.amount-input .sign{color:var(--muted);font-size:1.125rem;font-weight:600}.amount-input.in .sign{color:var(--positive)}.segmented button[aria-pressed=true].out{background:var(--danger)}.segmented button[aria-pressed=true].in{background:var(--positive);color:#fff}.segmented button[aria-pressed=true].transfer{background:var(--accent)}.quick-dates{flex-wrap:wrap;gap:.5rem;display:flex}.quick-dates button{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:999px;min-height:2.75rem;padding:.5rem 1rem;font-size:.875rem}.quick-dates button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}.range{align-items:flex-end;gap:.75rem;display:flex}.range .field{flex:1;margin-top:0}.range input{min-height:2.75rem}.range-summary{color:var(--muted);margin:.75rem 0 0;font-size:.8125rem}.empty-inline{border:1px dashed var(--line);color:var(--muted);text-align:center;border-radius:1rem;margin:0;padding:1.25rem 1rem;font-size:.9375rem}.amount-input input{font-variant-numeric:tabular-nums;background:0 0;border:0;padding-left:0}.rate-line{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;align-items:center;gap:.625rem;padding:0 .875rem;display:flex}.rate-line .fixed{white-space:nowrap;font-size:1.0625rem;font-weight:600}.in-force{border:1px solid var(--line);color:var(--muted);border-radius:.75rem;margin:.625rem 0 0;padding:.75rem .875rem;font-size:.875rem}.rate-line input{min-width:0;min-height:3rem;font:inherit;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:0;flex:1;padding:.75rem 0;font-size:1.0625rem}.primary{font:inherit;color:var(--accent-contrast);background:var(--accent);cursor:pointer;border:0;border-radius:.75rem;width:100%;min-height:2.75rem;padding:.75rem 1rem;font-size:.9375rem;font-weight:600}.destructive{font:inherit;color:var(--danger);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:.75rem;width:100%;min-height:2.75rem;padding:.75rem 1rem;font-size:.9375rem;font-weight:600}.confirm-question{margin:0;font-size:1rem;font-weight:600}.confirm-actions{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.confirm-actions button:not(.destructive){font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:.75rem;min-height:2.75rem;padding:.75rem 1rem;font-size:.9375rem}.fab{right:max(var(--gutter), env(safe-area-inset-right), calc((100% - var(--column)) / 2));bottom:calc(4.5rem + max(.75rem, env(safe-area-inset-bottom)));background:var(--accent);width:3.5rem;height:3.5rem;color:var(--accent-contrast);cursor:pointer;border:0;border-radius:50%;font-size:1.75rem;line-height:1;position:fixed;box-shadow:0 6px 20px #0000002e}.picker-screen{z-index:1;background:var(--bg);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}.picker-screen .app-main{gap:1.5rem;padding-bottom:2rem}.search{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:.75rem;width:100%;min-height:3rem;padding:.75rem .875rem;font-size:1rem}.currencies{margin:0;padding:0;list-style:none}.currencies li+li{border-top:1px solid var(--line)}.currencies button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.25rem;padding:.75rem .25rem;display:flex}.currencies .code{font-variant-numeric:tabular-nums;min-width:3rem;font-weight:600}.currencies .label{color:var(--muted);flex:1}.currencies .tick{color:var(--accent);font-weight:600}.options{margin:0;padding:0;list-style:none}.options li+li{border-top:1px solid var(--line)}.options button{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.25rem;padding:.75rem .25rem;display:flex}.options .label{flex:1;font-size:1rem}.options .code{color:var(--muted);font-size:.75rem}.options .tick{color:var(--accent);font-weight:600}@media (width>=48rem){.app-main{gap:3rem;padding-top:4rem}}.planned{border:1px solid var(--line);border-radius:1rem;margin:0;padding:0;list-style:none;overflow:hidden}.planned li+li{border-top:1px solid var(--line)}.planned button{font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:1rem;width:100%;min-height:3.75rem;padding:.75rem 1rem;display:flex}.planned .what{flex:1;min-width:0}.planned .title,.planned .meta{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.planned .title{font-size:1rem}.planned .meta{color:var(--muted);margin-top:.125rem;font-size:.8125rem}.planned .repeats{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.planned .figures{text-align:right;white-space:nowrap}.planned .amount{font-variant-numeric:tabular-nums;font-size:1rem;display:block}.planned .amount.in{color:var(--positive)}.planned .amount.out{color:var(--danger)}.planned .amount.moved{color:var(--accent);font-weight:600}.planned .when{color:var(--muted);margin-top:.125rem;font-size:.8125rem;display:block}.planned .when.late{color:var(--danger);font-weight:600}.planned .when.today{color:var(--accent);font-weight:600}.waiting-line{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);text-align:left;cursor:pointer;border-radius:1rem;align-items:center;gap:.75rem;width:100%;min-height:3.25rem;padding:.75rem 1rem;display:flex}.waiting-line .glyph{font-size:1.125rem}.waiting-line .text{flex:1;font-size:.9375rem}.waiting-line .chevron{color:var(--muted)}.planned-note{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border-radius:.75rem;margin:.5rem 0 0;padding:.75rem .875rem;font-size:.875rem}.banner{border:1px solid var(--line);background:var(--surface);border-radius:1rem;padding:.875rem 1rem}.banner .title{margin:0;font-size:.9375rem;font-weight:600}.banner .sub{color:var(--muted);margin:.25rem 0 0;font-size:.8125rem}.banner .sub.late{color:var(--danger);font-weight:600}.toggle-row{flex-wrap:wrap;gap:.5rem;display:flex}.toggle-row .toggle{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:999px;min-height:2.25rem;padding:.375rem .875rem;font-size:.875rem}.toggle-row .toggle[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}.months{background:var(--surface);border:1px solid var(--line);border-radius:.75rem;align-items:center;gap:.75rem;margin-top:.625rem;padding:0 .875rem;display:flex}.months label{flex:1;font-size:.9375rem}.months input{width:5rem;min-height:3rem;font:inherit;color:var(--text);text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:0;padding:.75rem 0;font-size:1.0625rem}.door{flex-direction:column;justify-content:center;max-width:26rem;min-height:100svh;margin:0 auto;padding:2rem 1.25rem;display:flex}.door .brand{letter-spacing:-.01em;margin:0 0 .5rem;font-size:1.5rem;font-weight:600}.door-intro{color:var(--muted);margin:0 0 2rem;font-size:.9375rem}.problem{border:1px solid var(--danger);color:var(--danger);border-radius:1rem;flex-direction:column;gap:.25rem;margin:1.25rem 0 0;padding:.875rem 1rem;font-size:.875rem;display:flex}.problem p{margin:0}.problem .sub{color:var(--muted)}.door-note{color:var(--muted);margin:2.5rem 0 0;font-size:.8125rem}.sync{border:1px solid var(--line);border-radius:1rem;padding:1rem}.sync .who{align-items:baseline;gap:.5rem;margin:0;font-size:1rem;display:flex}.sync .who .email{overflow-wrap:anywhere;font-weight:600}.sync .state{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:.5rem;margin:.5rem 0 0;font-size:.8125rem;display:flex}.sync .state .dot{background:var(--muted);border-radius:50%;flex:none;width:.5rem;height:.5rem}.sync .state.ok .dot{background:var(--positive)}.sync .state.busy .dot{background:var(--accent)}.sync .state.bad{color:var(--danger)}.sync .state.bad .dot{background:var(--danger)}.sync .primary{margin-top:1rem}.sync .quiet{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;margin-top:.5rem;padding:.5rem 0;font-size:.9375rem;font-weight:600}.leaving{flex-direction:column;justify-content:center;max-width:26rem;min-height:100svh;margin:0 auto;padding:2rem 1.25rem;display:flex}.leaving h1{margin:0 0 .75rem;font-size:1.375rem}.leaving p{margin:0 0 .875rem;font-size:.9375rem}.leaving .muted{color:var(--muted);font-size:.875rem}.standing{border:1px solid var(--line);background:var(--surface);border-radius:1rem;align-items:center;gap:.625rem;margin:0 0 1.25rem;padding:.875rem 1rem;font-size:.875rem;display:flex}.standing.safe{border-color:var(--positive)}.standing.losing{border-color:var(--danger);color:var(--danger)}.standing .glyph{flex:none;font-size:1.125rem}.standing p{margin:0}.standing .sub{color:var(--muted);margin-top:.25rem;font-size:.8125rem}.standing.losing .sub{color:var(--danger)}.leaving .actions{flex-direction:column;gap:.75rem;margin-top:.5rem;display:flex}.leaving .actions .cancel{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;min-height:3rem;font-size:1rem;font-weight:600}
