:root{--sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--bg: #f7f8fa;--surface: #ffffff;--surface-2: #fbfbfd;--border: #e6e8ee;--border-strong: #cdd2dc;--text: #0c111d;--text-2: #4a5161;--text-3: #8a92a3;--accent: #2f5dff;--accent-soft: #eef2ff;--ochre: #b88433;--ochre-soft: #fdf6e7;--ochre-line: #f0d491;--green: #10b981;--red: #ef4444;--amber: #f59e0b;--nav: #0b1020;--ribbon: #eef0f4;--ribbon-tabs: #dfe3eb;--ribbon-border: #c9cfd9;--ribbon-divider: #d3d8e0;--formula: #f4f6f9}*{box-sizing:border-box;border-radius:0}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:12px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:inherit}button:disabled{cursor:default}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.shell{display:flex;flex-direction:column;height:100%;min-width:0}.app-bar{height:30px;flex-shrink:0;background:var(--nav);color:#cfd6ee;display:flex;align-items:center;gap:12px;padding:0 12px;font-size:11.5px}.app-brand{font-weight:700;color:#fff;letter-spacing:.02em;white-space:nowrap}.app-wb{display:flex;align-items:center;gap:6px;padding:3px 10px;background:#ffffff0f;color:#fff;font-weight:500;white-space:nowrap}.app-wb:hover{background:#ffffff1f}.app-wb-mark{width:6px;height:6px;background:var(--ochre);flex-shrink:0}.app-wb-sub{color:#ffffff8c;font-weight:400}.app-wb-chev{color:#ffffff73;display:flex}.app-save{color:#ffffff80;font-size:10.5px;white-space:nowrap}.app-spacer{flex:1}.app-search{width:300px;max-width:30vw;display:flex;align-items:center;gap:6px;padding:4px 10px;background:#ffffff14;color:#ffffffb3;font-size:11.5px;white-space:nowrap}.app-search:hover{background:#ffffff24}.app-search span{flex:1;overflow:hidden;text-overflow:ellipsis}.app-search kbd{font-family:var(--mono);font-size:10px;padding:0 4px;background:#ffffff1a}.app-user{display:flex;align-items:center;gap:8px;font-size:11px;color:#fff;white-space:nowrap}.app-avatar{width:20px;height:20px;border-radius:50%;background:#3a4570;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:10px}.rx{position:relative;background:var(--ribbon);border-bottom:1px solid var(--ribbon-border);flex-shrink:0;z-index:20}.rx-tabs{display:flex;align-items:flex-end;height:30px;padding:0 8px;gap:1px;background:var(--ribbon-tabs);border-bottom:1px solid var(--ribbon-border)}.rx-tab{position:relative;display:inline-flex;align-items:center;gap:5px;padding:6px 14px 5px;font-size:12px;font-weight:500;line-height:1;color:var(--text-2);border:1px solid transparent;border-bottom:0;white-space:nowrap}.rx-tab:hover:not(.active):not(.special):not(.locked){background:#ffffff80}.rx-tab.special{background:var(--accent);color:#fff;font-weight:600;padding-left:18px;padding-right:18px}.rx-tab.special:hover{background:#2450e6}.rx-tab.active{background:var(--ribbon);color:var(--text);font-weight:600;border-color:var(--ribbon-border);margin-bottom:-1px;padding-top:5px;padding-bottom:6px}.rx.collapsed .rx-tab.active{border-bottom:1px solid var(--ribbon-border);margin-bottom:-1px}.rx-tab.locked{color:var(--text-3);opacity:.55;cursor:not-allowed}.rx-lock{display:inline-flex;color:var(--text-3)}.rx-tabs-spacer{flex:1}.rx-band{display:flex;align-items:stretch;padding:6px 10px;min-height:104px;background:var(--ribbon);overflow:hidden}.rx-group{display:flex;flex-direction:column;align-items:center;padding:0 10px;min-width:0}.rx-group+.rx-group{border-left:1px solid var(--ribbon-divider)}.rx-group-content{display:flex;align-items:stretch;gap:2px;flex:1}.rx-group-col{display:flex;flex-direction:column;justify-content:center}.rx-group-label{font-size:10.5px;font-weight:500;color:var(--text-3);margin-top:3px;padding-top:2px;text-align:center;white-space:nowrap}.rx-group.disabled{opacity:.4}.rx-group.disabled button{pointer-events:none}.rx-btn-lg{display:flex;flex-direction:column;align-items:center;padding:4px 8px 2px;min-width:54px}.rx-btn-lg:hover:not(:disabled){background:#2f5dff14}.rx-btn-lg .ico{width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:var(--text)}.rx-btn-lg.primary .ico{color:var(--accent)}.rx-btn-lg.success .ico{color:var(--green)}.rx-btn-lg.danger .ico{color:var(--red)}.rx-btn-lg .lbl{font-size:11px;color:var(--text);margin-top:2px;line-height:1.2;text-align:center;max-width:84px}.rx-btn-lg .lbl small{display:block;font-size:9.5px;color:var(--text-3)}.rx-btn-sm{display:flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;font-size:11.5px;color:var(--text);min-width:0;width:100%}.rx-btn-sm:hover:not(:disabled){background:#2f5dff14}.rx-btn-sm .ico{width:14px;height:14px;flex-shrink:0;color:var(--text-2);display:flex;align-items:center;justify-content:center}.rx-btn-sm.primary .ico{color:var(--accent)}.rx-btn-sm.danger,.rx-btn-sm.danger .ico{color:var(--red)}.rx-btn-sm.success{color:var(--green)}.rx-btn-sm .lbl{white-space:nowrap}.rx-btn-sm .chev{color:var(--text-3);margin-left:auto;padding-left:6px;display:flex}.rx-quick{display:flex;align-items:center;align-self:center;gap:1px;padding-left:8px;border-left:1px solid var(--ribbon-border);margin-bottom:1px}.rx-quick-btn{width:24px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--text-2)}.rx-quick-btn:hover:not(:disabled){background:#2f5dff1a;color:var(--text)}.rx-quick-btn.danger{color:var(--red)}.rx-quick-btn.disabled{opacity:.35}.rx-overlay{position:absolute;left:0;right:0;top:100%;z-index:30;background:var(--ribbon);border-bottom:1px solid var(--ribbon-border);box-shadow:0 8px 20px #0c111d24}.rx-formula{display:flex;align-items:center;gap:8px;min-height:30px;padding:4px 10px;flex-shrink:0;background:var(--formula);border-bottom:1px solid var(--ribbon-divider);font-size:12px}.rx-namebox{min-width:120px;padding:2px 8px;background:#fff;border:1px solid var(--ribbon-border);font-weight:600;font-size:11.5px;white-space:nowrap}.rx-fx{font-family:Georgia,Times New Roman,serif;font-style:italic;color:var(--text-3);padding:0 6px;border-left:1px solid var(--ribbon-divider);border-right:1px solid var(--ribbon-divider);line-height:1.4}.rx-summary{flex:1;min-width:0;padding:2px 8px;background:#fff;border:1px solid var(--ribbon-border);color:var(--text-2);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg)}.content-panel{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.panel-placeholder{margin:14px 22px;padding:28px 24px;background:var(--surface);border:1px solid var(--border)}.panel-kicker,.section-kicker{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.panel-title{font-size:18px;font-weight:600;margin-top:4px}.panel-note{font-size:11.5px;color:var(--text-3);margin-top:8px}.ap-split{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr}.ap-source{padding:14px;border-right:1px solid var(--border);min-width:0;display:flex;flex-direction:column}.ap-doc{flex:1;background:var(--surface);border:1px solid var(--border);padding:36px 40px;position:relative;font-size:10.5px;color:var(--text-2);line-height:1.7}.ap-doc-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.3}.ap-doc-sub{color:var(--text-3);margin-top:2px}.ap-doc hr{border:0;border-top:1px solid var(--border);margin:10px 0}.ap-doc hr.strong{border-top-color:var(--text)}.ap-doc-meta b{color:var(--text)}.ap-doc-lines{display:grid;grid-template-columns:1fr 96px;gap:3px 12px;margin-top:12px}.ap-doc-lines .num{text-align:right}.ap-doc-lines.total{margin-top:0;font-weight:600;color:var(--text)}.ap-doc-stub{position:absolute;left:40px;right:40px;bottom:24px;color:var(--text-3);font-size:10.5px}.ap-coding{background:var(--surface);min-width:0;overflow:auto;padding:14px 18px}.ap-coding .section-kicker{margin-bottom:8px}.ap-coding .section-kicker+.grid{margin-bottom:18px}.grid{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}.grid thead th{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--border)}.grid th.r,.grid td.r{text-align:right}.grid td.r{font-family:var(--mono);font-variant-numeric:tabular-nums}.grid tbody td{padding:9px 12px;border-bottom:1px solid var(--border)}.grid td.dim{font-size:11.5px;color:var(--text-2)}.grid td.big{font-size:13.5px}.grid .w-gl{width:80px}.grid .w-vat{width:56px}.grid .code{font-family:var(--mono);font-weight:600;font-size:11.5px;padding:2px 6px;background:var(--surface-2);border:1px solid var(--border)}.grid tr.split td:first-child{border-left:2px solid var(--ochre-line)}.grid tr.split .code{background:#fff;border-color:var(--ochre-line)}.grid .split-tag{font-size:9.5px;font-weight:600;color:#92621e;margin-left:4px;text-transform:uppercase;letter-spacing:.06em}.grid tr.total td{background:var(--bg);font-weight:600;border-top:1px solid var(--border-strong)}.routing{font-size:11.5px;color:var(--text-2);line-height:1.7}.sheet-tabs{display:flex;align-items:stretch;height:26px;flex-shrink:0;padding:0 6px;background:var(--ribbon-tabs);border-top:1px solid var(--ribbon-border);font-size:11.5px;overflow:hidden}.sheet-nav{display:flex;align-items:center;padding:0 10px 0 4px;color:var(--text-3);letter-spacing:.3em;font-size:12px}.sheet-tab{display:flex;align-items:center;padding:0 12px;color:var(--text-2);font-weight:500;border-right:1px solid var(--ribbon-border);border-bottom:2px solid transparent;white-space:nowrap}.sheet-tab:hover:not(.active){background:#ffffff80}.sheet-tab.active{background:var(--surface);color:var(--text);font-weight:700;border-bottom-color:var(--ochre)}.sheet-tab:first-of-type{border-left:1px solid var(--ribbon-border)}.sheet-add{display:flex;align-items:center;padding:0 10px;color:var(--text-3);font-size:14px}.sheet-add:hover{color:var(--text)}.status-bar{display:flex;align-items:center;gap:10px;height:24px;flex-shrink:0;padding:0 12px;background:var(--formula);border-top:1px solid var(--border);font-size:11px;color:var(--text-3);white-space:nowrap}.status-bar .sep{color:var(--border-strong)}.status-spacer{flex:1}.status-health{display:flex;align-items:center}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong)}.status-dot.ok{background:var(--green)}.status-dot.down{background:var(--red)}.status-perm{display:flex;align-items:center;gap:6px}.status-perm select{font:inherit;font-size:11px;color:var(--text-2);background:#fff;border:1px solid var(--ribbon-border);padding:1px 4px;height:18px}.boot{height:100%;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--text-2);font-size:12.5px}.boot.error{flex-direction:column;color:var(--red)}.boot-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.boot-btn{padding:4px 12px;border:1px solid var(--border-strong);background:#fff;color:var(--text);font-size:12px}.muted{color:var(--text-3)}.pos{color:var(--ochre)}.neg{color:var(--red)}.strong{font-weight:600}.dim{color:var(--text-2)}.mono-cell{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11.5px}.link{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.btn{padding:3px 10px;border:1px solid var(--border-strong);background:#fff;font-size:11.5px;font-weight:500;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent)}.tag{display:inline-block;vertical-align:middle;font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;line-height:1;padding:3px 5px 2px;border:1px solid var(--border-strong);color:var(--text-2);background:#fff;white-space:nowrap}.tag.locked{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.tag.draft{border-color:var(--ochre-line);color:#92621e;background:var(--ochre-soft)}.tag.superseded{color:var(--text-3);border-color:var(--border)}.tag.active{border-color:#a7e3c9;color:#0b7a4f;background:#ecfaf3}.tag.pool{border-color:var(--ochre-line);color:#92621e;background:var(--ochre-soft)}.tag.alias{text-transform:none;letter-spacing:0;font-weight:500;font-size:10.5px;padding:2px 5px;margin:1px 4px 1px 0;background:var(--surface-2);border-color:var(--border);color:var(--text-2)}.tag.class-project_cost{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.tag.class-corporate_cost{border-color:var(--ochre-line);color:#92621e;background:var(--ochre-soft)}.tag.class-revenue{border-color:#a7e3c9;color:#0b7a4f;background:#ecfaf3}.tag.role-superuser{border-color:var(--text);color:var(--text)}.tag.role-controller{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.tag.role-producer,.tag.act-update{border-color:var(--ochre-line);color:#92621e;background:var(--ochre-soft)}.tag.act-lock{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.tag.act-create{border-color:#a7e3c9;color:#0b7a4f;background:#ecfaf3}.screen{display:flex;flex-direction:column;min-height:100%;background:var(--surface)}.screen-empty{margin:14px 22px;padding:28px 24px;background:var(--surface);border:1px solid var(--border);color:var(--text-2);font-size:12.5px}.screen-empty.muted{color:var(--text-3)}.screen-foot{padding:10px 14px;font-size:11px;color:var(--text-3);border-top:1px solid var(--border);background:var(--surface-2);margin-top:auto}.toolbar{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);position:sticky;top:0;z-index:3}.toolbar-note{font-size:11px;color:var(--text-3)}.toolbar-title{font-size:12.5px;font-weight:600}.filter{width:320px;max-width:60vw;font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--border-strong);background:#fff;color:var(--text);outline:none}.filter:focus{border-color:var(--accent)}.filter::-webkit-search-cancel-button{-webkit-appearance:none}.grid.dense{font-size:12px}.grid.dense thead th{padding:7px 10px}.grid.dense tbody td{padding:6px 10px;vertical-align:middle}.grid.sticky-head thead th{position:sticky;top:0;z-index:2}.toolbar+.grid.sticky-head thead th{top:37px}.grid .w-code{width:72px}.grid .w-no{width:44px}.grid tr.row-click{cursor:pointer}.grid tr.row-click:hover td{background:var(--surface-2)}.grid tr.selected td{background:var(--ochre-soft)}.grid tr.selected td:first-child{box-shadow:inset 2px 0 0 var(--ochre)}.grid tr.inactive td{color:var(--text-3)}.grid td.aliases{line-height:1.9}.grid td.memberships{line-height:2}.membership{display:inline-flex;align-items:center;gap:4px;margin-right:12px;white-space:nowrap}.membership.inactive{opacity:.5}.new-tag{font-size:9.5px;font-weight:600;color:#92621e;margin-left:6px;text-transform:uppercase;letter-spacing:.06em}.split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 420px;background:var(--surface)}.split-main{min-width:0;overflow:auto}.split-side{border-left:1px solid var(--border);overflow:auto;background:var(--surface)}.detail{padding:14px 16px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.detail-title{font-size:16px;font-weight:600;margin-top:2px}.detail-sub{font-size:11.5px;color:var(--text-2);margin-top:3px;line-height:1.5}.detail .section-kicker{margin:4px 0 6px}.detail .grid{margin-bottom:16px}.detail .grid thead th,.detail .grid tbody td{padding:6px 8px}.detail .grid td.nowrap{white-space:nowrap}.budget-grid{font-size:12.5px}.budget-grid .w-amt{width:150px}.budget-grid .w-delta{width:110px}.budget-grid .th-sub{font-weight:500;color:var(--text-3);text-transform:none;letter-spacing:0;margin-left:4px}.budget-grid tbody tr.line{cursor:default}.budget-grid tbody tr.line:hover td{background:var(--surface-2)}.budget-grid tbody tr.line td{padding:8px 12px}.budget-grid tbody tr.line.selected td{background:var(--ochre-soft)}.budget-grid tbody tr.line.selected td:first-child{box-shadow:inset 2px 0 0 var(--ochre)}.budget-grid tbody tr.line.closed td{color:var(--text-3);text-decoration:line-through}.budget-grid .code-cell{color:var(--text-3)}.budget-grid tr.selected .code-cell{color:#92621e}.budget-grid tr.band{cursor:pointer;-webkit-user-select:none;user-select:none}.budget-grid tr.band td{background:#f1f3f7;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2);padding:6px 12px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.budget-grid tr.band:hover td{background:#eaedf3}.budget-grid tr.band .band-caret{display:inline-block;width:14px;color:var(--text-3);font-size:10px}.budget-grid tr.band .band-count{margin-left:8px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-3)}.budget-grid tr.band .band-sum{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:0;color:var(--text-3)}.budget-grid td.cell-locked{position:relative}.budget-grid td.cell-locked .lock-glyph{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:inline-flex;color:var(--text-3);opacity:0;transition:opacity .1s}.budget-grid td.cell-locked:hover .lock-glyph{opacity:1}.budget-grid td.cell-locked:hover{background:var(--bg);color:var(--text-2)}.budget-grid td.cell-editable{cursor:text}.budget-grid td.cell-editable:hover{box-shadow:inset 0 0 0 1px var(--border-strong)}.budget-grid td.editing{padding:0!important}.budget-grid td.pending{color:var(--text-3)}.cell-input{width:100%;height:100%;box-sizing:border-box;padding:8px 12px;margin:0;border:0;outline:none;box-shadow:inset 0 0 0 2px var(--accent);background:#fff;color:var(--text);font-size:12.5px;text-align:right}.budget-grid tfoot tr.total td{position:sticky;bottom:0;z-index:2;background:var(--bg);font-weight:600;padding:9px 12px;border-top:1px solid var(--border-strong);border-bottom:0;font-size:13px}.budget-grid tfoot tr.total td.r{font-family:var(--mono);font-variant-numeric:tabular-nums}.grid tfoot td.r{text-align:right}.timeline{list-style:none;margin:0;padding:12px 18px 20px}.tl-item{display:grid;grid-template-columns:128px 14px minmax(0,1fr);column-gap:10px;align-items:start;position:relative;padding:0 0 16px}.tl-item:before{content:"";position:absolute;left:144px;top:14px;bottom:-2px;width:1px;background:var(--border)}.tl-item:last-child:before{display:none}.tl-time{font-size:11px;color:var(--text-3);padding-top:3px;text-align:right}.tl-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);margin-top:5px;margin-left:2px;position:relative;z-index:1}.tl-body{min-width:0;font-size:12px}.tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tl-actor{color:var(--text);font-weight:500}.tl-change{display:flex;align-items:baseline;gap:8px;margin-top:6px}.tl-field{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);width:84px;flex-shrink:0}.tl-val{color:var(--text-2)}.tl-val.strong{color:var(--text)}.tl-arrow{color:var(--text-3)}.tl-note{margin-top:5px;color:var(--text-2)}.tl-reason{margin-top:4px;color:var(--text-2)}.app-wb-wrap{position:relative;display:flex}.app-wb .tag.pool{margin-left:2px;padding:2px 4px 1px;font-size:8.5px}.wb-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:60;min-width:360px;max-height:70vh;overflow:auto;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);box-shadow:0 10px 24px #0c111d2e;padding:6px 0}.wb-empty{padding:10px 14px;color:var(--text-3)}.wb-client{padding:4px 0 6px}.wb-client+.wb-client{border-top:1px solid var(--border)}.wb-client-name{padding:4px 14px 2px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.wb-prog-name{padding:4px 14px 2px 20px;font-size:11px;font-weight:600;color:var(--text-2)}.wb-item{display:flex;align-items:center;gap:8px;width:100%;padding:5px 14px 5px 26px;font-size:12px;white-space:nowrap}.wb-item:hover{background:var(--accent-soft)}.wb-item.active{background:var(--ochre-soft)}.wb-item.active .wb-item-name{font-weight:600}.wb-item-code{font-size:11px;color:var(--text-3);width:84px;flex-shrink:0}.wb-item-name{flex:1;overflow:hidden;text-overflow:ellipsis}.wb-item-meta{color:var(--text-3);font-size:11px}.status-msg{font-weight:500;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto;min-width:0}.status-ctx{flex:0 4 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.status-msg.error{color:var(--red)}.status-msg.ok{color:#0b7a4f}.status-msg.info{color:var(--accent)}
