:root{--ink: #1a1a1a;--ink-soft: #55595e;--paper: #f7f6f3;--card: #ffffff;--line: #d9d6d0;--accent: #2b5c4b;--error: #a12b2b;font-size:18px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--paper);line-height:1.5}button{font:inherit;padding:.7em 1.2em;min-height:48px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;cursor:pointer}button:disabled{opacity:.6;cursor:default}.notice,.error{padding:1.5rem;font-size:1.05rem}.error{color:var(--error)}.sign-in{max-width:32rem;margin:4rem auto;padding:2rem;text-align:center}.sign-in h1{margin-bottom:.5rem}.sign-in p{color:var(--ink-soft);margin-bottom:2rem}.app{max-width:44rem;margin:0 auto;padding:1rem}.app-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:2px solid var(--line)}.app-header h1{margin:0}.signed-in-as{display:flex;align-items:center;gap:.75rem;color:var(--ink-soft)}.signed-in-as button{background:transparent;color:var(--accent);min-height:40px;padding:.4em .9em}.account-group{margin-top:2rem}.account-group h2{font-size:1.15rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.account-group ul{list-style:none;margin:0;padding:0}.balance-date{margin:1.5rem 0 .5rem;padding:1rem;background:var(--card);border:1px solid var(--line);border-radius:10px}.balance-date label{font-weight:600;margin-right:.6rem}.balance-date input[type=date]{font:inherit;min-height:48px;padding:.4em .6em;border:1px solid var(--accent);border-radius:8px}.hint{color:var(--ink-soft);font-size:.95rem;margin:.6rem 0 0}.account-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:1rem;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:.6rem}.account-identity{display:flex;flex-direction:column}.account-name{font-size:1.1rem;font-weight:600}.account-detail{color:var(--ink-soft);font-size:.95rem}.account-balance{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:.35rem}.account-balance .current{font-size:1rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.account-balance .current .none{font-style:italic}.as-at{color:var(--ink-soft);font-size:.9rem}.balance-input{display:flex;align-items:center;gap:.4rem}.balance-input .pound{font-size:1.1rem;color:var(--ink-soft)}.balance-input input{font:inherit;width:9rem;min-height:48px;padding:.4em .6em;border:1px solid var(--accent);border-radius:8px;text-align:right;font-variant-numeric:tabular-nums}.status{font-size:.9rem;color:var(--ink-soft);white-space:nowrap}.status.ok{color:var(--accent)}.amount{font-size:1.2rem;font-variant-numeric:tabular-nums}.amount.none{font-size:1rem;color:var(--ink-soft);font-style:italic}.main-nav{display:flex;gap:.5rem;margin:1rem 0 .5rem}.main-nav button{background:transparent;color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:.5em 1.4em;min-height:44px}.main-nav button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.expense-group{margin-top:2rem}.expense-group h2{font-size:1.15rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.expense-group ul{list-style:none;margin:0;padding:0}.expense-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.9rem 1rem;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:.6rem}.expense-identity{display:flex;flex-direction:column}.expense-item{font-size:1.1rem;font-weight:600}.expense-detail{color:var(--ink-soft);font-size:.95rem}.expense-amount{display:flex;align-items:baseline;gap:.4rem;background:transparent;color:var(--ink);border:1px solid transparent;border-radius:8px;padding:.4em .7em}.expense-amount:hover,.expense-amount:focus-visible{border-color:var(--line)}.expense-amount .per{color:var(--ink-soft);font-size:.9rem}.expense-amount .edit-hint{color:var(--accent);font-size:.9rem;margin-left:.5rem}.expense-edit{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.expense-edit .pound{font-size:1.1rem;color:var(--ink-soft)}.expense-edit input{font:inherit;width:7rem;min-height:48px;padding:.4em .6em;border:1px solid var(--accent);border-radius:8px;text-align:right;font-variant-numeric:tabular-nums}.expense-edit button.ghost{background:transparent;color:var(--accent)}.error.inline{flex-basis:100%;padding:.25rem 0 0;font-size:.95rem}.expense-subtotal,.expense-totals p{display:flex;justify-content:space-between;gap:1rem;margin:.4rem .2rem 0;color:var(--ink-soft)}.expense-subtotal .amount{font-variant-numeric:tabular-nums}.expense-totals{margin-top:2.5rem;padding-top:1rem;border-top:2px solid var(--line)}.expense-totals p{color:var(--ink);font-size:1.1rem;font-weight:600;margin-top:.6rem}.expense-totals .amount{font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.income-group{margin-top:2rem}.income-group h2{font-size:1.15rem;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}.income-group ul{list-style:none;margin:0;padding:0}.income-note{color:var(--ink-soft);margin:0 .2rem .75rem}.income-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.9rem 1rem;background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:.6rem}.income-group.inactive .income-row{background:transparent;color:var(--ink-soft)}.income-identity{display:flex;flex-direction:column}.income-source{font-size:1.1rem;font-weight:600}.income-detail{color:var(--ink-soft);font-size:.95rem}.income-figures{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.income-amount{display:flex;align-items:baseline;gap:.4rem;background:transparent;color:var(--ink);border:1px solid transparent;border-radius:8px;padding:.4em .7em}.income-amount.static{padding:.4em .7em}.income-amount:not(.static):hover,.income-amount:not(.static):focus-visible{border-color:var(--line)}.income-amount .per{color:var(--ink-soft);font-size:.9rem}.income-amount .edit-hint{color:var(--accent);font-size:.9rem;margin-left:.5rem}.income-annual{color:var(--ink-soft);font-size:.9rem;padding-right:.7em;font-variant-numeric:tabular-nums}.income-edit{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.income-edit .pound{font-size:1.1rem;color:var(--ink-soft)}.income-edit input{font:inherit;width:7rem;min-height:48px;padding:.4em .6em;border:1px solid var(--accent);border-radius:8px;text-align:right;font-variant-numeric:tabular-nums}.income-edit button.ghost{background:transparent;color:var(--accent)}.income-totals{margin-top:2.5rem;padding-top:1rem;border-top:2px solid var(--line)}.income-totals p{display:flex;justify-content:space-between;gap:1rem;margin:.6rem .2rem 0;color:var(--ink);font-size:1.1rem;font-weight:600}.income-totals .amount{font-variant-numeric:tabular-nums}.headline-figures{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-top:1.5rem}@media(max-width:640px){.headline-figures{grid-template-columns:repeat(2,1fr)}}.figure{display:flex;flex-direction:column;gap:.3rem;padding:1rem;background:var(--card);border:1px solid var(--line);border-radius:10px}.figure-label{color:var(--ink-soft);font-size:.9rem}.figure-value{font-size:1.4rem;font-weight:600;font-variant-numeric:tabular-nums}.figure.good .figure-value{color:var(--accent)}.figure.bad .figure-value{color:var(--error)}.chart-card{margin-top:2rem;padding:1.25rem;background:var(--card);border:1px solid var(--line);border-radius:10px}.chart-card h2{margin:0;font-size:1.15rem}.chart-caption{color:var(--ink-soft);font-size:.95rem;margin:.4rem 0 1rem}.chart-subhead{margin:1.75rem 0 0;font-size:1rem}.chart{width:100%}.chart-table{margin-top:1rem}.chart-table summary{cursor:pointer;color:var(--accent);min-height:44px;display:flex;align-items:center}.chart-table table{width:100%;border-collapse:collapse;margin-top:.5rem}.chart-table th,.chart-table td{text-align:left;padding:.5rem .5rem .5rem 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.chart-table th{color:var(--ink-soft);font-weight:600}
