:root{color-scheme:light;--ink:#182943;--muted:#64738a;--line:#e0e6ef;--paper:#fff;--canvas:#f3f6fb;--blue:#284de5;--blue-soft:#edf1ff;--green:#14765a;--red:#ad493b;--amber:#95651e;--radius:16px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--blue)}button:disabled{cursor:default;opacity:.45}button,input,select,textarea{border:1px solid var(--line);border-radius:9px}button{padding:10px 15px;background:var(--paper);color:var(--ink);font-weight:550}button:hover{background:var(--canvas)}button.primary{background:var(--blue);border-color:var(--blue);color:#fff}button.primary:hover{background:#2040c4}button.quiet{background:transparent;border-color:transparent}button.danger{color:var(--red)}input,select,textarea{background:var(--paper);color:var(--ink);padding:11px 12px;min-width:0;max-width:100%}textarea{resize:vertical}input[type=checkbox]{accent-color:var(--blue)}:focus-visible{outline:3px solid #8aa8ff;outline-offset:3px}h1,h2,h3,p{margin:0}h1{font-family:"Avenir Next",-apple-system,sans-serif;font-weight:650;letter-spacing:-.04em;font-size:2rem}h2{font-size:1.1rem;letter-spacing:-.025em;font-weight:650}h3{font-size:1rem}p{line-height:1.6}.muted{color:var(--muted)}.small{font-size:.875rem}.mono,.money{font-variant-numeric:tabular-nums}.money{white-space:nowrap}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;font-weight:650;color:var(--muted)}.skip{position:fixed;top:-60px;left:20px;padding:12px;background:white;z-index:20}.skip:focus{top:10px}.loading{padding:20vh 24px;text-align:center;color:var(--muted)}
.layout{display:grid;grid-template-columns:225px minmax(0,1fr);min-height:100vh}.sidebar{padding:35px 22px;display:flex;flex-direction:column;gap:36px;background:#fff;border-right:1px solid var(--line);position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font-size:1.2rem;font-weight:700;letter-spacing:-.035em}.brand img{width:34px;height:34px}.brand small{display:block;font-weight:500;font-size:.7rem;letter-spacing:.12em;color:var(--muted);margin-top:1px}.nav{display:grid;gap:6px}.nav button{text-align:left;display:flex;align-items:center;gap:11px;border:0;background:transparent;color:var(--muted);padding:13px}.nav button.active{background:var(--blue-soft);color:var(--blue)}.nav .count{margin-left:auto;font-size:.75rem;padding:2px 6px;background:#dce4ff;border-radius:5px}.icon{width:19px;height:19px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.sidebar-bottom{margin-top:auto;display:grid;gap:12px}.sidebar-note{padding-top:18px;border-top:1px solid var(--line);font-size:.875rem;color:var(--muted);line-height:1.6}.sidebar-note strong{color:var(--ink);display:block;font-weight:550}.workspace{max-width:1540px;width:100%;padding:38px 42px 60px;margin:0 auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:28px}.topbar .eyebrow{margin-bottom:7px}.top-actions,.period,.inline{display:flex;align-items:center;gap:10px}.period{background:white;padding:5px;border:1px solid var(--line);border-radius:11px;gap:2px}.period input{border:0;padding:6px;font-size:.875rem}.period button{border:0;padding:8px 10px;font-size:.875rem}.period button.selected{background:var(--blue-soft);color:var(--blue)}
.overview-top{display:grid;grid-template-columns:1fr 1fr 1fr;gap:28px;padding:27px 0 28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:26px}.hero-total{font-size:clamp(2rem,3.3vw,3.15rem);font-family:"Avenir Next",-apple-system,sans-serif;font-weight:600;letter-spacing:-.055em;line-height:1.25;margin:10px 0 5px;white-space:nowrap}.hero-total .currency{font-size:.95rem;letter-spacing:0;margin-right:8px;font-family:inherit;font-weight:500;color:var(--muted)}.stat{padding-left:26px;border-left:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.stat-value{font-size:1.8rem;letter-spacing:-.035em;margin:10px 0 4px;font-weight:550}.charts{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,1fr);gap:22px;margin-bottom:26px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:23px;min-width:0}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}.chart{height:185px;display:flex;align-items:flex-end;gap:5px;padding-top:20px;border-bottom:1px solid var(--line)}.bar-col{flex:1;height:100%;min-width:0;display:flex;align-items:flex-end;justify-content:center}.bar{width:100%;max-width:35px;background:#ced8fb;border-radius:4px 4px 0 0;min-height:2px;position:relative}.bar:hover,.bar.high{background:var(--blue)}.bar.negative{background:#a3d5c5}.chart-labels{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted);margin-top:10px}.category-list{display:grid;gap:17px}.category-row{display:grid;grid-template-columns:1fr auto;gap:7px 14px;font-size:.875rem}.category-row>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-bar{height:4px;background:var(--canvas);border-radius:5px;grid-column:1/-1}.category-bar span{display:block;height:100%;background:var(--blue);border-radius:5px;opacity:.72}.footer-note{margin-top:19px;font-size:.8rem;color:var(--muted);line-height:1.5}
.ledger{padding:0;overflow:hidden}.ledger-head{padding:22px 23px 17px;display:flex;align-items:center;justify-content:space-between;gap:12px}.filters{display:flex;gap:10px;flex-wrap:wrap;padding:0 23px 20px}.filters input[type=search]{flex:1;min-width:180px}.filters select{font-size:.875rem;max-width:210px}.filters label{display:flex;gap:6px;align-items:center;font-size:.875rem}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.875rem;text-align:left}th{color:var(--muted);font-weight:500;background:#f9fbfd;padding:12px 23px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}td{padding:15px 23px;border-bottom:1px solid #edf0f5;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fcfdff}td:first-child{white-space:nowrap;color:var(--muted);width:100px}.description{min-width:180px;max-width:390px}.description strong{font-size:.92rem;font-weight:550;display:block}.description small{display:block;color:var(--muted);margin-top:4px;line-height:1.4;max-width:360px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.category-tag{display:inline-block;font-size:.8rem;padding:6px 9px;background:#f3f5fa;border-radius:6px;white-space:nowrap}.right{text-align:right}.amount{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.refund{color:var(--green)}.edit{padding:7px 8px;background:transparent;border:0;color:var(--muted);font-weight:500;font-size:.875rem}.review-dot{color:var(--amber);font-size:.75rem;display:inline-block;margin-left:8px}.pagination{padding:17px 23px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:.875rem}.empty{padding:40px 24px;color:var(--muted);text-align:center;line-height:1.6}.empty strong{display:block;color:var(--ink);margin-bottom:7px;font-weight:550}.banner{padding:16px 20px;background:#fff9ee;border:1px solid #efe0bd;color:#755019;border-radius:12px;font-size:.9rem;line-height:1.6;margin-bottom:22px}.note-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:24px}.note-grid .panel p{margin-top:10px}.review-list{display:grid;gap:12px}.review-item{display:grid;grid-template-columns:1fr auto;gap:15px;align-items:center}.review-item p{margin-top:6px}.review-item .amount{margin-bottom:12px}.readable{max-width:790px}.readable h2{margin-bottom:14px}.readable p{margin:12px 0}.readable ol{padding-left:22px;line-height:1.8}.readable code{background:var(--canvas);padding:3px 6px;border-radius:5px;font-size:.875rem;word-break:break-word}.readable blockquote{margin:18px 0;padding:20px;border-left:3px solid var(--blue);background:var(--blue-soft);font-size:1.1rem;line-height:1.6}.spaced{margin-top:24px}
dialog{border:1px solid var(--line);border-radius:19px;box-shadow:0 24px 100px #16283e30;padding:28px;width:min(590px,calc(100% - 24px));max-height:90vh;color:var(--ink)}dialog::backdrop{background:#10234270;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label{display:grid;gap:7px;font-size:.875rem;font-weight:550}.form-grid .full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{width:100%}.form-actions{display:flex;justify-content:space-between;gap:12px;margin-top:25px}.form-error{color:var(--red);font-size:.875rem;line-height:1.5;margin-top:16px}.history{font-size:.8rem;color:var(--muted);margin-top:14px;line-height:1.7}.login{max-width:420px;padding:35px;margin:15vh auto}.login .brand{margin-bottom:35px}.login h1{font-size:1.65rem;margin-bottom:12px}.login label{display:grid;gap:9px;margin:23px 0 18px;font-size:.875rem}.login button.primary{width:100%}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:40;max-width:calc(100% - 32px);background:var(--ink);color:white;border-radius:10px;padding:13px 20px;box-shadow:0 8px 30px #13254020;font-size:.9rem;display:none}#notice.visible{display:block}.signed-out{font-size:.8rem;color:var(--muted)}
@media(min-width:1500px){.workspace{padding-left:55px;padding-right:55px}}
@media(max-width:1150px){.layout{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:30px 15px}.workspace{padding:30px 25px}.topbar{align-items:flex-start;flex-wrap:wrap}.charts{grid-template-columns:1fr 1fr}.hero-total{font-size:2.25rem}.note-grid{grid-template-columns:1fr}.stat{padding-left:18px}.overview-top{gap:16px}th,td{padding-left:15px;padding-right:15px}}
@media(max-width:800px){.layout{display:block}.sidebar{position:static;height:auto;padding:16px 20px;gap:18px;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand small{display:inline;margin-left:8px}.nav{display:flex;gap:4px;overflow:auto}.nav button{white-space:nowrap;padding:10px;font-size:.875rem}.nav .count{margin-left:0}.sidebar-bottom{display:none}.workspace{padding:24px 18px 45px}.charts{grid-template-columns:1fr}.overview-top{grid-template-columns:1fr 1fr}.overview-top>div:first-child{grid-column:1/-1}.stat{padding-left:0;border:0}.hero-total{font-size:2.9rem}.top-actions{width:100%;justify-content:space-between;flex-wrap:wrap}.top-actions .primary{padding:10px 12px}.period{max-width:100%}.overview-top{padding-top:20px}.filters{padding-left:16px;padding-right:16px}.filters select{flex:1;min-width:130px;max-width:none}.ledger-head{padding-left:16px;padding-right:16px}.review-item{grid-template-columns:1fr}.review-item .right{text-align:left}.panel{padding:20px}.ledger{padding:0}.form-grid{gap:13px}.form-actions{flex-wrap:wrap}.nav .icon{width:16px;height:16px}.nav button:last-child{padding-right:0}.pagination{padding:14px}.hero-total .currency{font-size:1.1rem}}
@media(prefers-reduced-motion:no-preference){button{transition:background .12s ease}.panel{animation:appear .2s ease}@keyframes appear{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}}

/* Keep account access reachable on phones and contain refund bars. */
.category-bar{overflow:hidden}.category-bar.negative span{background:var(--green)}
dialog{overscroll-behavior:contain}button,a,input,select{touch-action:manipulation}
@media(max-width:800px){.sidebar-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:0;padding-top:0}.sidebar-note{display:none}.sidebar:has(.signed-out:only-child) .sidebar-bottom{display:none}}
@media(max-width:360px){.hero-total{font-size:2.35rem}.sidebar .brand small{font-size:.55rem}.pagination{flex-wrap:wrap}}
