:root{--bg:#f6f5f1;--surface:#fff;--ink:#14161a;--muted:#6b6f76;--line:#e4e2dc;--real:#1f4fd6;--real-soft:#e8eefc;--budget:#8a5a00;--budget-soft:#fbf1dc;--fc:#2e7d4f;--fc-soft:#e3f2e8;--neg:#c2362b;--neg-soft:#fbe6e3}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.app{height:100vh;display:flex;overflow:hidden}.side{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:none;gap:4px;width:212px;padding:22px 14px;display:flex}.logo{letter-spacing:-.02em;align-items:center;gap:10px;padding:0 10px 18px;font-size:21px;font-weight:800;display:flex}.logo img{object-fit:contain}.logo span{color:var(--budget)}.nav{color:var(--ink);border-radius:8px;align-items:center;gap:10px;padding:9px 10px;display:flex}.nav:hover{background:#f2f0ea}.nav.on{background:var(--real-soft);color:var(--real);font-weight:600}.side .grow{flex:1}.who{color:var(--muted);border-top:1px solid var(--line);padding:10px;font-size:12px}.who button{color:var(--real);cursor:pointer;background:0 0;border:0;margin-top:4px;padding:0;font-size:12px}.main{flex-direction:column;flex:1;gap:14px;min-width:0;padding:22px 26px 18px;display:flex;overflow:auto}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.top h1{letter-spacing:-.02em;margin:0;font-size:26px}.top p{color:var(--muted);margin:2px 0 0;font-size:13px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:600}.btn:hover{background:#f7f6f2}.btn:disabled{opacity:.45;cursor:default}.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn.dark:hover{background:#2a2d33}.btn.amber{background:var(--budget);border-color:var(--budget);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.danger{color:var(--neg)}select.btn{padding-right:28px}.input{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;padding:8px 10px}.input:focus,.btn:focus-visible{outline:2px solid var(--real);outline-offset:1px}.pill{letter-spacing:.02em;border-radius:20px;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.pill.ref{background:var(--budget-soft);color:var(--budget)}.pill.scn{background:var(--fc-soft);color:var(--fc)}.pill.frz{color:var(--muted);background:#edebe5}.save{color:var(--muted);font-size:12px}.save.ok{color:var(--fc)}.save.err{color:var(--neg);font-weight:600}.banner{background:var(--budget-soft);color:#6a4500;border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:13px;display:flex}.banner.err{background:var(--neg-soft);color:#8e2219}.banner button{margin-left:auto}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px}.card.pad{padding:16px 18px}.row{gap:14px;display:flex}.kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.kpi{padding:14px 16px}.kpi .l{color:var(--muted);font-size:12px;font-weight:600}.kpi .v{letter-spacing:-.02em;margin:2px 0;font-size:26px;font-weight:700}.kpi .s{color:var(--muted);font-size:12px}.delta{border-radius:20px;margin-top:6px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.delta.good{background:var(--fc-soft);color:var(--fc)}.delta.bad{background:var(--neg-soft);color:var(--neg)}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;min-height:320px;display:flex;overflow:hidden}.sheet-body{flex:1;min-height:0}.statusbar{border-top:1px solid var(--line);background:#fafaf8;align-items:center;gap:18px;padding:7px 14px;font-size:12px;display:flex}.statusbar .spacer{flex:1}.legend{color:var(--muted);align-items:center;gap:14px;font-size:12px;display:flex}.sw{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:5px;display:inline-block}.fx{background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;padding:4px 6px 4px 12px;display:flex}.fx .ref{min-width:190px;color:var(--ink);font-size:13px;font-weight:600}.fx .tag{color:var(--muted);font-size:12px;font-weight:700}.fx input{background:0 0;border:0;flex:1;padding:6px;font-family:JetBrains Mono,ui-monospace,Menlo,monospace;font-size:13px}.fx input:focus{outline:none}.fx .hint{color:var(--muted);white-space:nowrap;padding-right:6px;font-size:12px}table.t{border-collapse:collapse;width:100%;font-size:13px}table.t th{text-align:right;color:var(--muted);border-bottom:1px solid var(--line);background:#fafaf8;padding:8px 10px;font-size:12px;font-weight:600}table.t td{text-align:right;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;padding:8px 10px}table.t th:first-child,table.t td:first-child{text-align:left}table.t tr.b td{background:#fafaf8;font-weight:700}table.t .good{color:var(--fc)}table.t .bad{color:var(--neg)}.panel{flex-direction:column;flex:none;gap:10px;width:330px;padding:16px;display:flex;overflow:auto}.panel h3{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:12px}.panel .big{font-size:26px;font-weight:700}.kv{border-bottom:1px solid var(--line);justify-content:space-between;gap:10px;padding:7px 0;font-size:13px;display:flex}.kv span:last-child{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login form{flex-direction:column;gap:12px;width:360px;padding:28px;display:flex}.login h1{margin:0 0 4px;font-size:26px}.login label{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.tree{flex-direction:column;display:flex}.tnode{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 240px 200px 190px;align-items:center;gap:8px;padding:6px 12px;display:grid}.tnode.top{background:#fafaf8}.tnode .input{padding:6px 8px}.tnode .name{align-items:center;gap:6px;display:flex}.tools{gap:2px;display:flex}.tools .btn{padding:4px 8px;font-weight:500}.snap{cursor:pointer;background:#fafaf8;border:1.5px solid #0000;border-radius:10px;flex-direction:column;gap:4px;padding:12px;display:flex}.snap.on{background:var(--real-soft);border-color:var(--real)}.snap .n{align-items:center;gap:8px;font-weight:700;display:flex}.snap .m{color:var(--muted);font-size:12px}.links{flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.links button{color:var(--real);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;font-weight:600}.links button.danger{color:var(--neg)}.hist{border-bottom:1px solid var(--line);padding:8px 0;font-size:13px}.hist .w{color:var(--muted);font-size:11px}.cell-editor{border:2px solid var(--real);text-align:right;background:#fff;border-radius:2px;outline:none;width:100%;min-width:120px;height:30px;padding:0 8px;font:13px Inter,system-ui,sans-serif}.tnode select{width:100%}.tnode .name .input{min-width:0}
