:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;color:#e8f1f5;background:#080f19;font-synthesis:none;color-scheme:dark;--surface:#101c2b;--surface2:#142438;--line:#294054;--muted:#92a9bb;--accent:#42d9cb;--income:#66e2b0;--expense:#ff9da9}*{box-sizing:border-box}html{min-height:100%;scrollbar-color:#355166 #0b1521}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 80% -20%,#15344a 0%,transparent 55%),#080f19}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #32bcb4;border-radius:10px;background:linear-gradient(135deg,#48e1d0,#23bcb7);color:#06232b;padding:10px 15px;font-weight:700;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s}button:hover:not(:disabled){box-shadow:0 0 0 2px #42d9cb24;filter:brightness(1.08)}button:active:not(:disabled){transform:translateY(1px)}button.secondary{background:#182c3d;color:#d5e9ed;border-color:#37566b}button.danger{background:#402432;color:#ffc1ca;border-color:#8b4b5a}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,.amount:focus-visible{outline:2px solid #67f2e1;outline-offset:2px}input,select{width:100%;min-width:0;padding:11px 12px;border:1px solid #3a566b;border-radius:9px;background:#0b1928;color:#e8f1f5}input:focus,select:focus{border-color:#45d5cb}h1{font-size:clamp(23px,2.2vw,30px);letter-spacing:-.025em;margin:0}h2{font-size:18px;letter-spacing:-.01em}h3{font-size:16px}.muted{color:var(--muted)}.income{color:var(--income)}.expense{color:var(--expense)}.error{padding:12px 14px;background:#482633;color:#ffd0d6;border:1px solid #7d4350;border-radius:10px;margin:12px 0}.error button{float:right;padding:1px 8px}.layout{display:grid;grid-template-columns:246px minmax(0,1fr);min-height:100vh}aside{position:relative;background:linear-gradient(180deg,#102435,#0b1725 75%);border-right:1px solid #294254;padding:24px 15px;display:flex;flex-direction:column;gap:10px}aside .logo{width:100%;height:110px;object-fit:contain;filter:drop-shadow(0 0 18px #35e1d02b)}aside h2{color:#73f2e2;text-align:center;margin:0 0 24px;font-size:24px;letter-spacing:.08em}aside button{background:transparent;color:#bdd0dc;border:1px solid transparent;text-align:left;padding:13px 14px;font-weight:600}aside button:hover:not(:disabled){background:#173044;box-shadow:none}aside button.selected{background:linear-gradient(90deg,#164b50,#183748);border-color:#2a7479;color:#7cf5e4;box-shadow:inset 3px 0 #5cebdc}.asidefoot{margin-top:auto;display:grid;gap:12px;color:#829sad;font-size:12px;padding:14px 4px 0;border-top:1px solid #284152}.asidefoot button{font-size:13px}main{min-width:0;padding:28px clamp(14px,2.5vw,38px) 42px}header,.row,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}header{margin-bottom:26px;flex-wrap:wrap}header .muted{font-size:13px}.toolbar{justify-content:flex-start;flex-wrap:wrap;margin-bottom:16px}.toolbar h2{min-width:180px;text-align:center;text-transform:capitalize;margin:0}.panel{border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#132538,#101b2b);padding:22px;box-shadow:0 14px 42px #0002}.panel>.row{flex-wrap:wrap}.tree{border:1px solid #314b5f;border-radius:12px;padding:15px;margin:14px 0;background:#102031}.tree>.row,.subtree>.row{flex-wrap:wrap;justify-content:flex-start}.tree>.row strong,.subtree>.row span{margin-right:auto}.subtree{margin:14px 0 0 18px;border-left:2px solid #267e80;padding:8px 0 8px 16px}.cat{margin:9px 0 0 16px;color:#c4e5e4;display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 10px;border-radius:8px;background:#152a38}.cat button,.tree .row button{padding:7px 10px;font-size:12px}.tablewrap{overflow:auto;max-height:72vh;border:1px solid #355064;border-radius:14px;background:#0d1b2a;box-shadow:0 14px 36px #0002}table{border-spacing:0;border-collapse:separate;min-width:100%;font-variant-numeric:tabular-nums}th,td{padding:8px;border-right:1px solid #233c4d;border-bottom:1px solid #233c4d;white-space:nowrap;text-align:right;min-width:82px;font-size:12.5px}th .dow{display:block;font-size:10px;font-weight:400;color:var(--muted);line-height:1;margin-bottom:2px}th .dnum{font-size:14px}td .dot{font-size:14px;margin-right:4px;line-height:1}td .dot.income{color:var(--income)}td .dot.expense{color:var(--expense)}td .dirlabel{color:var(--muted);font-size:11px}tr.income>td.sticky{border-left:3px solid var(--income);padding-left:21px}tr.expense>td.sticky{border-left:3px solid var(--expense);padding-left:21px}.amount.has-data{cursor:pointer;transition:background .12s}.amount.has-data:hover{background:#1b5260!important}.amount:not(.has-data):hover{background:#11293a!important}.badge{display:inline-block;background:#2b5461;color:#c4f8ef;border-radius:8px;padding:1px 6px;margin-left:4px;font-size:10px;font-weight:700}th.today .dnum{color:#080f19}th.today{background:linear-gradient(135deg,#42d9cb,#23bcb7)!important;color:#06232b;box-shadow:0 0 0 2px var(--accent),inset 0 0 12px #fff3}td.today{box-shadow:inset 0 0 0 2px #42d9cb33}tr.income:hover>td:not(.sticky),tr.expense:hover>td:not(.sticky){background:#13283a}th{position:sticky;top:0;background:#1b3447;z-index:3;color:#cde3eb;font-weight:700}th.sticky,td.sticky{position:sticky;left:0;min-width:290px;text-align:left;background:#13293a;z-index:2;box-shadow:3px 0 9px #00000020}th.sticky{z-index:4;background:#1b3447}.group td{background:#134044;color:#83f2df;text-align:left;font-weight:750;letter-spacing:.015em}.subgroup td{background:#1a3544;text-align:left;color:#c2e2e7;font-weight:650}.indent{padding-left:24px}.amount{cursor:pointer;transition:background .12s}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#030910d9;display:grid;place-items:center;padding:16px;z-index:10;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.modal{background:linear-gradient(145deg,#172c3f,#101e2e);border:1px solid #47717d;border-radius:18px;padding:clamp(16px,3vw,28px);width:min(650px,100%);max-height:90vh;overflow:auto;box-shadow:0 26px 90px #0009}.modal>.row{align-items:flex-start}.modal>.row h2{margin-top:4px}.entry{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;border:1px solid #345267;background:#122638;padding:12px 14px;margin:9px 0;border-radius:10px}.entry>div{display:flex;flex-wrap:wrap;gap:7px}.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form label{display:grid;gap:7px;color:#b8d3de;font-size:13px}.form .row{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login .panel{width:min(420px,100%);display:grid;gap:16px}.login .logo{width:100%;height:125px;object-fit:contain}@media(max-width:900px){.layout{grid-template-columns:190px minmax(0,1fr)}aside{padding:18px 10px}th.sticky,td.sticky{min-width:230px}}@media(max-width:700px){.layout{grid-template-columns:minmax(0,1fr)}aside{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 12px}aside .logo{width:70px;height:48px}aside h2{display:none}aside button{padding:9px 10px;font-size:12px}.asidefoot{margin:0 0 0 auto;padding:0;border:0;display:flex;align-items:center;gap:8px}.asidefoot span{display:none}main{padding:18px 12px 28px}header{margin-bottom:18px}.form{grid-template-columns:1fr}th.sticky,td.sticky{min-width:190px}.subtree{margin-left:7px;padding-left:9px}.panel{padding:14px}.cat{margin-left:4px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}.toolbar{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}.tablewrap{box-shadow:0 12px 35px #0004}th.weekend{background:#1b2936!important;color:#b9d0dc}.today{box-shadow:inset 0 0 0 2px var(--accent)}.amount{transition:.15s ease}.amount:hover{background:#193342!important}.modal{box-shadow:0 20px 60px #0008}.catmodal{z-index:20}.catmodal .modal{width:min(480px,100%)}.catmodal .form{grid-template-columns:1fr}.catmodal .form>label{margin:6px 0}.catmodal .row{gap:10px}th.weekend{background:#1a2438!important}th.weekend .dow{color:#7a8ba0}td.weekend{background:#101b2c!important}.subgroup td{font-size:12.5px}td.groupname,td.subgroupname{position:sticky;left:0;z-index:2;box-shadow:3px 0 9px #00000020}.plus{color:#3a566b;font-size:11px;opacity:.4}.amount.weekend{background:#101b2c!important}.amount.weekend.has-data{background:#142539!important}td.weekend{background:#101b2c}tr.income>td.weekend,tr.expense>td.weekend{background:#101b2c}.accounts-page{max-width:800px}.account-card{border:1px solid var(--line);border-radius:12px;background:linear-gradient(145deg,#132538,#101b2b);padding:18px;margin:14px 0;box-shadow:0 8px 24px #0002}.account-card .row{align-items:flex-start}.account-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.account-info>div{display:grid;gap:2px;min-width:0}.account-info strong{font-size:15px;color:#e8f1f5}.account-kind{font-size:22px;line-height:1;width:36px;height:36px;display:grid;place-items:center;border-radius:10px;flex-shrink:0}.account-kind.bank{background:#1a3a4a}.account-kind.cash{background:#3a2a1a}.account-balance{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding-top:12px;border-top:1px solid #243a4d}.balance-amount{font-size:18px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.total-balance{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#0d2d38,#103a3a);border:1px solid #1a5560;border-radius:14px;padding:16px 20px;margin:16px 0}.total-amount{font-size:24px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.balance-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.balance-row .muted{font-size:13px}.balance-row span:last-child{font-variant-numeric:tabular-nums;font-size:15px}
