:root{--bg:#131211;--surface:#1a1817;--surface-2:#201e1d;--line:#3a3635;--line-soft:#262322;--gap:#2a2726;--text:#f3f2f2;--muted:#8f8a89;--accent:#ff7a18;--accent-soft:#ffb073}html,body{background:var(--bg);margin:0;padding:0}*{box-sizing:border-box}body{font-size:15px;line-height:1.55}input,select{font:inherit;color:inherit;background:0 0;border:0;outline:0}button{font-family:inherit}input::placeholder{color:var(--muted)}select option{background:var(--surface-2);color:var(--text)}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-soft)}::selection{background:var(--accent);color:var(--bg)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line)}::-webkit-scrollbar-track{background:var(--surface)}.app{background:var(--bg);color:var(--text);min-height:100vh;font-family:Archivo,system-ui,sans-serif}.topbar{border-bottom:2px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.topbar-left{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.screen-title{letter-spacing:-.02em;text-transform:uppercase;font-size:22px;font-weight:800}.year{border:2px solid var(--line);align-items:center;display:flex}.year button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:6px 12px;font-size:18px;line-height:1}.year button:hover{color:var(--accent)}.year span{color:var(--accent);font-variant-numeric:tabular-nums;padding:0 6px;font-size:18px;font-weight:700}.views{border:2px solid var(--line);display:flex}.views button{letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--muted);background:0 0;border:0;padding:10px 18px;font-size:12px;font-weight:700}.views button.on{background:var(--accent);color:var(--bg)}.months{border-bottom:2px solid var(--line);align-items:center;gap:6px;padding:10px 16px;display:flex;overflow-x:auto}.months button{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;background:var(--surface);color:var(--muted);border:0;flex:none;padding:8px 16px;font-size:12px;font-weight:700}.months button.on{background:var(--accent);color:var(--bg)}.tiles{background:var(--gap);border-bottom:2px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2px;display:grid}.tile{background:var(--surface);flex-direction:column;gap:4px;padding:14px 16px;display:flex}.label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px}.tile-value{letter-spacing:-.02em;font-size:26px;font-weight:800}.page{padding:16px 16px 56px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.search{border:2px solid var(--line);align-items:center;gap:8px;min-width:240px;padding:8px 12px;display:flex}.search span{color:var(--muted);font-size:13px}.search input{flex:1;font-size:13px}.btn-outline{border:2px solid var(--line);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;padding:8px 14px;font-size:12px;font-weight:700}.count{color:var(--muted);font-size:13px}.btn-add{background:var(--accent);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:0;margin-left:auto;padding:10px 18px;font-size:12px;font-weight:700}.btn-add.full{flex:1 0 100%;margin-left:0}.table{border:2px solid var(--line);background:var(--surface);overflow-x:auto}.table-inner{min-width:900px}.trow{border-bottom:1px solid var(--line-soft);align-items:center;display:grid}.trow:hover{background:var(--surface-2)}.thead{border-bottom:2px solid var(--line);display:grid}.thead>div{padding:12px 14px}.tfoot{border-top:2px solid var(--line);background:var(--surface-2);align-items:center;display:grid}.tfoot-label{letter-spacing:.1em;text-transform:uppercase;padding:14px;font-size:12px;font-weight:700}.tfoot-value{text-align:right;font-variant-numeric:tabular-nums;padding:14px;font-size:17px;font-weight:800}.swatch{align-self:stretch}.cell-desc{align-items:center;gap:10px;padding:0 14px;display:flex}.dot{flex:none;width:8px;height:8px}.in-desc{width:100%;padding:12px 0;font-size:14px}.cell-cat{padding:6px 14px 6px 0}.in-cat{letter-spacing:.04em;text-transform:uppercase;width:100%;padding:5px 10px;font-size:12px;font-weight:600}.cell-month{padding:0 6px 0 0}.in-month{text-transform:uppercase;letter-spacing:.06em;cursor:pointer;width:100%;color:var(--muted);padding:10px 6px;font-size:13px}.cell-pad{padding:0 14px 0 0}.cell-val{padding:0 14px}.in-val{text-align:right;font-variant-numeric:tabular-nums;width:100%;padding:12px 0;font-size:15px;font-weight:700}.cell-del{justify-content:center;display:flex}.del{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:8px;font-size:16px;line-height:1}.del:hover{color:var(--accent)}.chip{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.chip-paid{text-align:left;background:var(--accent);width:100%;color:var(--bg);border:0;padding:7px 10px}.chip-paid.done{background:var(--gap);color:var(--muted)}.chip-fixed{border:2px solid var(--line);text-align:left;width:100%;color:var(--muted);background:0 0;padding:5px 8px}.chip-fixed.on{border-color:var(--accent-soft);color:var(--accent-soft)}.cards{border:2px solid var(--line);background:var(--surface)}.card{border-bottom:1px solid var(--line-soft);grid-template-columns:5px 1fr;display:grid}.card-body{flex-direction:column;gap:10px;padding:12px 12px 14px;display:flex}.card-top{align-items:center;gap:10px;display:flex}.card-top .in-desc{flex:1;width:auto;min-width:0;padding:4px 0;font-size:16px;font-weight:600}.card-top .in-val{width:110px;padding:4px 0;font-size:17px;font-weight:800}.card-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card-meta .in-cat{width:130px;padding:7px 10px}.card-meta .in-month{background:var(--surface-2);width:auto;padding:7px 6px}.card-meta .chip-paid{width:auto;padding:8px 12px}.card-meta .chip-fixed{width:auto;padding:6px 10px}.card-meta .del{margin-left:auto;padding:8px 10px;font-size:20px}.cards-foot{border-top:2px solid var(--line);background:var(--surface-2);justify-content:space-between;align-items:center;gap:12px;padding:14px 12px;display:flex}.cards-foot .tfoot-label,.cards-foot .tfoot-value{padding:0}.empty{border:2px solid var(--line);background:var(--surface);border-top:0;flex-direction:column;gap:6px;padding:28px 16px;display:flex}.empty strong{font-size:15px;font-weight:700}.empty span{color:var(--muted);font-size:13px}.footnote{flex-wrap:wrap;align-items:center;gap:16px;margin-top:12px;display:flex}.footnote span{color:var(--muted);font-size:12px}.footnote .reset{color:var(--muted);cursor:pointer;letter-spacing:.06em;text-transform:uppercase;background:0 0;border:0;margin-left:auto;font-size:12px}.bento{grid-template-columns:repeat(12,1fr);gap:16px;padding:16px 16px 56px;display:grid}.bento.narrow{grid-template-columns:1fr}.box{border:2px solid var(--line);background:var(--surface);flex-direction:column;padding:20px;display:flex}.span-7{grid-column:span 7}.span-5{grid-column:span 5}.bento.narrow .box{grid-column:span 1}.box-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.legend{gap:16px;display:flex}.legend span{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.legend i{width:10px;height:10px;display:block}.bars{grid-template-columns:repeat(12,1fr);align-items:end;gap:4px;display:grid}.bar{cursor:pointer;color:inherit;background:0 0;border:0;flex-direction:column;justify-content:flex-end;gap:6px;padding:0;display:flex}.bar-top{text-align:center;color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}.bar-pair{align-items:flex-end;gap:3px;height:170px;display:flex}.bar-pair div{flex:1}.bar-label{text-align:center;text-transform:uppercase;letter-spacing:.06em;font-size:11px}.cat{flex-direction:column;gap:6px;display:flex}.cat-head{justify-content:space-between;align-items:baseline;gap:12px;font-size:13px;display:flex}.cat-name{letter-spacing:.04em;text-transform:uppercase}.cat-val{font-variant-numeric:tabular-nums;font-weight:700}.cat-val em{color:var(--muted);font-style:normal;font-weight:400}.track{background:var(--gap);height:8px}.track div{height:8px}.top-row{border-bottom:1px solid var(--line-soft);justify-content:space-between;gap:12px;padding:9px 0;font-size:14px;display:flex}.top-row span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.top-row span:last-child{font-variant-numeric:tabular-nums;font-weight:700}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-content:start;gap:20px;display:grid}.stat{flex-direction:column;gap:4px;display:flex}.stat-value{letter-spacing:-.02em;font-size:28px;font-weight:800}.login{min-height:100vh;color:var(--text);background:#0d0c0b;grid-template-columns:1.15fr 1fr;font-family:Archivo,system-ui,sans-serif;display:grid}.login-art{background:#0d0c0b;min-height:100vh;position:relative;overflow:hidden}.login-glow{background:radial-gradient(900px 620px at 15% -10%,#ff7a1857,#0000 60%),radial-gradient(700px 700px at 105% 105%,#ff7a182e,#0000 55%),linear-gradient(160deg,#0d0c0b 0%,#16130f 55%,#1c1611 100%);position:absolute;inset:0}.login-grid{background-image:linear-gradient(#f3f2f20d 1px,#0000 1px),linear-gradient(90deg,#f3f2f20d 1px,#0000 1px);background-size:64px 64px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000000e6 30%,#000 60%);mask-image:linear-gradient(#0000,#000000e6 30%,#000 60%)}.login-orbits{opacity:.9;width:auto;height:100%;position:absolute;top:0;right:-40px}.login-bars{opacity:.85;align-items:flex-end;gap:7px;height:190px;padding:0 56px;display:flex;position:absolute;bottom:0;left:0;right:0}.login-bars div{border-radius:2px 2px 0 0;flex:1}.login-fade{background:linear-gradient(#0000,#0d0c0b 92%);height:190px;position:absolute;bottom:0;left:0;right:0}.login-copy{flex-direction:column;gap:18px;height:100%;padding:56px;display:flex;position:relative}.login-hero{flex-direction:column;gap:20px;max-width:520px;margin-top:auto;display:flex}.login-kicker{letter-spacing:.32em;text-transform:uppercase;color:var(--accent-soft);font-size:11px}.login-hero h1{letter-spacing:-.03em;margin:0;font-size:56px;font-weight:800;line-height:1.03}.login-hero p{color:#b9b4b2;text-wrap:pretty;max-width:400px;margin:0;font-size:16px;line-height:1.6}.brand{align-items:center;gap:11px;display:flex}.brand-mark{background:var(--accent);width:28px;height:28px;color:var(--bg);border-radius:7px;justify-content:center;align-items:center;font-size:15px;font-weight:900;display:flex}.brand span{letter-spacing:-.01em;font-size:19px;font-weight:800}.login-side{background:var(--bg);justify-content:center;align-items:center;padding:40px 24px;display:flex;position:relative}.login-side:before{content:"";background:radial-gradient(520px 420px at 50% 0,#ff7a180d,#0000 60%);position:absolute;inset:0}.login-box{flex-direction:column;gap:24px;width:100%;max-width:380px;display:flex;position:relative}.login-brand-mobile{display:none}.login-head{flex-direction:column;gap:7px;display:flex}.login-title{letter-spacing:-.02em;font-size:28px;font-weight:800}.login-sub{color:var(--muted);font-size:14px}.login-error{color:var(--accent);background:#ff7a180f;border:1.5px solid #ff7a1866;border-radius:8px;padding:10px 12px;font-size:13px}.login-cta{background:var(--accent);color:var(--bg);letter-spacing:.06em;text-transform:uppercase;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:15px 18px;font-size:13px;font-weight:800;display:flex}.login-cta:hover{background:var(--accent-soft);color:var(--bg)}.login-note{color:#716c6a;font-size:12px;line-height:1.5}@media (width<=759px){.login{grid-template-columns:1fr}.login-art{display:none}.login-brand-mobile{display:block}}.splash{text-align:center;background:var(--bg);min-height:100vh;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;font-family:Archivo,system-ui,sans-serif;font-size:14px;display:flex}.splash strong{color:var(--text);font-size:18px}.account{align-items:center;gap:10px;display:flex}.account img{border:2px solid var(--line);width:30px;height:30px;display:block}.account button{border:2px solid var(--line);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;padding:8px 12px;font-size:12px;font-weight:700}.account button:hover{color:var(--accent)}.topbar-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.sync{color:var(--muted);font-size:12px}.sync.bad{color:var(--accent)}.sync button{color:var(--accent);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0 0 0 8px;font-size:12px;text-decoration:underline}
